[Linux] CentOS查看RPM包依赖问题

[Linux] CentOS查看RPM包依赖问题

经典应用案例

查看此文前,可先查看 此博文中:在安装软件过程中,如何解决的依赖组件问题?

[数据库/Linux]CentOS7安装MySQL Percona版(RPM方式) : 2-1 依赖组件问题 - 博客园/千千寰宇

rpm 和 yum命令的全部完整解析:

rpm --help

yum --help

0 搜索 软件包

yum -C search "关键词"

[root@node116 repo]# yum -C search "curl"

Loaded plugins: fastestmirror, langpacks

Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast

================================================================================== N/S matched: curl ===================================================================================

libcurl-devel.x86_64 : Files needed for building applications with libcurl

python-pycurl.x86_64 : A Python interface to libcurl

curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)

libcurl.x86_64 : A library for getting files from web servers

Name and summary matches only, use "search all" for everything.

1 查看包依赖

1-1 思路1: 服务器 查看RPM包依赖

-q : query / 查看对应的rpm包

-R: require / 依赖哪些软件包

【0# YUM方式】

deplist := dependency list

yum deplist <软件包名> := 显示软件包的依赖信息

[root@govern ~]# yum deplist curl

已加载插件:fastestmirror

查找依赖:

Loading mirror speeds from cached hostfile

* c6-media:

软件包:curl.x86_64 7.19.7-52.el6

依赖: libssh2.so.1()(64bit)

provider: libssh2.x86_64 1.4.2-2.el6_7.1

依赖: libz.so.1()(64bit)

provider: zlib.x86_64 1.2.3-29.el6

依赖: libkrb5.so.3()(64bit)

provider: krb5-libs.x86_64 1.10.3-57.el6

依赖: libldap-2.4.so.2()(64bit)

provider: openldap.x86_64 2.4.40-12.el6

依赖: libpthread.so.0()(64bit)

provider: glibc.x86_64 2.12-1.192.el6

依赖: libgssapi_krb5.so.2()(64bit)

provider: krb5-libs.x86_64 1.10.3-57.el6

依赖: libpthread.so.0(GLIBC_2.2.5)(64bit)

provider: glibc.x86_64 2.12-1.192.el6

依赖: libcurl.so.4()(64bit)

provider: libcurl.x86_64 7.19.7-52.el6

依赖: libnssutil3.so()(64bit)

provider: nss-util.x86_64 3.21.0-2.el6

依赖: libk5crypto.so.3()(64bit)

provider: krb5-libs.x86_64 1.10.3-57.el6

依赖: libplc4.so()(64bit)

provider: nspr.x86_64 4.11.0-1.el6

依赖: librt.so.1(GLIBC_2.2.5)(64bit)

provider: glibc.x86_64 2.12-1.192.el6

依赖: libplds4.so()(64bit)

provider: nspr.x86_64 4.11.0-1.el6

依赖: libdl.so.2()(64bit)

provider: glibc.x86_64 2.12-1.192.el6

依赖: libnss3.so()(64bit)

provider: nss.x86_64 3.21.0-8.el6

依赖: libc.so.6(GLIBC_2.7)(64bit)

provider: glibc.x86_64 2.12-1.192.el6

依赖: libcom_err.so.2()(64bit)

provider: libcom_err.x86_64 1.41.12-22.el6

依赖: librt.so.1()(64bit)

provider: glibc.x86_64 2.12-1.192.el6

依赖: libssl3.so()(64bit)

provider: nss.x86_64 3.21.0-8.el6

依赖: libsmime3.so()(64bit)

provider: nss.x86_64 3.21.0-8.el6

依赖: libnspr4.so()(64bit)

provider: nspr.x86_64 4.11.0-1.el6

依赖: libidn.so.11()(64bit)

provider: libidn.x86_64 1.18-2.el6

依赖: rtld(GNU_HASH)

provider: glibc.i686 2.12-1.192.el6

provider: glibc.x86_64 2.12-1.192.el6

依赖: libcurl = 7.19.7-52.el6

provider: libcurl.x86_64 7.19.7-52.el6

provider: libcurl.i686 7.19.7-52.el6

【1# RPM方式 - 未被安装时】

rpm -qpR <软件包名>

【#2 RPM方式 - 已被安装时】

[root@govern ~]# rpm -qR curl

libc.so.6()(64bit)

libc.so.6(GLIBC_2.2.5)(64bit)

libc.so.6(GLIBC_2.3)(64bit)

libc.so.6(GLIBC_2.4)(64bit)

libc.so.6(GLIBC_2.7)(64bit)

libcom_err.so.2()(64bit)

libcurl = 7.19.7-52.el6

libcurl.so.4()(64bit)

libdl.so.2()(64bit)

libgssapi_krb5.so.2()(64bit)

libidn.so.11()(64bit)

libk5crypto.so.3()(64bit)

libkrb5.so.3()(64bit)

libldap-2.4.so.2()(64bit)

libnspr4.so()(64bit)

libnss3.so()(64bit)

libnssutil3.so()(64bit)

libplc4.so()(64bit)

libplds4.so()(64bit)

libpthread.so.0()(64bit)

libpthread.so.0(GLIBC_2.2.5)(64bit)

librt.so.1()(64bit)

librt.so.1(GLIBC_2.2.5)(64bit)

libsmime3.so()(64bit)

libssh2.so.1()(64bit)

libssl3.so()(64bit)

libz.so.1()(64bit)

rpmlib(CompressedFileNames) <= 3.0.4-1

rpmlib(FileDigests) <= 4.6.0-1

rpmlib(PayloadFilesHavePrefix) <= 4.0-1

rtld(GNU_HASH)

rpmlib(PayloadIsXz) <= 5.2-1

1-2 第三方网站 查看RPM包/库的第三方网站的包依赖分析报告

