zoukankan      html  css  js  c++  java
  • [Linux]CentOS查看RPM包依赖问题

    【经典应用案例】
    查看此文前,可先查看 此博文中:在安装软件过程中,如何解决的依赖组件问题?
    [数据库/Linux]CentOS7安装MySQL Percona版(RPM方式) : 2-1 依赖组件问题 - 博客园/千千寰宇

    rpmyum命令的全部完整解析:

    rpm --help
    
    yum --help
    

    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包/库的第三方网站的包依赖分析报告

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

    • 通过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}
    ' 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 <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.
    

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

    X 参考文献

  • 相关阅读:
    IOS多态在项目中的应用
    经济博弈题-逻辑思维-算法-海盗分金币
    iOS weak底层实现原理
    Two Sum
    HTTP与HTTPS的理解
    iOS 加锁的方式
    PHP 打印前一天的时间
    PHP 遍历文件夹下的文件以及子文件夹
    PHP 获取url里文件的扩展名
    vi 编辑器基本命令
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/13824914.html
Copyright © 2011-2022 走看看