Redhat Linux 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包

rpm命令使用-i(表示安装)-v(显示安装过程)-h(使用#显示进度条)组合一起使用,比如说安装httpd-2.2.3-22.el5.i386.rpm该文件包:

# 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%]
//可以看到该软件包安装成功,并且使用#显示安装过程

--force选项与强制安装

当安装软件包的时候,系统提示软件包已经安装,无法安装同版本软件的时候,有2种解决办法:一是先卸载软件包,然后重新安装;而是使用--force选项强制安装。如果某个已经安装的软件出现文件丢失或者损坏的情况,使用--force安装最好不过了。

现在依旧采用上面的方法重新安装一遍httpd-2.2.3-22.el5.i386.rpm

# 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选项的方法强制安装:

# 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%]

--nodeps选项与依赖性

上面的方法使用--force可以强制覆盖安装,但是当软件包出现依赖关系的时候,--force也解决不了问题。rpm最大的不足就是包之间的依赖关系,比如要安装A包,提示说要先安装B包,找到B包安装又提示要先安装其他包。所以当实在无法解决依赖性的问题又必须安装软件包的时候,可以使用--nodeps加以解决,比如安装devhelp-devel-0.12-20.el5.i386.rpm

# 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忽略依赖包直接安装

# 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%]

安装好了,当实际上该软件包的依赖没解决是无法正常使用的,所以最好把依赖关系解决

批量安装或升级软件包

使用通配符*就可以进行批量的安装软件包,如安装telnet开头的软件包

# 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软件包

rpm -qa 命令用于查询系统中已安装的软件包

# rpm -qa //这么查询列出的软件包很多

如果要具体查询某个软件包可以使用grep,比如查询是否安装了LinuxQQ:

# rpm -qa |grep linuxqq
linuxqq-v1.0.2-beta1    //可以看到已经安装了测试版QQ

查询软件的相关信息,使用-i选项

# 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.

查询软件文件的安装位置,使用-l选项

# 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

查询文件归属,使用-f选项

在rpm -qf 后面跟要查询的文件名,可以查询该文件属于哪个软件包。所以当某个文件丢失或者损坏的时候。就可以查询所属软件包,然后重新安装,即可恢复。

# rpm -qf /usr/share/tencent    //假如此文件损坏了
linuxqq-v1.0.2-beta1        //可以查询出所属的软件包是Linuxqq

验证rpm软件包的完整性

rpm命令可以使用-V选项对系统中已经安装的软件包进行验证,比如系统发生安全故障,对软件包进行验证是必不可少的事情,比如:

# mv /usr/share/tencent/qq/qq /usr/share/tencent/qq/qq.backup        //把/usr/share/tencent/qq/qq重命名成备份文件
# rpm -V linuxqq    //查询该文件包完整性
missing     /usr/share/tencent/qq/qq    //显示丢失了/usr/share/tencent/qq/qq
# mv /usr/share/tencent/qq/qq.backup /usr/share/tencent/qq/qq//恢复
# rpm -V linuxqq   //查询该文件包完整性,无显示丢失文件

卸载软件包

使用-e选项来卸载软件包,rpm -e 软件名 (软件名可以包含版本信息,但不可以有rpm后缀)

# rpm -e linuxqq
# rpm -ql linuxqq
package linuxqq is not installed     //卸载Linuxqq成功

如果卸载软件包的时候遇到依赖关系的时候也可以使用--nodeps忽略依赖关系卸载

管理rpm源码包

对于一些软件包是以.src.rpm为扩展名的,这类软件包就是包含了源代码的rpm包,在安装的时候需要进行编译,步骤如下:

执行rpm -i liusuping.src.rpm (假设软件包名为liusuping) 

 cd /usr/src/redhat/SPECS/     //切换到该目录

rpmbuild -bb liusuping.specs 或者 rpmbuild -bp liusuping.specs

如果是如上的第一条命令,在/usr/src/redhat/RPMS/noarch/目录下生成一个新的rpm包,直接使用rpm -ivh xx.rpm 进行安装搞定;(推荐这种)

如果是如上的第二条命令,在/usr/src/redhat/BUILD/software/目录下生成此软件包的源码包,可能通过脚本安装或编译源代码安装。



来源:http://www.liusuping.com/ubuntu-linux/RedhatLinuxRPM%E5%8C%85.html

参考:http://blog.csdn.net/zolalad/article/details/11368879

阅读更多
文章标签: redhat 卸载安装
想对作者说点什么? 我来说一句

telnet的rpm包

2016年02月23日 199KB 下载

saltstack安装rpm包以及依赖(rhel65)

2017年10月13日 14.44MB 下载

Redhat 6.5 ftp server rpm 安装包

2016年01月22日 152KB 下载

RHEL6.4 Kernel升级rpm包

2014年02月25日 34.84MB 下载

没有更多推荐了,返回首页

不良信息举报

Redhat Linux RPM包安装软件及其管理

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