通过查询下列安装资源网站来【查询/下载/安装】包的依赖关系:

https://pkgs.org/

http://www.rpmfind.net/linux/rpm2html/search.php

通过yum install --downloadonly --downloaddir=[download_dir] [package]来只下载包不安装包

运行 yum list [package] --showduplicates 来查看包的多个版本

安装.rpm 包时,检测包依赖

如果缺少依赖,报错信息中会打印出缺少的依赖:

rpm -ivh [package]

yum localinstall *.rpm

2 指定组件 是否被其它依赖?

通过rpm -e --test <软件包名>进行测试删除,查看是否有依赖关系

如果有,会阻止删除

[root@sdc70 ~]# rpm -e --test curl

error: Failed dependencies:

curl is needed by (installed) rpm-4.8.0-55.el6.x86_64

3 补充: rpm -q / yum info

rpm -q 软件包名

[root@govern ~]# rpm -q libcurl

libcurl-7.19.7-52.el6.x86_64

[root@govern ~]# rpm -qa libcurl

libcurl-7.19.7-52.el6.x86_64

[↓推荐使用↓]

[root@govern ~]# rpm -qa | grep -i Percona

Percona-Server-shared-57-5.7.24-27.1.el6.x86_64

Percona-Server-server-57-5.7.24-27.1.el6.x86_64

Percona-Server-client-57-5.7.24-27.1.el6.x86_64

注: grep -i : 查找时 忽略大小写的不同

yum info 软件包名

[root@govern ~]# yum info libcurl

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

* c6-media:

file:///media/CentOS/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/CentOS/repodata/repomd.xml

尝试其他镜像。

file:///media/cdrecorder/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrecorder/repodata/repomd.xml

尝试其他镜像。

c6-media | 4.0 kB 00:00 ...

已安装的软件包

Name : libcurl

Arch : x86_64

Version : 7.19.7

Release : 52.el6

Size : 339 k

Repo : installed

From repo : anaconda-CentOS-201605220104.x86_64

Summary : A library for getting files from web servers

URL : http://curl.haxx.se/

License : MIT

Description : This package provides a way for applications to use FTP, HTTP, Gopher and

: other servers for getting files.

可安装的软件包

Name : libcurl

Arch : i686

Version : 7.19.7

Release : 52.el6

Size : 176 k

Repo : c6-media

Summary : A library for getting files from web servers

URL : http://curl.haxx.se/

License : MIT

Description : This package provides a way for applications to use FTP, HTTP, Gopher and

: other servers for getting files.

" 那有没有办法,按需获取rpm包的各项信息呢? "

rpm -q --queryformat [QUERYFMT]

[root@govern ~]# rpm -q --qf '%{name}-%{version}-%{release}--%{arch}-%{DEPENDSDICT}\n' libcurl

libcurl-7.19.7-52.el6--x86_64-1375731722

其中,【QUERYFMT】 是一系列rpm的查询标志,可以通过以下命令查询有哪些标志可以使用:

[root@govern ~]# rpm --querytags

ARCH

ARCHIVESIZE

BASENAMES

BUGURL

BUILDARCHS

BUILDHOST

BUILDTIME

C

CAPABILITY

CHANGELOGNAME

CHANGELOGTEXT

CHANGELOGTIME

CLASSDICT

CONFLICTFLAGS

CONFLICTNAME

CONFLICTS

CONFLICTVERSION

COOKIE

DBINSTANCE

DEPENDSDICT

DESCRIPTION

DIRINDEXES

DIRNAMES

DISTRIBUTION

DISTTAG

DISTURL

DSAHEADER

...

rpm -qi <软件包名>

-q - query

-i - information - 选项表示查询软件信息(版本 / 安装时间 / ...)

[root@govern ~]# rpm -qi /root/centos6_mysql5.7.24_install/percona/Percona-Server-server-57-5.7.24-27.1.el6.x86_64.rpm

package /root/centos6_mysql5.7.24_install/percona/Percona-Server-server-57-5.7.24-27.1.el6.x86_64.rpm is not installed

[root@govern ~]# rpm -qi libcurl

Name : libcurl Relocations: (not relocatable)

Version : 7.19.7 Vendor: CentOS

Release : 52.el6 Build Date: 2016年05月11日 星期三 05时45分10秒

Install Date: 2019年12月04日 星期三 22时40分24秒 Build Host: worker1.bsys.centos.org

Group : Development/Libraries Source RPM: curl-7.19.7-52.el6.src.rpm

Size : 347536 License: MIT

Signature : RSA/SHA1, 2016年05月12日 星期四 18时48分11秒, Key ID 0946fca2c105b9de

Packager : CentOS BuildSystem

URL : http://curl.haxx.se/

Summary : A library for getting files from web servers

Description :

This package provides a way for applications to use FTP, HTTP, Gopher and

other servers for getting files.

注: Signature - 制作RPM的时候加入数字签名

X 参考文献

查看.rpm 包依赖 - CSDN

查看已经安装的RPM包 - CSDN

rpm查询命令的结果有两个相同版本rpm包 - CSDN

[Linux]常用命令之【vi/grep/find/head/tail】 - 博客园/千千寰宇

Linux rpm命令查询软件包(-q、-qa、-i、-p、-l、-f、-R) - biancheng.net

yum命令全集详解 - 博客园

linux环境中,如何查看某个软件包,都依赖哪些软件包?被哪些软件包依赖? - 博客园

相关文章

金钱兜怎么修剪?金钱兜的修剪方法
365bet备用投注网址

金钱兜怎么修剪?金钱兜的修剪方法

📅 08-16 👁️ 5045
手机视频黑屏解决方法:从原因到实操指导
梅西赛后采访:每场比赛都是决赛 我们决不能犯错