rpm包名
例:zip-3.0-11.el7.x86_64.rpm
zip(rpm包的名字)-3.0(版本号)-11(编译打包次数及).el7(代表>红帽企业版7).x86_64(CPU架构).rpm
每一个软件对应有自己的一个包,而比较大的软件打包成一个包的话就显得太大,捆绑了一些基本用不上的功能,也浪费了资源,所以这些软件一般会有分类。同一个软件里面,不带描述的是主包,描述为devel是开发包,utils和libs为其他子包。
rpm包的分类
Application-VERSION-ARCH.rpm: 主包 Application-devel-VERSION-ARCH.rpm 开发子包 Application-utils-VERSION-ARHC.rpm 其它子包 Application-libs-VERSION-ARHC.rpm 其它子包
centos系统管理程序包的rpm命令使用
安装
rpm -ivh PACKAGE_FILE ..
-i #安装必选(install)
-v #显示安装的过程(verbose)
-h #显示包安装的进度
--nodeps #忽略依赖关系
--replacepkgs | replacefiles #覆盖安装
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
示例:安装一个vsftpd包
[01:09:41root@localhost Packages]#rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:vsftpd-3.0.2-25.el7 ################################# [100%]
查询
rpm -q PACKAGE_NAME ..
-q #查询包是否已经安装了某包,只需输入包的名字不用路径及版本号等
-f #查看指定的文件由哪个程序包安装生成
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
-a #列出所有安装的包,不太记得包名字的时候可以配合q选项和通配符或者grep做模糊搜索--scripts:程序包自带的脚本
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY
示例:查询下vsftpd和tree是否曾经安装过了,如果能显示出来说明安装过了,否则提示没安装。
[01:14:52root@localhost Packages]#rpm -q vsftpd tree
vsftpd-3.0.2-25.el7.x86_64
tree-1.6.0-10.el7.x86_64
拓展知识:在centos系统有一个rpm的数据库目录“/var/lib/rpm/”,查询选项的数据来源于此,此目录的文件对于rpm来说至关重要,里面包含了所有包的元数据哈希值等,如果文件有丢失损坏将影响rpm的正常使用,比如你的rpm将无法感知到包是否已经安装导致无法安装 。
数据库重建:rpm --initdb|--rebuilddb
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作。
rebuilddb:重建已安装的包头的数据库索引目录
卸载(当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留)
rpm -evh PACKAGE_NAME ..
-e #卸载
--allmatches --nodeps --noscripts #卸载
示例:把vsftpd卸载掉。
[01:49:16root@localhost rpm]#rpm -evh vsftpd
Preparing... ################################# [100%]
Cleaning up / removing...
1:vsftpd-3.0.2-25.el7 ################################# [100%]
升级(涉及升级要慎重,可能会导致程序不稳定)
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
-U:upgrade安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”
-F:freshen安装有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作
--oldpackage:降级
--force: 强制安装
注意:
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留
包校验
第三方包建议要检查其合法性来源合法性,程序包的完整性包来源的合法性验证及完整性验证
完整性验证:SHA256
来源合法性验证:RSA
公钥加密
对称加密:加密、解密使用同一密钥
非对称加密:密钥是成对儿的
public key: 公钥,公开所有人
secret key: 私钥, 不能公开
导入所需要公钥
rpm -K|checksig rpmfile 检查包的完整性和签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”