如何在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包来自基础存储库。