RPM 全名:Redhat Package Manager 是以一种数据库记录的方式来将你所需要的软件安装到你的Linux系统的一套管理机制。
优点:
1.由于已经编译完成并且打包完毕,所以软件传输与与安装上不需要重新编译;
2.由于软件的信息都已经记录在Linux主机的数据库上,方便查询升级和反安装。
缺点:
1.软件安装的环境必须与打包时的环境需求一致或相当;
2.需要满足软件的依赖属性需求;
3.反安装时需要特别小心,最底层的软件不可先删除,否则可能造成整个系统的问题。
RPM 的安装
我们需要root的权限才能够操作rpm命令。以安装一个rp-pppoe包为例:
也可以一口气安装2个以上的软件,eg:rpm -ivh a.i386.rpm b.i386.rpm
倘若在安装的过程中发现问题,而还是执意要安装这个软件,可以用如下的参数;
--test 测试安装,但不真正执行安装,即dry run模式
--nodeps: 忽略依赖关系
--replacepkgs| replacefiles 重新安装某个安装过的软件
--nosignature: 不检查来源合法性
--nodigest: 不检查包完整性
--noscripts: 不执行程序包脚本
%pre: 安装前脚本;--nopre
%post: 安装后脚本;--nopost
%preun: 卸载前脚本;--nopreun
%postun: 卸载后脚本;--nopostun
注:尽量不要不要使用这种暴力安装的方法,会发生很多不可预期的问题。
RPM的升级与更新
-Uvh 若后面的软件没有安装过,则予以直接安装;若该软件已安装过且为旧版,则系统自动更新至最新版。
-Fvh 只有已安装到你的系统内的软件会被升级。
若想大量的升级系统旧版本时,使用-Fvh,不会将没有安装过的软件安装到系统中。
!!注:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留。
RPM查询
rpm查询的其实就是/var/lib/rpm/目录下的数据库文件。
!!注:在查询本机上的rpm软件相关信息时,不需要加上版本的名称,只要加上软件名即可,因为它会由/var/lib/rpm这个数据库里面去查询;但是查询某个rpm文件就不同了,必须列出整个文件的完整文件名称才行。
RPM验证
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs 文件的容量大小是否被改变
M Mode differs (includes permissions and file type) 文件的类型或文件的属性是否被改变
5 digest (formerly MD5 sum) differs MD5这一种指纹码的内容已经不同
D Device major/minor number mismatch 设备的主次代码已经改变
L readLink(2) path mismatch Link路径已经改变
U User ownership differs 文件的所有者已经改变
G Group ownership differs 文件的所属用户组已经改变
T mTimediffers 文件的创建时间已经改变
数字证书:
软件验证完之后发现验证的只是软件内与数据库的信息而已,倘若该文件所提供的数据本身就有问题,就不能找到方法了,因此,我们需要通过数字证书来验证软件的来源。