一.rpm命令使用
1.rpm命令
1.CentOS系统上rpm命令管理程序包:安装、升级、卸载、查询和校验、数据库维护
2.rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
1)安装:-i, --install
2)升级:-U, --update, -F, --freshen
3)卸载:-e, --erase
4)查询:-q, --query
5)校验:-V, --verify
6)数据库维护:–builddb, --initdb
2.rpm安装
1.rpm {-i|–install} [install-options] PACKAGE_FILE …
1)通常使用-i选项(安装)
2)-v选项显示详细信息
3)-h选项:hash marks输出进度条;每个#表示2%的进度
4 -vv:显示更详细的信息
5)- -test:测试安装,检查并报告依赖关系及冲突消息等,并不会真的安装
6)- -nodeps:忽略依赖关系;不建议
7)- -replacepkgs:重新安装
8)- -nosignature:不检查包签名信息,不检查来源合法性
9)- -nodigest:不检查包完整性信息
3.rpm可以自带脚本
1.四类:- -noscripts(四类都不执行)
1)preinstall:安装过程开始之前运行的脚本,%pre , --nopre选项不执行
2)postinstall:安装过程完成之后运行的脚本,%post , --nopost选项不执行
3)preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun 选项不执行
4)postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun选项不执行
4.升级
1.一般使用rpm -Uvh或-Fvh**{-U|–upgrade}/ {-F|–freshen}** [install-options] PACKAGE_FILE …
- -U选项:升级或安装
[root@sakura Packages]# rpm -ivh adcli-0.8.1-3.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:adcli-0.8.1-3.el7 ################################# [100%]
[root@sakura Packages]# rpm -Uvh /root/adcli-0.8.1-6.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:adcli-0.8.1-6.el7 ################################# [ 50%]
正在清理/删除...
2:adcli-0.8.1-3.el7 ################################# [100%]
2)-F选项:仅升级,若未安装则不会升级
3)- -oldpackage:降级选项
4)- -force:强制升级
ps:1.不要对内核进行升级操作,linux支持多内核版本并存,可以直接安装新版本内核
2.如果某源程序包的配置文件安装后被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供。
5.卸载
1.rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
1)- -allmatches:卸载所有匹配指定名称的程序包的各版本
2)- -nodeps:忽略依赖关系
3)- -tesh:测试卸载,dry run模式,不会删除现有程序包
6.查询
1.用法:rpm {-q|–query} [select-options] [query-options]
2.选择选项: [select-options]
1)-q :查询指定的程序包是否已经安装,及其版本
2)-a或- -all:查询所有已经安装过的程序包,可配合grep使用
3)-f file:查询指定的文件由哪个程序包安装生成
4)-p或- -package package_file:实现对未安装的程序包进行查询操作
5)- -whatprovides CAPABILITY:查询指定的功能由哪个程序包提供
6)- -whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
3.[query-options]查询选项
1)-i,,–info:程序包相关的信息,版本号、大小、所属的包组,等
2)-l, --list:程序安装生成的所有文件列表
3)-c,- -configfiles:查询指定的程序包提供的配置文件
4)-d,- -docfiles:查询指定的程序包提供的文档
5)- -changelog:查询程序包的改变日志
6)- -provides:列出指定的程序包提供的所有功能
7)-R或- -requires:查询指定程序包的依赖关系
8)- -scripts:查看程序包自带的脚本片段
7.校验
1.语法:rpm {-V|–verify} [select-options] [verify-options]
1)使用rpm -ql查询到zsh的文件列表后在其文件中加入了一行#
ps:校验时各字段的含义
1)S file Size differs:文件大小是否发生改变
2)M Mode differs (includes permissions and file type):文件类型或文件属性是否发生改变
3)5 digest (formerly MD5 sum) differs:数据指纹信息的内容已经改变
4)D Device major/minor number mismatch:设备的主,次代码发生改变
5)L readLink(2) path mismatch:Link路径已经发生改变
6)U User ownership differs:文件所属人发生改变
7)G Group ownership differs:文件所属组发生改变
8)T mTime differs:文件的创建时间发生改变
9)P caPabilities differ:功能发生改变
2.程序包来源合法性和完整性验证
1)来源合法性:程序包制作完成后,制作人通过对程序包的数据特征码进行加密,生成私钥和公钥。在使用者安全取得公钥后,即可以与私钥验证进行来源合法性的验证。
2)完整性验证:使用者使用与制作者相同的算法,对程序包数据的特征码进行计算,若与制作者的程序特征码相同,即可验证其完整性。
3.获取并导入信任的抱制作者的秘钥:
1)对于centos发行版来说,其秘钥在安装完系统后及存在于:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7处
2)使用rpm - -import进行秘钥导入:
ps:秘钥成功导入后安装及不会提示警告信息
3)获取秘钥也可以挂载发行版光盘,挂载后其中也存在秘钥RPM-GPG-KEY-CentOS-7
4.验证
1)安装此组织签名的程序时,会自动执行验证
2)手动验证:rpm -K PACKAGE_FILE,若导入正确秘钥后,会显示其合法性
8.数据库重建
1.rpm管理器数据库路径:/var/lib/rpm/,通过此处的数据库进行查询操作
2.获取帮助
1)centos6:man rpm
2)centos7:man rpmdb3.语法:rpm {–initdb|–rebuilddb} [–dbpath DIRECTORY] [–root DIRECTORY]
1)- -initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
2)- -rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
ps:删除数据库进行重建,建议不要使用…