linux下rpm查询软件包依赖和被依赖关系
时间:2022-07-24
本文章向大家介绍linux下rpm查询软件包依赖和被依赖关系,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
通常我们在Linux下利用rpm做软件包的管理,一般删除软件包需要慎重,因为如果你一不小心把一些底层库依赖的软件包,那对你系统将是大伤害,甚至导致你系统的不可用,比如glibc被update或者删除。
如上就是一个活生生例子啊。
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的软件包依赖和被依赖就介绍到这里了,希望你有所收获。
- hihoCoder #1015 : KMP算法【KMP裸题,板子】
- 对X86汇编的理解与入门
- BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
- HDU 2289 Cup【高精度,二分】
- BZOJ 1083: [SCOI2005]繁忙的都市【Kruscal最小生成树裸题】
- [快学Python3]二分查找[策略优化版本]
- 微服务与SOA架构(4)
- 移动测试Appium之API手册
- BZOJ 1088: [SCOI2005]扫雷Mine【思维题,神奇的模拟+枚举】
- 浅谈关于特征选择算法与Relief的实现
- HDU 5752 Sqrt Bo【枚举,大水题】
- 移动测试 Appium源码初探
- UESTC 1599 wtmsb【优先队列+排序】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++ 万字长文第一篇---拿下字节面试
- 家国梦自动收取金币、货物、升级建筑、拆相册等脚本
- matplotlib 设置移动边框
- 发布你的第一个nodejs c++插件
- nodejs多线程的探索和实践
- 3分钟短文 | Laravel 检验关联模型是否存在的2个必知必会方法
- python读取ini配置的类封装
- ESP32蓝牙的Gatt Client的例子演练
- 3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?
- 3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?
- 纯JavaScript实现的MQTT智能门锁
- 3分钟短文 | Laravel 灵活地获取当前请求的路由地址
- 云原生安全 | docker容器逃逸
- 字节数组X中存放着 0~F共16个十六进制数,请将这些数以十六进制形式显示在屏幕上。
- ubuntu 16安装asp.net