linux rpm程序包管理

程序包的组成

二进制程序
        /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /usr/local/APP/{bin,sbin}         
        注意:
            有些特殊的应用程序放置于libexec目录中
            有些第三方应用默认安装于/opt目录
库文件(开发库、运行库)
        /lib64, /usr/lib64, /usr/local/lib64, /usr/local/APP/lib
配置文件
        /etc, /usr/local/APP/etc或conf目录
帮助文件
        /usr/share/man, /usr/local/share/man, /usr/local/APP/man

帮助文件:man, info, 
        doc: README, INSTALL, ChangeLog

 ldd:
        ldd /path/to/binary_file

程序包管理

数据库
        程序名及版本
        依赖关系:X --> Y,Z 
        功能性说明
        安装生成的各文件路径及校验码
程序的组成清单
        文件清单
        安装卸载时运行的脚本

功能:将编译好的程序打包成一个文件或有限的几个文件,可用于实现安装、卸载、升级、查询等功能; 

rpm 包管理器

安装程序包

rpm [option] /path/to/package_file 
        -i: install
        -v:
        -vv:
        -vvv:
        -h:

        组合选项:-ivh

        --test: 仅作测试,有真正执行安装

如果依赖于其它包:
        1、解决依赖关系
        2、忽略依赖关系
能安装上,但有可能无法运行;
        --nodeps

重新安装:
        --replacepkgs

如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew                                        

卸载程序包

rpm [option] package_name
	-e: erase

	如果被其它包所依赖:
			1、将依赖于此包的所有包一并卸载
			2、忽略依赖关系
			能卸载,但依赖于此包程序包可能会运行不正常;
				--nodeps

	如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如:warning: /etc/zprofile saved as /etc/zprofile.rpmsave

升级程序包

rpm [option] /path/to/package_file
	1、升级或安装
	  -Uvh

	2、纯升级
	   -Fvh

	    --force: 强制升级

	注意:不应该对内核执行升级操作,而是安装。因为系统允许多内核并存。

查询操作

查询某包是否安装
		rpm -q package_name...

查询所有已经安装的包
		rpm -qa 

		按条件过滤:rpm -qa | grep 'PATTERN'

查询包的描述信息
		rpm -qi package_name

查询某包安装生成了哪些文件
		rpm -ql package_name

查询某包安装生成了哪些配置文件
		rpm -qc package_name
查询某包安装生成了哪些帮助文件
		rpm -qd package_name

查询程序包的相关脚本
		rpm -q --scripts package_name

脚本有四类:
		preinstall:安装前脚本
		postinstall: 安装后脚本
		preuninstall: 卸载前脚本
		postuninstall: 年前后脚本

查询某文件是由哪个包安装生成的
		rpm -qf /path/to/some_file
对尚未安装的包执行查询
		rpm [option] /path/to/package_file
			-qpi
			-qpl
			-qpc
			-qpd

校验:用于检查包安装生成的文件属性是否发生变化

rpm -V package_name

	S file Size differs
	M Mode differs (includes permissions and file type)
	5 digest (formerly MD5 sum) differs
	D Device major/minor number mismatch
	L readLink(2) path mismatch
	U User ownership differs
	G Group ownership differs
	T mTime differs
	P caPabilities differ

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

数据库重建

rpm --initdb:初始化
	如果事先没有库,会新建一个;如果有,则不新建;

rpm --rebuilddb: 重建
	直接重建,覆盖原有的数据库

  

  

  

 

  

 

posted @ 2019-01-29 19:52  Coolc  阅读(296)  评论(0编辑  收藏  举报