• 每天一个Linux命令(57)rpm命令


        rpm是一个功能十分强大的软件包管理系统。

        (1)用法:

        用法:  rpm  [参数]  [包名]

        (2)功能:

        功能:  使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。

        (3)选项参数:     

          1) -l                显示套件的文件列表            

          2) -h (or --hash)           安装时输出hash记号 ("#''),用来显示安装进度

          3) -i                显示套件的相关信息
          4) -U<套件档> 
    --upgrade<套件档>  升级指定的套件档

          5) -p<套件档>             查询指定的RPM套件档

          6) -q                 查看软件包是否被安装

          7) -v                显示指令执行过程

          8) -a                查询所有套件

          9) -R                显示套件的关联性信息

        (4)实例:

        1)[root@localhost sunmeng]rpm -q mariadb-5.5.47-1.el7_2.x86_64      查询指定软件包是否被安装

    [root@localhost sunmeng]rpm -q mariadb-5.5.47-1.el7_2.x86_64
    mariadb-5.5.47-1.el7_2.x86_64
    [root@localhost sunmeng]# rpm -q httpd
    未安装软件包 httpd

        2)[root@localhost packages]# rpm -qa | grep httpd               查询所有套件中已经安装的软件包(与httpd有关的软件包)

    [root@localhost packages]# rpm -qa | grep httpd
    httpd-2.4.6-40.el7.centos.1.x86_64
    httpd-tools-2.4.6-40.el7.centos.1.x86_64
    [root@localhost packages]# yum search httpd-2.4.6-40.el7.centos.1.x86_64             //在网络软件库并没有这个包
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    警告:没有匹配 httpd-2.4.6-40.el7.centos.1.x86_64 的软件包
    No matches found
    [root@localhost packages]# yum info httpd-2.4.6-40.el7.centos.1.x86_64        //但本地确实已经安装了这个软件包:系统自带
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    已安装的软件包
    名称    :httpd
    架构    :x86_64
    版本    :2.4.6
    发布    :40.el7.centos.1
    大小    :9.4 M
    源    :installed
    来自源:updates
    简介    : Apache HTTP Server
    网址    :http://httpd.apache.org/
    协议    : ASL 2.0
    描述    : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.
    
    [root@localhost packages]# yum info httpd-tools-2.4.6-40.el7.centos.1.x86_64
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    已安装的软件包
    名称    :httpd-tools
    架构    :x86_64
    版本    :2.4.6
    发布    :40.el7.centos.1
    大小    :168 k
    源    :installed
    来自源:updates
    简介    : Tools for use with the Apache HTTP Server
    网址    :http://httpd.apache.org/
    协议    : ASL 2.0
    描述    : The httpd-tools package contains tools which can be used with
             : the Apache HTTP Server.

        3)[root@localhost packages]# rpm -e mariadb-5.5.47-1.el7_2.x86_64        卸载指定的安装过的包

    [root@localhost packages]# yum install mysql              //已经安装过
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    软件包 1:mariadb-5.5.47-1.el7_2.x86_64 已安装并且是最新版本
    无须任何处理
    [root@localhost packages]# rpm -e mariadb-5.5.47-1.el7_2.x86_64   //卸载指定安装包  
    [root@localhost packages]# yum install mysql              //重新下载指定安装包
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 mariadb.x86_64.1.5.5.47-1.el7_2 将被 安装
    --> 解决依赖关系完成
    
    依赖关系解决
    
    ==========================================================================================================================================
     Package                       架构                         版本                                      源                             大小
    ==========================================================================================================================================
    正在安装:
     mariadb                       x86_64                       1:5.5.47-1.el7_2                          updates                       8.9 M
    
    事务概要
    ==========================================================================================================================================
    安装  1 软件包
    
    总下载量:8.9 M
    安装大小:49 M
    Is this ok [y/d/N]: y
    Downloading packages:
    mariadb-5.5.47-1.el7_2.x86_64. FAILED                                          
    http://mirrors.cug.edu.cn/centos/7.2.1511/updates/x86_64/Packages/mariadb-5.5.47-1.el7_2.x86_64.rpm: [Errno 12] Timeout on http://mirrors.cug.edu.cn/centos/7.2.1511/updates/x86_64/Packages/mariadb-5.5.47-1.el7_2.x86_64.rpm: (28, 'Resolving timed out after 30419 milliseconds')
    正在尝试其它镜像。
    mariadb-5.5.47-1.el7_2.x86_64.rpm                                                                                  | 8.9 MB  00:01:35     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    警告:RPM 数据库已被非 yum 程序修改。
      正在安装    : 1:mariadb-5.5.47-1.el7_2.x86_64                                                                                       1/1 
      验证中      : 1:mariadb-5.5.47-1.el7_2.x86_64                                                                                       1/1 
    
    已安装:
      mariadb.x86_64 1:5.5.47-1.el7_2                                                                                                         
    
    完毕!

          4)[root@localhost packages]# rpm -qpR gnome-bluetooth-3.14.1-1.el7.x86_64.rpm     查看指定软件包的依赖关系

    [root@localhost packages]# find -name "gnome-bluetooth-3.14.1-1.el7.x86_64.rpm" -exec ls -l {} ;      //在当前目录下能够找到指定.rpm包
    -rw-r--r--. 1 root root 50740 11月 25 2015 ./gnome-bluetooth-3.14.1-1.el7.x86_64.rpm
    [root@localhost packages]# rpm -qpR gnome-bluetooth-3.14.1-1.el7.x86_64.rpm                   //查看它依赖的文件
    /bin/sh
    /bin/sh
    /bin/sh
    bluez >= 5.0
    desktop-file-utils
    desktop-file-utils
    gnome-bluetooth-libs = 1:3.14.1-1.el7
    libatk-1.0.so.0()(64bit)
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.4)(64bit)
    libcairo-gobject.so.2()(64bit)
    libcairo.so.2()(64bit)
    libgdk-3.so.0()(64bit)
    libgdk_pixbuf-2.0.so.0()(64bit)
    libgio-2.0.so.0()(64bit)
    libglib-2.0.so.0()(64bit)
    libgmodule-2.0.so.0()(64bit)
    libgnome-bluetooth.so.13()(64bit)
    libgobject-2.0.so.0()(64bit)
    libgtk-3.so.0()(64bit)
    libm.so.6()(64bit)
    libpango-1.0.so.0()(64bit)
    libpangocairo-1.0.so.0()(64bit)
    libpthread.so.0()(64bit)
    libudev.so.1()(64bit)
    pulseaudio-module-bluetooth
    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
    [root@localhost packages]# yum deplist gnome-bluetooth-3.14.1-1.el7.x86_64.rpm        //yum命令查询依赖关系
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    软件包:gnome-bluetooth.x86_64 1:3.14.1-1.el7
       依赖:/bin/sh
       provider: bash.x86_64 4.2.46-19.el7
       依赖:bluez >= 5.0
       provider: bluez.x86_64 5.23-4.el7
       依赖:desktop-file-utils
       provider: desktop-file-utils.x86_64 0.22-1.el7
       依赖:gnome-bluetooth-libs = 1:3.14.1-1.el7
       provider: gnome-bluetooth-libs.x86_64 1:3.14.1-1.el7
       provider: gnome-bluetooth-libs.i686 1:3.14.1-1.el7
       依赖:libatk-1.0.so.0()(64bit)
       provider: atk.x86_64 2.14.0-1.el7
       依赖:libc.so.6()(64bit)
       provider: glibc.x86_64 2.17-106.el7_2.6
       依赖:libc.so.6(GLIBC_2.2.5)(64bit)
       provider: glibc.x86_64 2.17-106.el7_2.6
       依赖:libc.so.6(GLIBC_2.4)(64bit)
       provider: glibc.x86_64 2.17-106.el7_2.6
       依赖:libcairo-gobject.so.2()(64bit)
       provider: cairo-gobject.x86_64 1.14.2-1.el7
       依赖:libcairo.so.2()(64bit)
       provider: cairo.x86_64 1.14.2-1.el7
       依赖:libgdk-3.so.0()(64bit)
       provider: gtk3.x86_64 3.14.13-16.el7
       依赖:libgdk_pixbuf-2.0.so.0()(64bit)
       provider: gdk-pixbuf2.x86_64 2.31.6-3.el7
       依赖:libgio-2.0.so.0()(64bit)
       provider: glib2.x86_64 2.42.2-5.el7
       依赖:libglib-2.0.so.0()(64bit)
       provider: glib2.x86_64 2.42.2-5.el7
       依赖:libgmodule-2.0.so.0()(64bit)
       provider: glib2.x86_64 2.42.2-5.el7
       依赖:libgnome-bluetooth.so.13()(64bit)
       provider: gnome-bluetooth-libs.x86_64 1:3.14.1-1.el7
       依赖:libgobject-2.0.so.0()(64bit)
       provider: glib2.x86_64 2.42.2-5.el7
       依赖:libgtk-3.so.0()(64bit)
       provider: gtk3.x86_64 3.14.13-16.el7
       依赖:libm.so.6()(64bit)
       provider: glibc.x86_64 2.17-106.el7_2.6
       依赖:libpango-1.0.so.0()(64bit)
       provider: pango.x86_64 1.36.8-2.el7
       依赖:libpangocairo-1.0.so.0()(64bit)
       provider: pango.x86_64 1.36.8-2.el7
       依赖:libpthread.so.0()(64bit)
       provider: glibc.x86_64 2.17-106.el7_2.6
       依赖:libudev.so.1()(64bit)
       provider: systemd-libs.x86_64 219-19.el7_2.9
       依赖:pulseaudio-module-bluetooth
       provider: pulseaudio-module-bluetooth.x86_64 6.0-7.el7
       依赖:rtld(GNU_HASH)
       provider: glibc.x86_64 2.17-106.el7_2.6
       provider: glibc.i686 2.17-106.el7_2.6

          5)[root@localhost packages]# rpm -Va        校验所有的rpm包,查找丢失的文件

    [root@localhost packages]# rpm -Va
    S.5....T.  c /etc/hba.conf
    ....L....  c /etc/pam.d/fingerprint-auth
    ....L....  c /etc/pam.d/password-auth
    ....L....  c /etc/pam.d/postlogin
    ....L....  c /etc/pam.d/smartcard-auth
    ....L....  c /etc/pam.d/system-auth
    遗漏     /var/run/wpa_supplicant
    遗漏     /var/run/pluto
    S.5....T.  c /etc/plymouth/plymouthd.conf
    S.5....T.  c /etc/login.defs
    S.5....T.  c /etc/libuser.conf
    S.5....T.  c /etc/openldap/ldap.conf
    遗漏     /var/run/gluster
    .M.......  c /etc/cups/subscriptions.conf
    S.5....T.  c /etc/yum/pluginconf.d/langpacks.conf
    .M....G..    /var/log/gdm
    S.5....T.  c /etc/cgrules.conf
    S.5....T.  c /etc/cups/cups-browsed.conf
    .......T.    /lib/modules/3.10.0-229.el7.x86_64/modules.devname
    .......T.    /lib/modules/3.10.0-229.el7.x86_64/modules.softdep
    [root@localhost packages]# which mysql
    /usr/bin/mysql

          6)[root@localhost packages]# rpm -ql mariadb-5.5.47-1.el7_2.x86_64    查看指定软件包的安装的位置

    [root@localhost packages]# yum install mysql
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    软件包 1:mariadb-5.5.47-1.el7_2.x86_64 已安装并且是最新版本
    无须任何处理
    [root@localhost packages]# rpm -ql mariadb-5.5.47-1.el7_2.x86_64
    /etc/my.cnf.d/client.cnf
    /usr/bin/aria_chk
    /usr/bin/aria_dump_log
    /usr/bin/aria_ftdump
    /usr/bin/aria_pack
    /usr/bin/aria_read_log
    /usr/bin/msql2mysql
    /usr/bin/my_print_defaults
    /usr/bin/mysql
    /usr/bin/mysql_find_rows
    /usr/bin/mysql_waitpid
    /usr/bin/mysqlaccess
    /usr/bin/mysqladmin
    /usr/bin/mysqlbinlog
    /usr/bin/mysqlcheck
    /usr/bin/mysqldump
    /usr/bin/mysqlimport
    /usr/bin/mysqlshow
    /usr/bin/mysqlslap
    /usr/share/doc/mariadb-5.5.47
    /usr/share/doc/mariadb-5.5.47/COPYING
    /usr/share/doc/mariadb-5.5.47/COPYING.Google
    /usr/share/doc/mariadb-5.5.47/COPYING.LESSER
    /usr/share/doc/mariadb-5.5.47/COPYING.Percona
    /usr/share/doc/mariadb-5.5.47/README
    /usr/share/doc/mariadb-5.5.47/README.mysql-docs
    /usr/share/doc/mariadb-5.5.47/README.mysql-license
    /usr/share/man/man1/aria_chk.1.gz
    /usr/share/man/man1/aria_dump_log.1.gz
    /usr/share/man/man1/aria_ftdump.1.gz
    /usr/share/man/man1/aria_pack.1.gz
    /usr/share/man/man1/aria_read_log.1.gz
    /usr/share/man/man1/my_print_defaults.1.gz
    /usr/share/man/man1/mysql.1.gz
    /usr/share/man/man1/mysql_find_rows.1.gz
    /usr/share/man/man1/mysql_waitpid.1.gz
    /usr/share/man/man1/mysqlaccess.1.gz
    /usr/share/man/man1/mysqladmin.1.gz
    /usr/share/man/man1/mysqldump.1.gz
    /usr/share/man/man1/mysqlshow.1.gz
    /usr/share/man/man1/mysqlslap.1.gz

          7)[root@localhost packages]# rpm -qi ftp-0.17-66.el7.x86_64       查看指定软件包的信息

    [root@localhost packages]# yum install ftp
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    软件包 ftp-0.17-66.el7.x86_64 已安装并且是最新版本
    无须任何处理
    [root@localhost packages]# rpm -qi ftp-0.17-66.el7.x86_64
    Name        : ftp
    Version     : 0.17
    Release     : 66.el7
    Architecture: x86_64
    Install Date: 2016年06月21日 星期二 11时26分00秒
    Group       : Applications/Internet
    Size        : 98691
    License     : BSD with advertising
    Signature   : RSA/SHA256, 2014年07月03日 星期四 18时25分20秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : ftp-0.17-66.el7.src.rpm
    Build Date  : 2014年06月09日 星期一 13时01分11秒
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    Summary     : The standard UNIX FTP (File Transfer Protocol) client
    Description :
    The ftp package provides the standard UNIX command-line FTP (File
    Transfer Protocol) client.  FTP is a widely used protocol for
    transferring files over the Internet and for archiving files.
    
    If your system is on a network, you should install ftp in order to do
    file transfers.
    [root@localhost packages]# yum info ftp-0.17-66.el7.x86_64
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.cqu.edu.cn
     * extras: mirrors.cqu.edu.cn
     * updates: mirrors.cqu.edu.cn
    已安装的软件包
    名称    :ftp
    架构    :x86_64
    版本    :0.17
    发布    :66.el7
    大小    :96 k
    源    :installed
    来自源:anaconda
    简介    : The standard UNIX FTP (File Transfer Protocol) client
    网址    :ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    协议    : BSD with advertising
    描述    : The ftp package provides the standard UNIX command-line FTP (File
             : Transfer Protocol) client.  FTP is a widely used protocol for
             : transferring files over the Internet and for archiving files.
             : 
             : If your system is on a network, you should install ftp in order to do
             : file transfers.

        8)[root@localhost packages]# rpm -i ftp://ftp.linux.org.uk/pub/linux/Networking/netkit        直接从网址下载(-i参数)

        9)[root@localhost packages]# rpm -i -vv ftp://ftp.linux.org.uk/pub/linux/Networking/netkit      显示指令执行的细节(-vvc参数)

    [root@localhost packages]# rpm -i ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    curl: (78) RETR response: 550
    错误:跳过 ftp://ftp.linux.org.uk/pub/linux/Networking/netkit - 传输失败
    [root@localhost packages]# rpm -i -vv ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    获取ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    curl: (78) RETR response: 550
    错误:跳过 ftp://ftp.linux.org.uk/pub/linux/Networking/netkit - 传输失败
    [root@localhost packages]# rpm -e ftp
    [root@localhost packages]# rpm -i -vv ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    获取ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
    curl: (78) RETR response: 550
    错误:跳过 ftp://ftp.linux.org.uk/pub/linux/Networking/netkit - 传输失败
    [root@localhost packages]# wget ftp://ftp.linux.org.uk/pub/linux/Networking/netkit      //用wget测试是否能下载时,发现也是不行的,说明是网址的问题。
    --2016-06-22 08:23:18--  ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
               => “netkit”
    正在解析主机 ftp.linux.org.uk (ftp.linux.org.uk)... 195.92.253.2, 2002:c35c:fd02::1
    正在连接 ftp.linux.org.uk (ftp.linux.org.uk)|195.92.253.2|:21... 已连接。
    正在以 anonymous 登录 ... 登录成功!
    ==> SYST ... 完成。   ==> PWD ... 完成。
    ==> TYPE I ... 完成。 ==> CWD (1) /pub/linux/Networking ... 完成。
    ==> SIZE netkit ... 完成。
    ==> PASV ... 无法连接到 0.0.0.0 端口号 19392: 拒绝连接               //指定网站拒绝连接

        (5)其它:

        rpm的详细介绍:

        1)简介:

      RPM(Red Hat Package Manager),是Red Hat 软件包管理器。RPM包里面包含有"可执行的二进制程序";"程序运行时所需要的文件"。

      一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系。依赖关系并不是Linux特有的, Windows操作系统中也是同样存在的;比如我们在Windows系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9 ;Linux和Windows原理是差不多的。

      一个软件包安装的流程图:

        2)RPM软件包管理器的全面用途:

      1.可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
      2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
      3.可以在查询系统中的软件包是否安装以及其版本;
      4.作为开发者可以把自己的程序打包为RPM 包发布;
      5.软件包签名GPG和MD5的导入、验证和签名发布
      6.依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;

        3)RPM 的使用权限:

          RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装。

          不是所有的软件包都能通过rpm 命令来安装,只有以.rpm结尾的软件包才可以。

        4)当rpm系统出了不能安装和查询的问题时:

    [root@localhost packages]rpm -initdb
    [root@localhost packages]rpm -rebuilddb            //这个命令需要执行很长时间
  • 相关阅读:
    洛谷 P1396 营救(二分答案)
    洛谷 P1807 最长路(toposort)
    洛谷 P1137 旅行计划(toposort)
    [bzoj3032][TYVJ P1924]七夕祭(环形均分纸牌,货仓选址)
    BZOJ3043 IncDec Sequence (差分)
    BZOJ2200 道路与航线(dijk+拓扑排序)
    P1462 通往奥格瑞玛的道路(二分+dijkstra)
    P1020 导弹拦截 O(nlogn)做法
    背包整理(01背包,完全背包,多重背包,分组背包)(待更新)
    [模板]树链剖分
  • 原文地址:https://www.cnblogs.com/MenAngel/p/5608990.html
Copyright © 2020-2023  润新知