Centos软件管理rpm包

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*”



posted @ 2019-03-25 21:32  绿鲤鱼与理理与驴  阅读(239)  评论(0编辑  收藏  举报