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/目录下生成此软件包
的源码包,可能通过脚本安装或编译源代码安装,具体不做说明
RPM包及其管理 rpm命令的更多相关文章
- [20150522]RPM包的管理
RPM包的管理 RPM包的分类 RPM包可分为源码包和二进制包两类.源码包的主要优点是开源,如果有足够的能力,可以修改源代码,源码包可以自由选择所需要安装的功能,软件是编译安装,所以更加适合自己的系统 ...
- Linux CentOS7 VMware 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库
一.安装软件包的三种方法 Linux下游三种安装方法,rpm工具.yum工具.源码包.rpm按装一个程序包时,有可能因为该程序包依赖另一个程序包而无法安装:yum工具,可以连同依赖的程序包一起安装. ...
- fpm定制化RPM包之nginx rpm包的制作
fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...
- Ubuntu无法安装rpm包,ubuntu RPM should not be used directly install RPM packages, use Alien instead!
Ubuntu无法安装rpm包,ubuntu RPM should not be used directly install RPM packages, use Alien instead! 简单来说, ...
- 安装软件包的三种方法、RPM包介绍、rpm、yum工具用法、yum搭建本地仓库
第5周第3次课(4月18日) 课程内容: 7.1 安装软件包的三种方法7.2 rpm包介绍7.3 rpm工具用法7.4 yum工具用法7.5 yum搭建本地仓库 7.1 安装软件包的三种方法 rpm工 ...
- rpm包的管理
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u ...
- rpm包软件管理
一.rpm介绍 linux服务器中所有的软件包安装方式有两种,一种是源码安装.另一种是二进制包安装(rpm)源码包安装的好处是适合不同的发行版本的linux,缺点是在编译过程中花费的时间很长,二进制包 ...
- 不安装rpm包,取出rpm包里的文件
1.查看rpm包里的文件 [root@VM_166_132 ~]# rpm -qlp mysql5.6.29-1-3.x86_64.rpm |more/etc/ld.so.conf.d/mysql-5 ...
- 插入光盘,创建挂载点,挂载设备,安装rpm包,升级rpm包,卸载rpm包,查询rpm包是否安装,查询rpm包信息、安装位置,查询系统文件名属于哪个安装包
插入光盘: 创建挂载点: 创建挂载点. 挂载设备:或者mount /dev/sr0 /mnt/cdrom 安装rpm包: [root@localhost Packages]# rpm -ivh mys ...
随机推荐
- go语言之并发编程 channel
前面介绍了goroutine的用法,如果有多个goroutine的话相互之间是如何传递数据和通信的呢.在C语言或者JAVA中,传输的方法包括共享内存,管道,信号.而在Go语言中,有了更方便的方法,就是 ...
- 数据库存储I/O类型分析与配置
存储设备作为数据的容器,为应用提供数据存取服务,而存储系统将数据展现给不同的应用后,应用程序对数据访问不尽相同.简要来说,就是读和写,更加细分的话是以不同的传输单元(I/O大小)进行顺序和随机类型的读 ...
- Lattice绘图
lattice包提供了用于可视化单变量和多变量数据的一整套图形系统.许多用户转向使用lattice包是因为它能很容易地生成网格图形.网格图形能够展示变量的分布或变量之间的关系. 例:data(mtca ...
- QT5的exe的发布
直接release的exe文件需要很多dll关联,一个一个找又太麻烦. 其实QT5带有一个 windeployqt 工具 Qt Widgets Application可执行程序发布方式 首先用 QtC ...
- HDU - 1033 Edge 【模拟】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1033 题意 给定一个起始点 300 420 走的第一步是 310 420 下面的每一步 都由 输入决定 ...
- PAT 天梯赛 L3-001. 凑零钱 【DP】【DFS】
题目链接 https://www.patest.cn/contests/gplt/L3-001 思路 DP[I][J] I 表示第几个物品 J 表示多少钱 dp[i][j] 为 bool 值 表示 当 ...
- 配置asp.net IIS服务器遇到的问题以及详细图例解决方案
原来配置过IIS服务,但是没有将自己的程序放在IIS服务器上,今天突发奇想,看看自己写的程序怎么样啊,能否在服务器上运行一下,说干就干,但是遇到了很多困难,今天把陪孩子过程以及遇到的问题给大家说说,希 ...
- Data Structure Graph: strong connectivity
如果为undirected graph就是dfs或者bfs,如果都能visit则为连通O(V+E). 如果为directed graph就先dfs或者bfs,再reverse direct,再dfs或 ...
- Recovery模式【转】
本文转载自:http://tieba.baidu.com/p/2299027486 Recovery模式是手机系统的一个工程模式,作用是恢复和清除.用户进入这个模式之后,可以对当前系统的一些数据进行清 ...
- 九 Django框架,Form表单验证
表单提交 html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...