zoukankan      html  css  js  c++  java
  • RPM包及其管理 rpm命令

    一、什么是RPM
    RPM:RedHat Package Manager     //红帽包管理
    如果Linux发行版本是redhat 、redflag 、centos 、fedora 、suse等或者衍生的版本,
    那么使用rpm进行软件管理最适合了。通过rpm可以来对软件进行安装、升级、查询、
    验证及卸载等。被rpm管理的软件包称之为“rpm包”,对于该软件包的文件名包含了
    很多有用信息,通常包含了软件包的名称、版本信息、操作系统信息、适应的硬件架构
    等等,比如:httpd-2.2.3-22.el5.i386.rpm 
    2.2.3 是软件的版本号,22是发行号,i386表示用于Intel x86平台
    二、安装RPM包
    1) 安装RPM软件包
    rpm命令使用-i(表示安装)-v(显示安装过程)-h(使用#显示进度条)组合一起使用
    比如说安装httpd-2.2.3-22.el5.i386.rpm该文件包:
    [root@51cto Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm
    warning: httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
    Preparing...                ########################################### [100%]
       1:httpd                  ########################################### [100%]
    //可以看到该软件包安装成功,并且使用#显示安装过程
    2) --force选项与强制安装
    当安装软件包的时候,系统提示软件包已经安装,无法安装同版本软件的时候,有2种
    解决办法:一是先卸载软件包,然后重新安装;而是使用--force选项强制安装。如果
    某个已经安装的软件出现文件丢失或者损坏的情况,使用--force安装最好不过了。
    现在依旧采用上面的方法重新安装一遍httpd-2.2.3-22.el5.i386.rpm
    [root@51cto Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm
    warning: httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
    Preparing...                ########################################### [100%]
            package httpd-2.2.3-22.el5.i386 is already installed
    //系统提示说该软件包已经安装了
    下面采用--force选项的方法强制安装:
    [root@51cto Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm --force
    warning: httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
    Preparing...                ########################################### [100%]
       1:httpd                  ########################################### [100%]
    3) --nodeps选项与依赖性
    上面的方法使用--force可以强制覆盖安装,但是当软件包出现依赖关系的时候,--force也解决不
    了问题。rpm最大的不足就是包之间的依赖关系,比如要安装A包,提示说要先安装B包,找到
    B包安装又提示要先安装其他包。所以当实在无法解决依赖性的问题又必须安装软件包的时候,
    可以使用--nodeps加以解决,比如安装devhelp-devel-0.12-20.el5.i386.rpm
    [root@51cto Server]# rpm -ivh devhelp-devel-0.12-20.el5.i386.rpm
    warning: devhelp-devel-0.12-20.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
    error: Failed dependencies:
            devhelp = 0.12 is needed by devhelp-devel-0.12-20.el5.i386
            gnome-vfs2-devel >= 2.2.0 is needed by devhelp-devel-0.12-20.el5.i386
            gtk2-devel >= 2.2.0 is needed by devhelp-devel-0.12-20.el5.i386
            libdevhelp-1.so.0 is needed by devhelp-devel-0.12-20.el5.i386
            libgnomeui-devel >= 2.2.0 is needed by devhelp-devel-0.12-20.el5.i386
            libwnck-devel >= 2.10.0 is needed by devhelp-devel-0.12-20.el5.i386
    //发现依赖包这么多,使用--nodeps忽略依赖包直接安装
    [root@51cto Server]# rpm -ivh devhelp-devel-0.12-20.el5.i386.rpm --nodeps
    warning: devhelp-devel-0.12-20.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
    Preparing...                ########################################### [100%]
       1:devhelp-devel          ########################################### [100%]
    //安装好了,当实际上该软件包的依赖没解决是无法正常使用的,所以最好把依赖关系解决
    4) 批量安装或升级软件包
    使用通配符*就可以进行批量的安装软件包,如安装telnet开头的软件包
    [root@51cto Server]# rpm -ivh telnet-* --force
    warning: telnet-0.17-39.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
    Preparing...                ########################################### [100%]
       1:telnet-server          ########################################### [ 50%]
       2:telnet                 ########################################### [100%]
    对于升级软件包则使用-U选项,表示有比已安装的软件包更高版本就升级安装,如果系统本
    没有这些软件包则安装之,若版本相同则不做处理
    三、查询rpm软件包
    i) rpm -qa 命令用于查询系统中已安装的软件包
    [root@51cto Server]# rpm -qa  //这么查询列出的软件包很多
    如果要具体查询某个软件包可以使用grep,比如查询是否安装了LinuxQQ:
    [root@51cto Server]# rpm -qa |grep linuxqq
    linuxqq-v1.0.2-beta1    //可以看到已经安装了测试版QQ
    ii) 查询软件的相关信息,使用-i选项
    [root@51cto Server]# rpm -qi linuxqq
    Name        : linuxqq                      Relocations: (not relocatable)
    Version     : v1.0.2                            Vendor: Tencent Inc.
    Release     : beta1                         Build Date: 2009年01月05日 星期一 01时31分44秒
    Install Date: 2010年09月29日 星期三 05时16分12秒      Build Host: localhost.localdomain
    Group       : Internet                      Source RPM: linuxqq-v1.0.2-beta1.src.rpm
    Size        : 6346491                          License: Commercial
    Signature   : (none)
    Packager    : @Home
    Summary     : QQ for Linux v1.0.2 Beta1
    Description :
    QQ - The most popular free instant messaging program in China.
    * Chat with more than 590,000,000 people all over the world.
    * Free to download or distribute absolutely.
    iii) 查询软件文件的安装位置,使用-l选项
    [root@51cto Server]# rpm -ql linuxqq
    /usr
    /usr/bin
    /usr/bin/qq
    /usr/share
    /usr/share/applications
    /usr/share/applications/qq.desktop
    /usr/share/tencent
    /usr/share/tencent/qq
    /usr/share/tencent/qq/qq
    /usr/share/tencent/qq/qq.png
    /usr/share/tencent/qq/res.db
    iv) 查询文件归属,使用-f选项
    在rpm -qf 后面跟要查询的文件名,可以查询该文件属于哪个软件包。所以当某个文件丢失
    或者损坏的时候。就可以查询所属软件包,然后重新安装,即可恢复。
    [root@51cto Server]# rpm -qf /usr/share/tencent    //假如此文件损坏了
    linuxqq-v1.0.2-beta1        //可以查询出所属的软件包是Linuxqq
    四、验证rpm软件包的完整性
    rpm命令可以使用-V选项对系统中已经安装的软件包进行验证,比如系统发生安全故障,对
    软件包进行验证是必不可少的事情,比如:
    [root@51cto ~]# mv /usr/share/tencent/qq/qq /usr/share/tencent/qq/qq.backup
             //把/usr/share/tencent/qq/qq重命名成备份文件
    [root@51cto ~]# rpm -V linuxqq    //查询该文件包完整性
    missing     /usr/share/tencent/qq/qq    //显示丢失了/usr/share/tencent/qq/qq
    [root@51cto ~]# mv /usr/share/tencent/qq/qq.backup /usr/share/tencent/qq/qq//恢复
    [root@51cto ~]# rpm -V linuxqq   //查询该文件包完整性,无显示丢失文件
    五、卸载软件包
    使用-e选项来卸载软件包,rpm -e 软件名 (软件名可以包含版本信息,但不可以有rpm后缀)
    [root@51cto ~]# rpm -e linuxqq
    [root@51cto ~]# rpm -ql linuxqq
    package linuxqq is not installed     //卸载Linuxqq成功
    如果卸载软件包的时候遇到依赖关系的时候也可以使用--nodeps忽略依赖关系卸载
    (如果使用GNOME/KDE环境,这就不做介绍了)
    六、管理rpm源码包
    对于一些软件包是以.src.rpm为扩展名的,这类软件包就是包含了源代码的rpm包,在安装
    的时候需要进行编译,步骤如下:
    1) 执行rpm -i  51cto.src.rpm (假设软件包名为51cto)
    2)  cd /usr/src/redhat/SPECS/     //切换到该目录
    3) rpmbuild  -bb  51cto.specs  或者  rpmbuild  -bp  51cto.specs
    如果是如上的第一条命令,在/usr/src/redhat/RPMS/noarch/目录下生成一个新的rpm包,
    直接使用rpm -ivh xx.rpm 进行安装搞定;
    如果是如上的第二条命令,在/usr/src/redhat/BUILD/software/目录下生成此软件包
    的源码包,可能通过脚本安装或编译源代码安装,具体不做说明

  • 相关阅读:
    HDU 5821 Ball (贪心)
    hdu 5826 physics (物理数学,积分)
    HDU 5831 Rikka with Parenthesis II (贪心)
    HDU 2669 Romantic (扩展欧几里得定理)
    POJ 2442 Sequence
    HDU 3779 Railroad(记忆化搜索)
    博客园首页新随笔联系管理订阅 随笔- 524 文章- 0 评论- 20 hdu-5810 Balls and Boxes(概率期望)
    hdu 5813 Elegant Construction (构造)
    hdu 5818 Joint Stacks (优先队列)
    C#字段和属性
  • 原文地址:https://www.cnblogs.com/duanxz/p/5002284.html
Copyright © 2011-2022 走看看