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

    RPM包管理器是由Red Hat推出的应用软件管理器(过去的RPM就是Red Hat Package Manager的缩写)。RPM包管理器是Linux系统中最早的软件包管理软件之一,也是目前最流行的软件包管理器,许多发行版都使用RPM作为默认的软件包管理软件。

    一、RPM包管理器简介

    【软件依赖性】

    与Windows系统中的软件不同,Linux系统中的软件将不同的功能模块单独写入到不同的软件包中,最后将多个相互依存的软件包结合起来形成一个应用程序。虽然这在Windows中也经常使用,但Linux系统中的软件模块划分得更小、功能更单一。因此在安装功能性软件时,通常需要安装许多与其具有依赖关系的软件包,这就是Linux系统中的软件依赖性。

    【RPM包管理器】

    在早期的系统中,安装应用程序是一件非常麻烦的事情,需要编译许多软件包才能完成应用程序的安装。为了解决这个问题,Red Hat公司开发了一个包管理器,早期的包管理器名为Red Hat Package Manager。

    虽然名中带有Red Hat,但这是一个基于GPL协议的开源软件。Red Hat公司鼓励广大的Linux系统发行商了解和使用RPM包管理器。由于Red Hat的积极推广,现在许多Linux发行版都使用RPM作为默认的包管理器。现在RPM的含义是RPM Package Manager,有RPM社区负责维护。

    【RPM软件包名称格式】

    RPM软件包名称都有一个固定的格式,以文件服务程序Samba的客户端软件包为例,格式为samba-client-3.0.33-3.7.el5.i386.rpm。这个软件包名称中各部分的含义如下:

    samba-client:最前面的为软件包名称。

    3.0.33-3.7:3.0.33表示软件包的主要版本号,紧跟在后面的3.7表示软件发布的次要版本号。

    el5:表示适用于Red Hat Enterprise Linux 5系统。fc6表示适用于Fedora Core Linux 6系统。

    i386:表示硬件平台。有些软件包的硬件平台为noarch,表示该软件包没有硬件平台的限制。

    .rpm:表示这是一个RPM软件包。有些软件包最后是src.rpm,表示软件包内含有源代码。

    二、rpm命令基本格式

    【命令格式】

    rpm [option…]

    【常用选项】

    q:使用查询模式。

    a:查询所有软件包。

    i:显示详细信息。如果指定了软件包,则安装软件包。

    l:显示软件包的文件列表。

    p:查询指定的软件包。

    f:查询指定文件所属软件包。

    v:显示命令执行过程。

    h:安装软件包时显示进度信息。

    e:卸载指定的软件包。

    U:升级软件包。

    force:长格式选项,强制操作,忽略操作过程中的冲突。

    nodeps:长格式选项,忽略操作过程中的软件依赖性,强制操作。

    oldpackages:忽略冲突,强制升级软件包。

    在上面的选项中,显示详细信息选项i对应的长格式为info;而安装软件包时,其对应的长格式为install。这两个长格式对应的短格式选项都是i,使用时需注意区别。

    三、使用rpm命令查询软件包

    1、查询已安装的软件

    (1)例如要查询系统中是否装有一个名为samba-client的软件包:

    [root@localhost ~]# rpm -q samba-client

    提示:使用选项q加软件包名的方式查询时,必须使用软件包全名,否则将无法查询到任何结果。

    (2)有时可能会忘记某个软件包的具体名称,此时可以使用选项a显示系统中已经安装的所有软件包:

    [root@localhost ~]# rpm -qa

    (3)为了能够使用模糊查询,可以在查询全部软件包的同时,配合使用grep命令模糊查询。例如查询当前系统中软件名称包含ssh的软件包:

    [root@localhost ~]# rpm -qa | grep ssh
    openssh-clients-4.3p2-24.el5
    openssh-4.3p2-24.el5
    openssh-server-4.3p2-24.el5
    openssh-askpass-4.3p2-24.el5

    (4)许多时候需要查看软件包的详细信息。这是可以配合使用选项i,显示指定软件包的详细信息。例如查看软件包chkconfig的详细信息:

    [root@localhost ~]# rpm -qi chkconfig
    Name        : chkconfig                    Relocations: (not relocatable)
    Version     : 1.3.30.1                          Vendor: Red Hat, Inc.
    Release     : 1                             Build Date: Sat 02 Dec 2006 03:29:31 AM CST
    Install Date: Tue 12 Nov 2013 11:52:00 PM CST      Build Host: hs20-bc2-2.build.redhat.com
    ...

    2、查询软件包中的文件

    查询软件包中的文件主要使用选项l和f。

    (1)查看软件包chkconfig中包含的详细文件列表:

    [root@localhost ~]# rpm -ql chkconfig
    /etc/alternatives
    /etc/init.d
    /etc/rc.d/init.d
    /etc/rc.d/rc0.d
    /etc/rc.d/rc1.d
    ...

    (2)查看软件包的安装文件中的文件列表,这时可以使用选项p指定输入的参数为一个软件包文件:

    [root@localhost ~]# rpm -qpl samba-client-3.0.33-3.7.el5.i386.rpm

    (3)也可以使用选项p和i查看软件包的概况:

    [root@localhost ~]# rpm -qpi samba-client-3.0.33-3.7.el5.i386.rpm

    (4)有时也可能需要反向查询一个文件对应的软件包,这种情况可能是无意中删除了一个文件,需要知道应该重新安装的软件包的名称。这是可以使用选项f指定要查询的文件。例如:

    [root@localhost ~]# rpm -qf /bin/ls
    coreutils-5.97-12.1.el5

    此时就可以重新安装命令输出的软件包,恢复删除的文件。

    四、使用rpm命令安装软件包

    注意:安装下载的软件包时,应该注意软件包对应的版本和硬件平台,否则可能出现无法安装或安装后无法正常使用的情况。

    【获取软件包】

    获取软件包有两种方法:(1)RHEL5.3的光盘(或光盘镜像)中自带的软件包,通常位于光盘根目录的Server子目录中。(2)从互联网下载软件包。

    如果手边没有现成的安装光盘,也不知道软件的官方网站,可以尝试在Repoforge.org的软件仓库中查找。

    Repoforge.org软件包仓库:http://pkgs.repoforge.org/    它是一个专业提供软件包、源码的下载站点。

    (1)最常用的安装选择组合:

    [root@localhost ~]# rpm -ivh gcc-4.1.2-44.el5.i386.rpm

    (2)许多安装包会遇到依赖性问题,即在安装应用程序之前,应该先安装能让应用程序正常工作的前提软件包。

    如果遇到软件包存在依赖性问题,应该先安装软件所依赖的前提软件包,或在同一条命令中同时安装前提软件包(只需将多个rpm包以空格分开都放在rpm –ivh 后面即可)。

    (3)有时管理员肯能需要忽略软件包的依赖性,强制安装软件包,此时可以使用选项nodeps,这个选项适合于依赖性错误的情况,例如有些软件包可能会依赖其自身或间接依赖其自身。

      有时误删除一个文件,需要重新安装时,rpm命令会提示文件冲突,此时可以使用选项force忽略软件包、文件冲突,强制安装软件包。

    五、使用rpm命令卸载软件包

    [root@localhost ~]# rpm -e samba-client

    六、使用rpm命令升级软件包

    (1)使用选项U升级软件包(假设原来系统中安装了比bzip2-libs-1.0.3-3版本低的bzip2-libs版本,现在可以使用bzip2-libs-1.0.3-3.i386.rpm软件包升级原来的低版本为bzip2-libs-1.0.3-3版本):

    [root@localhost Server]# rpm -Uvh  bzip2-libs-1.0.3-3.i386.rpm

    (2)由于系统中安装有低版本的软件,因此在安装过程中可能会出现冲突,导致升级失败,此时可以使用选项oldpackage强制升级:

    [root@localhost Server]# rpm -Uvh --oldpackage bzip2-libs-1.0.3-3.i386.rpm
  • 相关阅读:
    convert image to base64 and post to RESTful wcf
    在android webview实现截屏的手动tounchmove裁剪图片
    How to use jquery ajax and android request security RESTful WCF
    using swfUpload in asp.net mvc
    using HttpClient and sending json data to RESTful server in adroind
    ODP.NET数据访问
    android image watermark
    解决国内不能访问github的问题
    idapro权威指南第二版阅读笔记第九章 交叉引用和绘图功能
    idapro权威指南第二版阅读笔记第二章 逆向和反汇编工具
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3474090.html
Copyright © 2011-2022 走看看