由于用户大部分都不是程序员,程序安装维护等都非常困难,RPM就是在这种情况下被开发出来的。
RPM 是Linux上的一款非常强大的软件包管理工具,它主要负责程序的安装,升级,卸载,更新,查询,校验等操作。但是它有一个缺陷,就是程序之间存在依赖性,要想安装一个程序有时必须得安装另外一个程序甚至多个程序,安装非常繁琐。于是就出现了另一种软件包管理工具。这里暂不做介绍。
RPM的安装
rpm [options] PACKAGE_FILE ...
-i:表示安装
-v:显示详细的安装过程
-h:表示安装进度,1个#表示2%
--nodeps:安装过程中可能依赖其他包,该选项表示略过依赖的包不安装
--test:不执行真正的安装过程,而仅报告依赖关系及冲突信息等
--replacepkgs:覆盖安装:重新安装并覆盖原有的文件
--force: 强制安装:
例如:以安装zsh软件包为例 [root@localhost ~]# rpm -ivh /yum/iso/zsh-4.3.10-7.el6.x86_64.rpm Preparing... ########################################### [100%] 1:zsh ########################################### [100%]
RPM的升级
rpm [options] PACKAGE_NAME...
-U:表示升级,若有旧版本的包也安装
-F:表示升级,若有旧版本的包则推出不安装
--oldpackage:降级到旧版本
-v:显示详细的安装过程
-h:表示安装进度
更新程序同安装一样,这里不再详解。
RPM的卸载
rpm [options] PACKAGE_NAME...
-e:卸载已安装的包
--nodeps:忽略依赖关系
--test:测试卸载
--allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之
注意:
1如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存。
2 安装时要知道安装包的绝对路径,卸载或升级时只要指定包名即可。
RPM的查询
-q PACKAGE_NAME
查询该软件包是否安装
例如: [root@localhost ~]# rpm -q zsh zsh-4.3.10-7.el6.x86_64
-qa 查询所有已安装的软件包
-qc PACKAGE_NAME
查询该软件包安装生成的配置文件
例如: [root@localhost ~]# rpm -qc zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc
-qd PACKAGE_NAME
查询该软件包安装生成的帮助文件
例如: [root@localhost ~]# rpm -qd zsh /usr/share/doc/zsh-4.3.10/BUGS /usr/share/doc/zsh-4.3.10/CONTRIBUTORS /usr/share/doc/zsh-4.3.10/FAQ /usr/share/doc/zsh-4.3.10/FEATURES /usr/share/doc/zsh-4.3.10/LICENCE /usr/share/doc/zsh-4.3.10/MACHINES /usr/share/doc/zsh-4.3.10/NEWS /usr/share/doc/zsh-4.3.10/README /usr/share/doc/zsh-4.3.10/completion-style-guide /usr/share/doc/zsh-4.3.10/zsh-development-guide /usr/share/doc/zsh-4.3.10/zshprompt.pl /usr/share/info/zsh.info-1.gz /usr/share/info/zsh.info-2.gz /usr/share/info/zsh.info-3.gz /usr/share/info/zsh.info-4.gz /usr/share/info/zsh.info-5.gz /usr/share/info/zsh.info.gz /usr/share/man/man1/zsh.1.gz /usr/share/man/man1/zshall.1.gz /usr/share/man/man1/zshbuiltins.1.gz /usr/share/man/man1/zshcalsys.1.gz /usr/share/man/man1/zshcompctl.1.gz /usr/share/man/man1/zshcompsys.1.gz /usr/share/man/man1/zshcompwid.1.gz /usr/share/man/man1/zshcontrib.1.gz /usr/share/man/man1/zshexpn.1.gz /usr/share/man/man1/zshmisc.1.gz /usr/share/man/man1/zshmodules.1.gz /usr/share/man/man1/zshoptions.1.gz /usr/share/man/man1/zshparam.1.gz /usr/share/man/man1/zshroadmap.1.gz /usr/share/man/man1/zshtcpsys.1.gz /usr/share/man/man1/zshzftpsys.1.gz /usr/share/man/man1/zshzle.1.gz
-qi PACKAGE_NAME
-ql PACKAGE_NAME
查询该软件包生成的各文件路径 例如: [root@localhost ~]# rpm -ql zsh /bin/zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc /usr/lib64/zsh /usr/lib64/zsh/4.3.10 /usr/lib64/zsh/4.3.10/zsh /usr/lib64/zsh/4.3.10/zsh/attr.so /usr/lib64/zsh/4.3.10/zsh/cap.so /usr/lib64/zsh/4.3.10/zsh/clone.so /usr/lib64/zsh/4.3.10/zsh/compctl.so /usr/lib64/zsh/4.3.10/zsh/complete.so
-qf PACKAGE_FILE
查询该文件是由那个软件包安装生成的
例如:/bin/ls是由那个软件包安装 [root@localhost ~]# rpm -qf /bin/ls coreutils-8.4-37.el6.x86_64
-q --changelog PACKAGE_NAME
查看某包制作时随版本变化的changelog信息
-q --requires PACKAGE_NAME
查询该安装包依赖的功能
-q --provides PACKAGE_NAME
查询该安装包提供的功能
-q --scripts PACKAGE_NAME
查询该软件包安装卸载时执行的脚本
若要查询未安装的包的信息则要加-p选项,其他同上。
校验
rpm –V PACKAGE_NAME...
例如:我把、/etc/zshrc中的#注释后结果如下 [root@localhost ~]# rpm -V zsh S.5....T. c /etc/zshrc
验证来源合法性和完整性
首先要导入软件包下载站点提供的公钥 rpm–import URL
接下来验证来源合法性和完整性
rpm-K [--nosignature] [--nodigest] PACKAGE_FILE ...
其中:--nosignature表示不做签名认证,即不做合法性验证
--nodigest表示不对软件包的完整性做验证
rpm管理器数据库:
位于 /var/lib/rpm
有两个选项:
--initdb: 初始化数据库,只有数据库不存在时才创建
--rebuilddb: 不管数据存不存在都会直接重建此库