RPM 全名是 RedHat Package Manager 由红帽开发出来的软件管理机制,是以一种数据库记录的方式来将你所需的软件安装到 Linux 系统的一套管理机制。



rpm包的格式:libestr-0.1.9-2.e17.x86_64.rpm

libestr    软件名称

0.1.9      软件的版本信息

2.e17      发布编号,由rpm包封装者设定

x86_64     适合的硬件平台





RPM 的优点

RPM 内含已经编译过的程序与设置文件等数据,可以让用户免除重新编译的困扰。

RPM 在被安装前,会检查系统的硬盘容量,操作系统版本等,可避免文件被错误安装。

RPM 文件本身提供软件版本信息,依赖属性软件名称,软件用途说明,软件所包含文件等信息,便于了解软件。

RPM 管理方式使用数据库记录 RPM 文件的相关参数,便于升级,删除,查询,验证。



 

RPM 的缺点

软件的属性依赖: 某些程序需要前驱程序,当你要安装某个以RPM 类型提供的软件时,在安装的过程中RPM 回去检验 RPM 软件数据库中是否已经存在相关的软件(前驱程序)如数据库显示不存在,那么 RPM 文件 默认 就不能安装。 


可用 yum 来解决






RPM 默认安装路径


RPM 文件安装完毕后,该软件相关的信息就会被写入 /var/lib/rpm/目录下的数据库文件中。


RPM 安装


[root@desktop0]# rpm -ivh libestr-0.1.9-2.e17.x86_64.rpm

 rpm 选项:

 -i  install 代表下载

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

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


也可以以网络地址来安装

[root@desktop0]# rpm -ivh  http://website.name/path/pkgname.rpm






在安装过程中不管是否有问题,强制安装上去 相关参数如下:


--nodeps               使用时机:如果在安装套件时提示“有属性相关的套件尚未安装”,而又想直接强制安装可以       加                                  上。此参数告知RPM不要去检查套件的相关性LINUX RPM 安装过程中强制安装的相关参数
                             危险性:如果强制安装可能导致该软件无法正常使用。


--replacefiles         使用时机:如果在安装的过程中出现了“某个档案已经被安装在您的系统上面”的信息,又或许出现版                               本不合的讯息(confilcting files)时,可以使用这个参数来直接覆盖。
                              危险性:覆盖的动作是无法复原的,所以需谨慎。

--replacepkgs         使用时机:重新安装某个已经安装过的套件。

--force               使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs的综合体。

--test               使用时机:想测试一下该套件是否可以安装到使用者的Linux环境当中。
                        范例:rpm -ivh pkgname.i386.rpm --test

--justdb              使用时机:由于 RPM 的数据库损坏或者是某些缘故产生错误时,可以使用这个参数来更新软件在数据库                        中的相关信息。

--nosignature            使用时机:想要略过数字证书的检查时,可以使用这个参数。


--noscripts          使用时机:不想让该软件在安装过程中自行执行某些系统命令(如数据库的初始化)


--prefix          使用时机:要将软件安装到其他非正规目录时。如 安装到/usr/local 而非正规 /bin  ,   /etc  等目录,就可                         以使用    --prefix/usr/localusr/local 来实现。





RPM 查询

查询选项

-q                       仅查询,后接软件名称

-qa                     列出在本机上安装的所有软件的名称

-qi                      列出该软件的详细信息

-ql                      列出该软件所有的文件和目录所在的完整文件名

-qc                     列出该软件在 /etc/  下的文件名 

-qd                     列出该软件的所有帮助文件

-qR                     列出与该软件有关的依赖软件所含的文件

-qf                      由后面接的文件名称找出该文件属于哪个已安装的软件

-qp [icdlR]            注意 -qp 后面接的所有参数以上面说明的一致,但用途仅在于找出某个 RPM 文件内的信息,而非已                              安装的软件信息




RPM 升级与更新

参数

-Uvh          后接的软件即使没有安装过,系统将直接安装;若后面软件有安装过旧版,则系统自动更新至新版


-Fvh          如果后接的软件没有安装过,则该软件不会被安装;亦只有已安装到你 Linux  系统内的软件会被升级





RPM 验证

验证(Verify) 的作用方式 : 使用 /var/lib/rpm 下面的数据库内容来比较目前 Linux 系统的环境下的所有软件文件。

好处:当你误杀某个软件的文件 或 有数据不小心丢失 或 不小心修改了某个文件的内容 ,用这个方法验证一下原来的文件系统,让你了解到底修改了那些地方。

参数:

-V               后加软件名称,若该软件所含文件被改动过,才会列出了。

-Va             列出目前系统上所有可能被改动过的文件。

-Vp             后加文件名称,列出该软件内可能被改动过的文件。

-Vf              列出某个文件是否被改动过。


[root@desktop0]: rpm -V logrotate
..5....T   c /etc/logrotate.conf

文件前的  c   代表的文件类型 文件类型有如下几类:


c :    设置文件(config file)

d :    文档 (documentation)

g :    “鬼”文件 (ghost file),通常是该文件不被某个软件所包含

l :    授权软件 (license file)

r :    自述软件 (read me)


c 前的8个代表的信息如下:


S :文件的容量大小是否被改变

M : 文件类型或文件的属性(rwx) 是否被改变

5 :MD5 这一种指纹码的内容已经不同

D:设备的主/次代码已经改变

L:Link 路径已经被改变

U :文件所有者已经被改变

G :文件所属用户组已被改变

T :文件的创建时间已被改变 





卸载 RPM 与重建数据库


卸载就是将软件解除安装。

注意解安装的过程一定要从最上层往下解除。


删除 :    rpm -e 软件名称

经常会出现软件属性依赖导致无法删除某些软件的问题

可以加 --nodeps 来强制删除,不过要用到该程序的全部程序可能会无法运行


由于 RPM 文件经常安装/删除/升级等,某些操作可能会导致 RPM 数据库/var/lib/rpm/内的文件损坏。

如真损坏可以使用 --rebuilddb 这个参数来重建一下数据库

[root@desktop0]# rpm  --rebuilddb