您的位置:首页 > 产品设计 > 产品经理

RPM包管理功能全解

2017-10-25 13:57 169 查看
RPM包管理总结
一、 简介RPM全名是redhatpackage manage ,是用来管理软件的各种操作,包括安装、更新、删除、查询、认证。它最大的特点是将软件事先编译,然后打包成为RPM机制的包文件,并且包中记录了此软件在安装时需要的其他依赖软件。在安装时RPM会根据记录比较本地主机数据库中的记录是否满足依赖,若满足则安装,并且把此软件的信息也写入数据库,不满足则不予安装。

二、 RPM包命名格式RPM包分为主包和子功能包
主包:name-version-release.(os).arch.rpm
子包:name-function-version-release.(os).arch.rpm

name:包名
version:源码的版本号,version的格式为major.minor.release,major源代码的主版本号、minor为次版本号、release为源代码的发行次数release:rpm包的发行号
os:操作系统(可有可无)
arch:硬件架构,有i386、i486、i586、i686、x86_64、powerpc等,其中noarch指无硬件架构限制function:说明子包的功能特性 三、 RPM包的获取途径1、系统光盘或者或者官方文件服务器或者各个镜像站点http://mirrors.aliyun.com 阿里云镜像http://mirrors.sohu.com 搜狐镜像http://mirrors.163.com 网易镜像2、项目的官方站点3、第三方组织EPEL:ExtraPackages for Enterprise Linux(企业版Linux附加软件包)搜索引擎 http://pkgs.org http://rpmfind.net http://rpm.pbone.net
四、 rpm命令的使用rpm命令按照用途可以分为 安装、升级、卸载、查询、校验、数据库维护这六个区块,下面我们就对各个区块的常用使用方法进行说明1、安装rpm {-i|--install} [install-option] PACKAGE_FILE(包完整文件名)… -i或者—install为安装选项,一般会配合-v、-h参数一同使用。-v为显示具体的安装信息,-h为显示安装进度。[install-option] 为安装选项下具体功能选项,常用的有
--nodeps安装时忽略软件的依赖关系强制安装
--nodigest安装时不验证包数据的完整性
--nosignature安装时不验证包的数字签名即不验证包的来源合法性
--noscripts禁止软件在安装前或后自动执行某些脚本
--replacefiles如果在安装时遇到某个文件已经安装,则覆盖该文件
--replacepkgs如果在安装时遇到该软件已经安装,则覆盖安装
--force强制安装,--replacefiles和—replacepkgs的综合体
--justdb只更新软件在数据库中的信息
--test不安装只是测试软件能否安装到当前环境,若不能会给出提示
--prefix 将软件安装到想要的路径中,后面接路径名
2、更新rpm {-U|--upgrade} [install-options]PACKAGE_FILE(包完整文件名) ...rpm {-F|--freshen} [install-options]PACKAGE_FILE(包完整文件名) ...同安装一样,更新也会和-h、-v选项一同使用
-Uvh后面接的软件若不存在,则予以安装,存在则更新
-Fvh后面接的软件若不存在,则不安装,存在则更新
3、卸载rpm {-e|--erase} [erase-option] PACKAGE_NAME(已安装的软件名) ... [erase-option]
--allmatches卸载所有匹配后面接的软件名的程序包
--nodeps忽略依赖关系,强制卸载。但卸载后依赖此软件的其他软件会不能使用
--noscripts在卸载过程前或后不执行任何脚本
--test只测试,不真正卸载
4、查询rpm {-q|--query} [select-options][query-options]rpm在查询时是查询/var/lib/rpm这个数据库中的信息,并且rpm还可以查询未安装的rpm文件内的信息 [query-option]
-i列出该软件的详细信息
-l列出软件安装生成的所有文件列表
-c列出该软件的配置文件
-d列出该软件的说明文件
-R查询该软件的依赖关系
-s列出软件包中所有文件的状态
--provides列出这个软件包提供的功能
--scripts列出这个软件包在安装或卸载前后可以运行的脚本
--changelog显示软件包的历史更改信息
[select-options]
-a列出所有已经安装的软件
-f FILE后面接文件名,查询该文件属于哪个程序
--whatprovides CAPABILITY查询指定的CAPABILITY由哪个程序包提供
--whateequires CAPABILITY查询哪些程序包依赖此CAPABILITY
[root@jojohyj ~]# rpm-q --whatprovides zsh 由程序名查找rpm包名zsh-4.3.11-4.el6.centos.2.x86_64 5、校验rpm {-V|--verify} [select-options] [verify-options] [verify-options]
--nodeps不验证包的依赖关系
--nodigest不验证包的完整性
--nosignature不验证包的来源可靠性
-f FILE验证某个文件的完整性
一般我们校验时都最好都检查下,所以直接使用rpm -V package_name 即可。校验后无任何显示输出,说明包的完整性;如果有变化,会显示具体的变化项目S:文件容量被改变M:文件属性被改变5:MD5和被改变,即数据的内容被改变D:设备的主、次代码被改变L:link路径被改变U:文件属主被改变G:文件属组被改变T:文件的修改时间被改变P:功能被改变 [root@jojohyj ~]# rpm-V logrotate..5....T. c /etc/logrotate.conf 显示logrotate这个程序中的/etc/logrotate.conf这个文件的数据内容和修改时间有过变动
五、 rpm包来源合法性及包完整性验证机制rpm包的制作者通过单向加密技术提取出包数据的特征码,特征码用于确保包数据的完整性,如果包中数据被改动,那特征码也一定会发生改变。之后包制作者使用非对称加密技术,利用其中的私钥对之前产生的特征码进行加密,此加密被称为数字签名,并公布与私钥对应的公钥给下载者,由于公钥只能解密对应的私钥,若数字签名被改动,则公钥不能解密,说明下载来源出现问题,从而保证了rpm包的来源合法性。之后下载者通过同样的单向加密技术对rpm包提取特征码,如果提取出的特征码和原特征码一致,就说明rpm包中的数据没有被改动过,从而保证了rpm包的数据完整性
导入包制作者的公钥,这里使用的是centos7的公钥位置rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7对于其他版本的GPG密钥位置,我们可以对GPG-KEY进行搜索位置来确定后再安装find /etc -name “*GPG-KEY*” 或者 locate GPG-KEY导入完成后,我们可以查看密钥的具体软件名称和它的基本信息 [root@jojohyj ~]# rpm -qa | grep pubkey 查找安装后的公钥软件名称gpg-pubkey-f4a80eb5-53a7ff4b[root@jojohyj ~]# rpm -qigpg-pubkey-f4a80eb5-53a7ff4b 查询公钥软件的信息Name : gpg-pubkeyVersion : f4a80eb5Release : 53a7ff4bArchitecture: (none)Install Date: Tue 30 May 2017 08:23:05 PM CSTGroup : Public KeysSize : 0License : pubkeySignature : (none)Source RPM : (none)Build Date : Mon 23 Jun 201406:19:55 PM CSTBuild Host : localhostRelocations : (not relocatable)Packager : CentOS-7 Key(CentOS 7 Official Signing Key) <security@centos.org>Summary : gpg(CentOS-7 Key(CentOS 7 Official Signing Key) <security@centos.org>)
我们在安装rpm包时,会自动执行验证签名,我们也可以手动验证rpm -K /path/to/rpmpackage_file[root@jojohyj ~]# rpm -K zsh-5.0.2-28.el7.x86_64.rpm zsh-5.0.2-28.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK 签名没有问题 [root@jojohyj ~]# rpm -K zsh-4.3.11-4.el6.centos.2.x86_64.rpm zsh-4.3.11-4.el6.centos.2.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS:(MD5) PGP#c105b9de) 公钥没有安装,所以检查签名有问题

六、 rpm数据库重建通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;有时rpm 系统出了问题,不能安装和查询,可能会是数据库出现问题,可以使用下面命令重建rpm --initdb:如果事先没有数据库,则会新建一个,如果已经存在数据库则不进行任何操作rpm –rebuilddb:重新构建数据库,会覆盖原有数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux