一、RPM包管理的用途:
1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
3、可以在查询系统中的软件包是否安装以及其版本;
4、作为开发者可以把自己的程序打包为RPM 包发布;
5、软件包签名GPG和MD5的导入、验证和签名发布
6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;
二RPM 的使用权限:
RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;
三、RPM包的命名格式:
name-version-relase.arch.rpm
version: major.minor.release,同源代码
release: rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS
eg:
bash-4.2.3-3.centos5
分包机制:
核心包,主包:命名与源程序一致
bash-4.2.3-3.centos7.x86_64.rpm
子包:
bash-a-4.2.3-3.centos7.x86_64.rpm
bash-b-4.2.3-3.centos7.x86_64.rpm
bash-devel-4.2.3-3.centos7.x86_64.rpm
四、获取rpm包的途径:
1、发行的光盘或站点服务器
镜像:
http://mirrors.163.com
2、项目的官网
源代码
rpm包
3、很多第三方机构或个人制作并公开发布许多rpm包
http://rpmfind.net
http://rpm.pbone.net
4、可靠的途径: EPEL
Fedora-EPEL
五、rpm包的合法性验正:
1、包制作者制作完成之后会附加数字签名于包上;
2、包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。
验正过程:
前提:必须有可靠机制获取到包制作者的公钥;
1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;
2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;
六、安装程序包:
一般格式为
rpm [option] package_name
常用参数
-i: 表示安装
-h: 用#做进度为标记
-v: 表示输出
-vv: 显示调试信息
--test:仅作测试,并不真正安装
-e: 卸载程序包
-U: 升级或安装程序包
-F: 纯升级
--force: 强制升级
--nodeps: 不检查依赖性
如果程序包依赖于其它包:
1、解决依赖关系
2、忽略依赖关系,能安装上,但有可能无法运行;
注意: 不应该对内核执行升级操作,而是安装
系统允许多内核并存
七、查询操作:
-q: 查询某包是否安装
-qa: 查询所有已经安装的包
-qi: 查询包的描述信息
-ql: 查询某包安装生成了哪些文件
-qc: 查询某包安装生成了哪些配置文件
-qd: 查询某包安装生成了哪些帮助文件
-qf: 查询某文件是由哪个包安装生成的
-p: 对尚未安装的包执行查询
长和 (-qpi,-qpl,-qpc,-qpd)一起使用
-q --scripts:查询程序包的相关脚本
八、rpm包来源合法性及完整性检验:
前提:在当前系统上导入包的制作者的公钥
导入:
rpm --import /path/to/key_file
# rpm -qa gpg-pubkey*
显示所有已经导入的gpg格式的公钥
# rpm -qi gpg-pubkey-NAME
显示密钥的详细信息
检查包:安装过程中会自动执行
手动检查:
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
不检查包完整性:
rpm -K --nodigest
不检查来源合法性:
rpm -K --nosignature
数据库重建:
数据库目录:/var/lib/rpm
重建:
rpm --initdb:初始化
如果事先没有库,会新建一个;如果有,则不新建;
rpm --rebuilddb: 重建
直接重建,覆盖原有的数据库
九、例子
查询某包是否安装,并卸载,再安装
查看安装包的详细信息及生成目录
查看某包生成的配置目录及帮助信息
查询安装包的相关脚本
查看尚未安装的包的信息
数字证书的安装及验证,由于不同版本的GPG文件放置的位置可能不同,不过文件名大多是以
GPG-KEY来说明的,可以用find来查找,找到并导入:
互相学习
共同讨论
一起发展