如何在CentOS中找到特定包的依赖关系

时间:2020-03-21 11:44:23  来源:igfitidea点击:

本教程解释了如何找到哪些软件包需要在CentOS,Rhel,Fedora和Scientific Linux中获得某种依赖。
我们可能会问我们为什么需要找到依赖关系。
可能有很多原因。
如果我们是RPM包维护者,则需要了解特定包所需的依赖项。
此外,我们可以在安装众多X包时省略特定包。
例如,我试图安装root的另一天,由epel提供的包集合。
遗憾的是,整个根系系统被分成多个40个包装。
要安装它们,我只是运行了:

# yum install root-*

但问题超出了40个包中,一个特定包需要Texlive作为依赖项,它会消耗大约3 GB的磁盘空间。
所以,我只是想知道哪个包需要攻击作为依赖性,所以我可以简单地省略它们以节省磁盘空间。
现在,我们得到了答案,为什么我们需要找出特定包的依赖关系。
让我们看看如何用一些简单的例子来做。

查找resh,Centos,Fedora中的特定包的依赖关系

要查找任何包的依赖关系,可以使用以下命令。

# yum deplist <package name>

例如,要查找SQLite的依赖项,请运行:

# yum deplist sqlite

示例输出:

Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: ftp.riken.jp
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
package: sqlite.i686 3.7.17-8.el7
 dependency: /sbin/ldconfig
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libc.so.6(GLIBC_2.4)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libdl.so.2
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libdl.so.2(GLIBC_2.0)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libdl.so.2(GLIBC_2.1)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libncurses.so.5
 provider: ncurses-libs.i686 5.9-13.20130511.el7
 dependency: libpthread.so.0
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.0)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.1)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.2)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libreadline.so.6
 provider: readline.i686 6.2-9.el7
 dependency: libtinfo.so.5
 provider: ncurses-libs.i686 5.9-13.20130511.el7
 dependency: rtld(GNU_HASH)
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6
package: sqlite.x86_64 3.7.17-8.el7
 dependency: /sbin/ldconfig
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libc.so.6(GLIBC_2.14)(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libdl.so.2()(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libdl.so.2(GLIBC_2.2.5)(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libncurses.so.5()(64bit)
 provider: ncurses-libs.x86_64 5.9-13.20130511.el7
 dependency: libpthread.so.0()(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libreadline.so.6()(64bit)
 provider: readline.x86_64 6.2-9.el7
 dependency: libtinfo.so.5()(64bit)
 provider: ncurses-libs.x86_64 5.9-13.20130511.el7
 dependency: rtld(GNU_HASH)
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6

如上所述,SQLLITE需要许多依赖项,如Glibc,LibreaDline,NCurses等。

如果上面的命令无任何机会不起作用,则可以使用repoquery命令:

要使用此命令,我们需要安装yum-utils包。

运行以下命令以安装它。

# sudo yum install yum-utils

或者,

# sudo dnf install yum-utils

然后,列出包的依赖关系,如下所示。

# repoquery --requires --resolve <package>

例子:

# repoquery --requires --resolve sqlite

示例输出:

glibc-0:2.17-157.el7.i686
readline-0:6.2-9.el7.i686
ncurses-libs-0:5.9-13.20130511.el7.i686
glibc-0:2.17-157.el7_3.1.x86_64

此命令将在系统中安装或者不工作包。

如果我们想知道特定软件包来自其中:刚刚运行:

# yum provides sqlite

示例输出:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: kodeterbuka.beritagar.id
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
sqlite-3.7.17-8.el7.i686 : Library that implements an embeddable SQL database
 : engine
Repo : base
sqlite-3.7.17-8.el7.x86_64 : Library that implements an embeddable SQL database
 : engine
Repo : base
sqlite-3.7.17-8.el7.x86_64 : Library that implements an embeddable SQL database
 : engine
Repo : @base

如上所述,SQLite包来自基础存储库。