RPM 全名是『 RedHat Package Manager 』简称则为 RPM 啦!顾名思义,当初这个软件管理的机制是由 Red Hat 这家公司发展出来的。 RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。

他最大的特点就是将你要安装的软件先编译过, 并且打包成为 RPM 机制的包装文件,透过包装好的软件里头默认的数据库记录, 记录这个软件要安装的时候必须具备的相依属性软件,当安装在你的 Linux 主机时, RPM 会先依照软件里头的数据查询 Linux 主机的相依属性软件是否满足, 若满足则予以安装,若不满足则不予安装。那么安装的时候就将该软件的资讯整个写入 RPM 的数据库中,以便未来的查询、验证与反安装!这样一来的优点是:

  1. 由於已经编译完成并且打包完毕,所以软件传输与安装上很方便 (不需要再重新编译);
  2. 由於软件的资讯都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装

但是这也造成些许的困扰。由於 RPM 文件是已经包装好的数据,也就是说, 里面的数据已经都『编译完成』了!所以,该软件文件几乎只能安装在原本默认的硬件与操作系统版本中。 也就是说,你的主机系统环境必须要与当初创建这个软件文件的主机环境相同才行! 举例来说,rp-pppoe 这个 ADSL 拨接软件,他必须要在 ppp 这个软件存在的环境下才能进行安装!如果你的主机并没有 ppp 这个软件,那么很抱歉,除非你先安装 ppp 否则 rp-pppoe 就是不让你安装的 (当然你可以强制安装,但是通常都会有点问题发生就是了!)。

所以,通常不同的 distribution 所发布的 RPM 文件,并不能用在其他的 distributions 上。举例来说,Red Hat 发布的 RPM 文件,通常无法直接在 SuSE 上面进行安装的。更有甚者,相同 distribution 的不同版本之间也无法互通,例如 CentOS 4.x 的 RPM 文件就无法直接套用在 CentOS 5.x !因此,这样可以发现这些软件管理机制的问题是:

  1. 软件文件安装的环境必须与打包时的环境需求一致或相当;
  2. 需要满足软件的相依属性需求;
  3. 反安装时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!

那怎么办?如果我真的想要安装其他 distributions 提供的好用的 RPM 软件文件时? 呵呵!还好,还有 SRPM 这个东西!SRPM 是什么呢?顾名思义,他是 Source RPM 的意思,也就是这个 RPM 文件里面含有原始码哩!特别注意的是,这个SRPM 所提供的软件内容『并没有经过编译』, 他提供的是原始码喔!

通常 SRPM 的扩展名是以 ***.src.rpm 这种格式来命名的。不过,既然 SRPM 提供的是原始码,那么为什么我们不使用 Tarball 直接来安装就好了?这是因为 SRPM 虽然内容是原始码, 但是他仍然含有该软件所需要的相依性软件说明、以及所有 RPM 文件所提供的数据。同时,他与 RPM 不同的是,他也提供了参数配置档 (就是 configure 与 makefile)。所以,如果我们下载的是 SRPM ,那么要安装该软件时,你就必须要:

  • 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件;
  • 然后将编译完成的 RPM 文件安装到 Linux 系统当中

怪了,怎么 SRPM 这么麻烦呐!还要重新编译一次,那么我们直接使用 RPM 来安装不就好了?通常一个软件在发布的时候,都会同时发布该软件的 RPM 与 SRPM 。我们现在知道 RPM 文件必须要在相同的 Linux 环境下才能够安装,而 SRPM 既然是原始码的格式,自然我们就可以透过修改 SRPM 内的参数配置档,然后重新编译产生能适合我们 Linux 环境的 RPM 文件,如此一来,不就可以将该软件安装到我们的系统当中,而不必与原作者打包的 Linux 环境相同了?这就是 SRPM 的用处了!

文件格式 档名格式 直接安装与否 内含程序类型 可否修改参数并编译
RPM xxx.rpm 已编译 不可
SRPM xxx.src.rpm 不可 未编译之原始码

RPM软件管理程序:rpm

1:安装文件 rpm -ivh packge_name

参数

-i: install的意思

-v:查看更详细的安装信息画面

-h:以安装信息栏显示安装的进度

2: 测试某个软件是否可以被安装到用户的Linux环境当中,可找出是否有属性依赖的问题。

rpm -ivh packge_name --test

3: RPM 文件升级   rpm -Uvh packge_name  rpm -Fvh packge_name

-Uvh  后面接的软件如果没有安装,则直接安装软件,若后面的接的软件有安装过的旧版本,则系统自动更新至新版。

-Fvh  后面的接的软件如果没有安装,则不安装。      若后面的接的软件有安装过的旧版本,则系统自动更新至新版。

4:查询

RPM查询时,其实就是查询/var/lib/rpm/这个目录下的数据库文件。

rpm查询可用的选项有:

rpm -a +软件名称

                仅查询,后面接的软件名称是否有安装;

rpm -qa

列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;

rpm -q[licdR]  + 已安装的软件名称

-qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等

-ql :列出该软件所有的文件与目录所在完整档名 (list);如帮助文档的位置,可执行的文件位置信息等等

                    -qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已)
