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