[Linux] CentOS查看RPM包依赖问题
<h1 id="序">序</h1><h2 id="经典应用案例">经典应用案例</h2>
<p>查看此文前,可先查看 此博文中:在安装软件过程中,如何解决的依赖组件问题?<br>
[数据库/Linux]CentOS7安装MySQL Percona版(RPM方式) : 2-1 依赖组件问题 - 博客园/千千寰宇</p>
<p><code>rpm</code> 和 <code>yum</code>命令的全部完整解析:</p>
<pre><code class="language-shell">rpm --help
yum --help
</code></pre>
<h1 id="0-搜索-软件包">0 搜索 软件包</h1>
<pre><code class="language-shell">yum -C search "关键词"
# 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.
</code></pre>
<center>
<img src="https://img2020.cnblogs.com/blog/1173617/202107/1173617-20210713123810033-1180237830.png">
</center>
<h1 id="1-查看包依赖">1 查看包依赖</h1>
<h2 id="1-1-思路1-服务器-查看rpm包依赖">1-1 思路1: 服务器 查看RPM包依赖</h2>
<p>-q : query / 查看对应的rpm包<br>
-R: require / 依赖哪些软件包</p>
<h3 id="0-yum方式">【0# YUM方式】</h3>
<p>deplist := dependency list<br>
yum deplist <软件包名> := 显示软件包的依赖信息</p>
<pre><code class="language-shell"># 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
</code></pre>
<h3 id="1-rpm方式---未被安装时">【1# RPM方式 - 未被安装时】</h3>
<pre><code class="language-shell">rpm -qpR <软件包名>
</code></pre>
<h3 id="2-rpm方式---已被安装时">【#2 RPM方式 - 已被安装时】</h3>
<pre><code class="language-shell"># 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
</code></pre>
<h2 id="1-2-第三方网站-查看rpm包库的第三方网站的包依赖分析报告">1-2 第三方网站 查看RPM包/库的第三方网站的包依赖分析报告</h2>
<p>通过查询下列安装资源网站来【查询/下载/安装】包的依赖关系:</p>
<ul>
<li>https://pkgs.org/</li>
<li>http://www.rpmfind.net/linux/rpm2html/search.php</li>
</ul>
<center>
<img src="https://img2020.cnblogs.com/blog/1173617/202010/1173617-20201021172538143-987835249.png">
</center>
<center>
<img src="https://img2020.cnblogs.com/blog/1173617/202010/1173617-20201021172455448-1645269802.png">
</center>
<center>
<img src="https://img2020.cnblogs.com/blog/1173617/202010/1173617-20201021173300636-2082871020.png">
<img src="https://img2020.cnblogs.com/blog/1173617/202010/1173617-20201021173503826-603301915.png">
</center>
<ul>
<li>
<p>通过<code>yum install --downloadonly --downloaddir= </code>来只下载包不安装包</p>
</li>
<li>
<p>运行 <code>yum list --showduplicates </code> 来查看包的多个版本</p>
</li>
<li>
<p>安装.rpm 包时,检测包依赖<br>
如果缺少依赖,报错信息中会打印出缺少的依赖:</p>
</li>
</ul>
<pre><code class="language-shell">rpm -ivh
</code></pre>
<p>或</p>
<pre><code class="language-shell">yum localinstall *.rpm
</code></pre>
<h1 id="2-指定组件-是否被其它依赖">2 指定组件 是否被其它依赖?</h1>
<p>通过<code>rpm -e --test <软件包名></code>进行测试删除,查看是否有依赖关系<br>
如果有,会阻止删除</p>
<pre><code class="language-shell"># rpm -e --test curl
error: Failed dependencies:
curl is needed by (installed) rpm-4.8.0-55.el6.x86_64
</code></pre>
<h1 id="3-补充-rpm--q--yum-info">3 补充: <code>rpm -q</code> / <code>yum info</code></h1>
<ul>
<li><code>rpm -q 软件包名</code></li>
</ul>
<pre><code class="language-shell"># rpm -q libcurl
libcurl-7.19.7-52.el6.x86_64
# rpm -qa libcurl
libcurl-7.19.7-52.el6.x86_64
[↓推荐使用↓]
# 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
</code></pre>
<p>注: grep -i : 查找时 忽略大小写的不同</p>
<ul>
<li><code>yum info 软件包名</code></li>
</ul>
<pre><code class="language-shell"># yum info libcurl
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* c6-media:
file:///media/CentOS/repodata/repomd.xml: Could not open/read file:///media/CentOS/repodata/repomd.xml
尝试其他镜像。
file:///media/cdrecorder/repodata/repomd.xml: 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.
</code></pre>
<blockquote>
<p>" 那有没有办法,按需获取rpm包的各项信息呢? "</p>
</blockquote>
<ul>
<li><code>rpm -q --queryformat </code></li>
</ul>
<pre><code class="language-shell"># rpm -q --qf '%{name}-%{version}-%{release}--%{arch}-%{DEPENDSDICT}\n' libcurl
libcurl-7.19.7-52.el6--x86_64-1375731722
</code></pre>
<p>其中,【QUERYFMT】 是一系列rpm的查询标志,可以通过以下命令查询有哪些标志可以使用:</p>
<pre><code class="language-shell"># 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
...
</code></pre>
<ul>
<li><code>rpm -qi <软件包名></code><br>
-q - query<br>
-i - information - 选项表示查询软件信息(版本 / 安装时间 / ...)</li>
</ul>
<pre><code class="language-shell"># 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
# 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 <http://bugs.centos.org>
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.
</code></pre>
<p>注: Signature - 制作RPM的时候加入数字签名</p>
<h1 id="x-参考文献">X 参考文献</h1>
<ul>
<li>查看.rpm 包依赖 - CSDN</li>
<li>查看已经安装的RPM包 - CSDN</li>
<li>rpm查询命令的结果有两个相同版本rpm包 - CSDN</li>
<li>常用命令之【vi/grep/find/head/tail】 - 博客园/千千寰宇</li>
<li>Linux rpm命令查询软件包(-q、-qa、-i、-p、-l、-f、-R) - biancheng.net</li>
<li>yum命令全集详解 - 博客园</li>
<li>linux环境中,如何查看某个软件包,都依赖哪些软件包?被哪些软件包依赖? - 博客园</li>
</ul>
</div>
<div id="MySignature" role="contentinfo">
<div class="essaySuffix-box">
<div class="essaySuffix-box-left" style=" margin: 6px auto; ">
<img src="https://blog-static.cnblogs.com/files/johnnyzen/cnblogs-qq-group-qrcode.gif?t=1679679148" alt="QQ沟通交流群" onload="changeImg(this,200,100)">
</div>
<div class="essaySuffix-box-right">
<span class="essaySuffix-right-title">本文作者</span>:
<strong><span>千千寰宇</span></strong>
<br>
<span style="font-weight: bold; white-space:nowrap;">本文链接</span>:
https://www.cnblogs.com/johnnyzen
<br>
<span class="essaySuffix-right-title">关于博文</span>:评论和私信会在第一时间回复,或直接私信我。
<br>
<span class="essaySuffix-right-title">版权声明</span>:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!<br>
<span class="essaySuffix-right-title">日常交流</span>:大数据与软件开发-QQ交流群: 774386015<strong>
<span style="color: #ff0000; font-size: 12pt;">【入群二维码】</span></strong>参见左下角。您的支持、鼓励<span style="color: #ff0000; font-size: 12pt;"></span>是博主技术写作的重要动力!
<br>
</div>
<div style="clear: both;">
</div>
</div><br><br>
来源:https://www.cnblogs.com/johnnyzen/p/13824914.html
頁:
[1]