-qd :列出该软件的所有说明档 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)

rpm -qf + 存在于系统上面的某个文件名

                                 由后面接的文件名称,找出该文件属於哪一个已安装的软件;这个事文件名不是软件名称

rpm -qp[licdR] + 未安装的软件对应的RPM文件

                          查询某个 RPM 文件内含有的资讯,注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出 某个 RPM 文件内的资讯,而非已安装的                                      软件资讯!注意!

在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)

rpm卸载和重建数据库

卸载就是用 -e即可。  rpm -e +软件名称

由于RPM文件经常会安装、删除、升级等,某些操作或许会导致RPM数据库/var/lib/rpm内的文件损坏。如何恢复呢?可使用--rebuilddb这个参数

rpm --rebuilddb

RPM vs SRPM的更多相关文章

  1. 别人的Linux私房菜(23)软件安装RPM、SRPM、YUM

    RPM(RedHat Package Manager),不同Linux发行版发布的RPM文件甚至不同版本,不通用. SRPM为Source RPM,所提供的软件内容没有经过编译,格式为xxx.src. ...

  2. 第二十三章、软件安装: RPM, SRPM 与 YUM 功能

    SRPM 的使用 : rpmbuild 包含Source code 的 SRPM 新版的 rpm 已经将 RPM 与 SRPM 的命令分开了,SRPM 使用的是 rpmbuild 这个命令,而不是 r ...

  3. centos6.5软件安装:RPM,SRPM与yum功能

    鸟哥的linxu私房菜读书笔记 前言: Linux上软件的安装可以以原始码的方式来安装软件,也就是利用厂商释出的 Tarball 来进行软件的安装.不过,你应该很容易发现,那就是每次安装软件都需要侦测 ...

  4. 软件安装 RPM SRPM YUM

    RPM介绍 RPM是已经编译好的软件安装库.编译是有相应环境相适应的,包括系统,版本等相关信息都要跟编译版本一致才行,否则肯定会出现安装不成功的情况,强制安装的话,也会出现各种各样的问题. 在这种情况 ...

  5. linux RPM、YUM

    Linux 界的两大主流: RPM 与 DPKG distribution 代表 软件管理机制 使用指令 在线升级机制(指令) Red Hat/Fedora RPM rpm, rpmbuild YUM ...

  6. RPM打包原理、示例、详解及备查

    原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...

  7. RPM 包的构建 - 实例

    打包目录 rpm 打包目录有一些严格的层次上的要求. rpm 的版本 <=4.4.x,rpmbuid 工具其默认的工作路径是 /usr/src/redhat.因为权限的问题,普通用户不能制作 r ...

  8. RPM打包原理、示例、详解及备查( 转)

    RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软件,所 ...

  9. rpm使用方法

    查看rpm信息:rpm -q [软件的rpm名字]rpm -q下还有很多选项,具体功能如下:rpm -qa                列出所有已安装的RPM文件rpm -qa | grep [rp ...

随机推荐

  1. proc 文件系统调节参数介绍

    /proc/net/* snmp文件 Ip: ip项 Forwarding        : 是否开启ip_forward,1开启,2关闭 DefaultTTL       : IP默认ttl. In ...

  2. Form - 遍历行

    go_block('block_name'); first_record; LOOP   message(:block_name.item);   if :system.last_record  = ...

  3. OpenSSH ‘mm_newkeys_from_blob’函数权限许可和访问控制漏洞

    漏洞名称: OpenSSH ‘mm_newkeys_from_blob’函数权限许可和访问控制漏洞 CNNVD编号: CNNVD-201311-117 发布时间: 2013-11-12 更新时间: 2 ...

  4. WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞

    漏洞名称: WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-06 ...

  5. BZOJ2351: [BeiJing2011]Matrix

    2351: [BeiJing2011]Matrix Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 589  Solved: 171[Submit][S ...

  6. POJ 2253 Frogger(最小生成树)

    青蛙跳跃,题意大概是:青蛙从起点到终点进行一次或多次的跳跃,多次跳跃中肯定有最大的跳跃距离.求在所有的跳跃中,最小的最大跳跃距离SF-_-(不理解?看题目吧). 可以用最小生成树完成.以起点为根,生成 ...

  7. Azure 媒体服务支持 DASH 实时传送流

    Kilroy Hughes Azure媒体服务数字媒体架构师 本文重点介绍 Azure 媒体服务支持的 DASH 实时传送流功能,同时阐述如何利用这些功能将实时和点播自适应流传送至 Web 浏览器 ...

  8. JS中String,Math常用函数

    String对象: 1.length属性 说明:获取字符串的长度 实例: var str="abc"; var i=str.length;//output:3 2.charAt() ...

  9. MFC VS2005 添加Override 和 Message

    VS2005 1.Overrides OnInitDialog() 在Class View选中 这个类,然后properties中点Message 旁边的Overrides, 添加OnInitDial ...

  10. 关于this的小总结

    关于对this目前有几点小理解 ①this指向调用它的元素.就是谁调用它,它就指向谁. ②可以通过call()和apply()改变this的指向 ③setInterval和setTimeout中的th ...