运维系列:linux下rpm查询软件包依赖和被依赖关系




linux下rpm查询软件包依赖和被依赖关系

通常我们在Linux下利用rpm做软件包的管理,一般删除软件包需要慎重,因为如果你一不小心把一些底层库依赖的软件包,那对你系统将是大伤害,甚至导致你系统的不可用,比如glibcupdate或者删除。

在这里插入图片描述

如上就是一个活生生例子啊。

1. 查询软件包依赖哪些软件

这里演示的案例是postfix软件包

1.1 rpm方式

[root@nock ~]# rpm -qa postfix   # 查看对应的rpm包
postfix-2.10.1-6.el7.x86_64
[root@nock ~]# rpm -qR postfix   # R参数的意思就是requires就是依赖哪些软件包
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/usr/sbin/alternatives
/usr/sbin/alternatives
/usr/sbin/groupadd
/usr/sbin/useradd
config(postfix) = 2:2.10.1-6.el7
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1)(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libdb-5.3.so()(64bit)
liblber-2.4.so.2()(64bit)
libldap-2.4.so.2()(64bit)
libm.so.6()(64bit)
libmysqlclient.so.18()(64bit)
libmysqlclient.so.18(libmysqlclient_18)(64bit)
libnsl.so.1()(64bit)
libnsl.so.1(GLIBC_2.2.5)(64bit)
libpcre.so.1()(64bit)
libresolv.so.2()(64bit)
libresolv.so.2(GLIBC_2.2.5)(64bit)
libsasl2.so.3()(64bit)
libssl.so.10()(64bit)
libssl.so.10(libssl.so.10)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
systemd
systemd
systemd
systemd-sysv
rpmlib(PayloadIsXz) <= 5.2-1

以上查询出来的就是依赖的软件包

1.2 yum方式

[root@nock ~]# yum deplist postfix
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包:postfix.x86_64 2:2.10.1-7.el7
   依赖:/bin/bash                          # 依赖的库或者程序
   provider: bash.x86_64 4.2.46-33.el7     # 这个库是通过哪个rpm包安装的
   依赖:/bin/sh
   provider: bash.x86_64 4.2.46-33.el7
   依赖:/usr/sbin/alternatives
   provider: chkconfig.x86_64 1.7.4-1.el7
   依赖:/usr/sbin/groupadd
   provider: shadow-utils.x86_64 2:4.6-5.el7
   依赖:/usr/sbin/useradd
   provider: shadow-utils.x86_64 2:4.6-5.el7
   依赖:libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc.x86_64 2.17-292.el7
   依赖:libcrypto.so.10()(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-19.el7
   依赖:libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-19.el7
   依赖:libcrypto.so.10(OPENSSL_1.0.2)(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-19.el7
   依赖:libcrypto.so.10(libcrypto.so.10)(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-19.el7
   依赖:libdb-5.3.so()(64bit)
   provider: libdb.x86_64 5.3.21-25.el7
   依赖:liblber-2.4.so.2()(64bit)
   provider: openldap.x86_64 2.4.44-21.el7_6
   依赖:libldap-2.4.so.2()(64bit)
   provider: openldap.x86_64 2.4.44-21.el7_6
   依赖:libm.so.6()(64bit)
   provider: glibc.x86_64 2.17-292.el7
   依赖:libmysqlclient.so.18()(64bit)
   provider: mariadb-libs.x86_64 1:5.5.64-1.el7
   依赖:libmysqlclient.so.18(libmysqlclient_18)(64bit)
   provider: mariadb-libs.x86_64 1:5.5.64-1.el7
   依赖:libnsl.so.1()(64bit)
   provider: glibc.x86_64 2.17-292.el7
   依赖:libnsl.so.1(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-292.el7
   依赖:libpcre.so.1()(64bit)
   provider: pcre.x86_64 8.32-17.el7
   依赖:libresolv.so.2()(64bit)
   provider: glibc.x86_64 2.17-292.el7
   依赖:libresolv.so.2(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-292.el7
   依赖:libsasl2.so.3()(64bit)
   provider: cyrus-sasl-lib.x86_64 2.1.26-23.el7
   依赖:libssl.so.10()(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-19.el7
   依赖:libssl.so.10(libssl.so.10)(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-19.el7
   依赖:rtld(GNU_HASH)
   provider: glibc.x86_64 2.17-292.el7
   provider: glibc.i686 2.17-292.el7
   依赖:systemd
   provider: systemd.x86_64 219-67.el7_7.2
   依赖:systemd-sysv
   provider: systemd-sysv.x86_64 219-67.el7_7.2

2. 查询软件包被哪个软件包依赖

我这里以rpcbind为例

[root@nock ~]# rpm -q rpcbind         # 查看这个软件是否安装
rpcbind-0.2.0-44.el7.x86_64
[root@nock ~]# rpm -e --test rpcbind  # 通过--test进行测试删除,查看是否有依赖关系,如果有会阻止删除
错误:依赖检测失败:
    rpcbind 被 (已安裝) quota-1:4.01-17.el7.x86_64 需要

如上可以看出rpcbind会被quota软件包所依赖,下面我们测试一个没有依赖的。

[root@nock ~]# rpm -e --test postfix  # 测试删除postfix没有报错,也就是没有别的地方依赖它,可以进行删除
[root@nock ~]# rpm -q postfix   # 上面的--test并没有真正删除
postfix-2.10.1-6.el7.x86_64
[root@nock ~]# rpm -e postfix   # 不带--test参数,进行真正的删除.
[root@nock ~]# rpm -q postfix   # 再次查询已经查询不到postfix软件包了
未安装软件包 postfix

到这里RPM的软件包依赖和被依赖就介绍到这里了,希望你有所收获。







后场技术

linux下rpm查询软件包依赖和被依赖关系

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值