一、什么是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命令相关推荐

  1. 安装软件包的三种方法 ,rpm包介绍 , rpm工具用法, yum工具用法, yum搭建本地仓库...

    linux安装和卸载软件 安装三种方法 rpm工具 yum工具 源码包 rpm工具使用 首先看一下什么事rpm包,可以挂载光驱看看里面有很多 [root@localhost ~]# mount /de ...

  2. linux安装大批量rpm包,linux制作rpm安装包

    linux制作rpm二进制安装包 有好多朋友问到怎么制作rpm包,可不可把其它服务器上编译好的软件目录复杂到其它服务器上直接应用等等.这里通过案例由简单到高级来一一讲解. 此方法是通过编写spec文件 ...

  3. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  4. # 编译 qemu,libvirt, qemu rpm 包和 libvirt rpm 包

    # 编译 qemu,libvirt, qemu rpm 包和 libvirt rpm 包 ## 环境准备 Host OS CentOS 8.2 Libvirt libvirt-6.10.0 Qemu ...

  5. 如何安装rpm包?掌握rpm包管理工具就够了

    由于使用linux操作系统的需要,小编不得不深入学习了解rpm包管理工具,以便于能够对rpm包进行安装.卸载以及管理.不得不说,rpm的确是Redhat公司的一大贡献,因为他使得Linux的软件安装工 ...

  6. CentOS7自制openssh rpm包(含ssh-copy-id命令)—— 筑梦之路

    背景:新版的openssh源码里面编译安装,已经将ssh-copy-id命令放到了子目录contrib,而不会默认安装,而此命令在使用中比较实用,比如各主机之间的免密认证 %global ver 9. ...

  7. [linux-24] RPM包的管理

    一.介绍 rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.RPM是RedHat Package Manager ( RedHat软件包管理工具) ...

  8. 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库...

    为什么80%的码农都做不了架构师?>>>    安装软件包的三种方法 rpm工具 yum工具 源码包 rpm rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linu ...

  9. linux如何运行rpm包,如何制作RPM包

    安装制作rpm工具rpmbuild yum install -y rpm-build 创建用户 注意: 创建rpm包一定不要使用root用户,因为root用户权限比较大,如果脚本编写错误的话,可能会导 ...

最新文章

  1. java虚拟机启动参数Xms,启动JVM时,-Xms和-Xmx参数是什么?
  2. 初探设计:Java继承何时用?怎么用?
  3. 百度4年前干翻自己,打通Waymo特斯拉路线二脉,赢得全球竞速先机
  4. javascript——原型与原型链
  5. 20-umask命令
  6. 利用WebBrowser实现Web打印的分析
  7. SaltStack 第二板块安装说明 [2]
  8. 查看openssh版本_OpenSSH命令注入漏洞复现(CVE202015778)
  9. String与Date、Timestamp互转
  10. 转】.NET强名称工具(Sn.exe)使用详解
  11. sumdiv 算术基本定理的推论
  12. [转载] Python中字符串切片详解
  13. mysql binlog 恢复
  14. Spring 注解配置(2)——@Autowired
  15. Unity 粒子特效 之 LogoEffect ParticleSystem 文字图片logo粒子特效
  16. HTML基础-跟着李南江学编程
  17. 手把手教你安装JDK免安装版(简单粗暴)
  18. composer错误
  19. 职场上的情绪管理,作用比你想象的要大
  20. 苹果你深深的伤害了我,还不让我说

热门文章

  1. java 输出脉冲信号_一种使用SOC精确控制脉冲的方法
  2. 页面多条件组合查询功能 代码 如何写效率高_Jeecg Boot 2.2 首个里程碑版本发布,低代码平台
  3. 常见移动机器人运动学模型
  4. 新手小白零基础搭建个人博客(三)部署篇
  5. c语言infile和outfile用法,C语言文件读写基本操作DEMO
  6. LIST_VIEW_和LVITEM用法
  7. 封条格式用word怎么打_大门封条格式用word怎么打
  8. java各科成绩排序_java 成绩排序
  9. ajax如何将数据写入文本框,ajax 从数据库读到文本框
  10. Java基础day15