Centos 7 系统上用rpm命令管理程序包
     安装、升级、卸载、查询、校验、数据库维护;
         安装:
             rpm {-i|--install} [install-options] PACKAGE_FILE …
                 -i:安装;
                 -v:显示详细信息;
                 -vv:你懂的;
                 -h:hash,就是以#显示安装进度,每个#表示2%的进度;
                     [install-options]:
                         --test:安装测试,不是真的安装;
                         --nodeps:忽略依赖关系安装;
                         --noscripts:安装时不运行rpm包自带的脚本;
                             --nopre:不运行安装前脚本;
                             --nopost:不运行安装后脚本;
                             --nopreun:不运行卸载前脚本;
                             --nopostun:不运行卸载后脚本;
                         --nodigest:安装时不检测完整性;
                         --nosignature:安装时不检测来源合法性;
                         --replacepkgs:重新安装;
         升级:
             rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
             rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
                 upgrade:安装时系统上已经安装了旧版本程序包,则做升级操作;如果没有则进行安装操作;
                 freshen:只在原有程序上进行升级操作;
                 --oldpackage:版本降级安装;
                 --force:强行安装;
                 Note:
                     linux 内核从4.0以后可以不用重启系统,之前的都不可以;所以为了防止升级不成功导致无法开机,linux支持多内核共存,直接安装新内核即可;
                     如果原程序包的配置文件在安装后有过修改,则升级时,新版本提供的同一个配置文件不会直接覆盖原来的配置文件,而是把新版本的重命名(FILENAME.rpmnew)后保留; 如果新旧相同则新版本的不会安装,依旧使用旧版本的配置文件;
         查询:
             rpm {-q|--query} [select-options] [query-options]
                 [select-options]:
                     -a:查看所有包;
                     -f:查看指定文件是由哪个程序包安装生成的;
                     -q /patch/to/package_file:针对尚未安装的程序包文件做查询操作;
                     --whatprovides CAPABILITY:查询指定的CAPABILITY是由哪个程序包提供的;
                     --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个程序包所依赖;
                 [query-options]:
                     --changelog:查询rpm包的changelog;
                     -c:查询程序包的配置文件;
                     -d:查询程序包安装后所生成的文档;
                     -i:查询程序包的信息;
                     -l:查询指定的程序包安装后所生成的所有文件;
                     --scripts:查询程序包自带的脚本片段;
                     -R:查询指定的程序包所依赖的CAPABILITY;
                     --provides:列出指定程序包提供的CAPABILITY;
                 常用用法:
                     -qi PACHAGE ;-qf FILE;-qc PACKAGE;-ql PACKAGE;-qd PACKAGE;
                     -qpi PACKAGE_FILE;-qpl PACKAGE_FILE ;
                     -qa;
         卸载:
             rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
         校验:通过校验可以查询出来某个安装后的文件是否被修改过;
             rpm {-V|--verify} [select-options] [verify-options]
                 改变提示信息各个符号所代表的意思:       
                     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包用sha256或md5等单项加密算法计算出rpm程序包的摘要信息,然后用自己的私钥再加密计算出来的摘要信息,最后打包完成;用户可以通过使用制作者提供的公钥来解密摘要信息,然后跟自己用相同单项加密算法计算出来的摘要相对比,相同则说明来源合法并且数据包完整;公钥可以在权威的秘钥签发机构CA获得,但是一般不会有人为了rpm包而去注册一个CA证书,因为他是需要费用的,所以建议去官网这种比较权威的机构去寻找rpm程序包来下载安装;
             加密方法:
                 对称加密:加密、解密使用同一秘钥;
                 非对称加密:秘钥时成对儿 的,公私不同;
                     public key:公钥,公开的;
                     secret key:私钥,私有的;
             完整性验证:SHA256
             来源合法性验证:RSA(非对称加密)
             验证步骤:
                 倒入公钥:rpm --import /path/to/GPG-PUBKEY-FILE
                     centos 7 :/mnt/cdrom/RPM-GPG-KEY-CentOS-7
                         /mnt/cdrom:为安装光盘挂载点;
                 rpm -K /path/to/PACKAGES:直接检验rpm包的完整性,无需安装;
             rpm数据库:
                 所在位置:/var/lib/rpm
             重建数据库:
                 rpm [--initdb|--rebuilddb]  或者rpmdb [--initdb|--rebuilddb]  
                     initdb:初始化;
                         如果实现不存在则新建数据库,否则不进行任何操作;
                     rebuilddb:重建数据库;
                         无论当前是否存在,直接重新创建数据库;


                

注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删