|
31、程序包管理之二-rpm
2021年09月17日 |
|
31.1 Centos系统上使用rpm管理安装包 安装,卸载,更新,查询,校验,数据库维护 31.1.1 安装: rpm {-i|–install} [install options] package -v:verbos -vv:显示更多的详细信息 -h:以#显示程序包管理执行进度,每#表示2%的进度 rpm -ivh packagefile [install-option] –test:测试安装,但不真正执行安装过程 –nodeps:忽略依赖关系 –replacepkgs:重新安装 –nosignature:不检查来源合法性 –nodigest:不检查包完整性; –noscripts:不执行程序包脚本片段preun %pre:安装前脚本 –nopre %post:安装后脚本 –nopost1 %preun:卸载前脚本 –nopreun %postun:卸载后脚本–nopostun [root@localhost ~]# rpm -qa | grep zsh [root@localhost ~]# cd /media/cd-rom/Packages/ [root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm –test Preparing… ################################# [ [root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm Preparing… ################################# [100%] Updating / installing… 1:zsh-5.0.2-28.el7 ################################# [100%] [root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm –replace –replacefiles –replacepkgs [root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm –replace –replacefiles –replacepkgs [root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm –replacepkgs Preparing… ################################# [100%] Updating / installing… 1:zsh-5.0.2-28.el7 ################################# [100%] [root@localhost Packages]# 31.1.2 升级 rpm {-U|–upgrade} [install options] package rpm {-F|–freshen} [install options] package upgrade:安装有旧版程序包,则升级;如果不存在旧版程序包,则安装 freeshen:安装有旧版程序包,则升级;如果不存在旧版程序包,则不执行 rpm -Uvh package rpm -fvh package –oldpackage:降级 –force:强行升级 [root@localhost Packages]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm Preparing… ################################# [100%] package zsh-5.0.2-28.el7.x86_64 is already installed [root@localhost Packages]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm [root@localhost Packages]# rpm -e zsh [root@localhost Packages]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm [root@localhost Packages]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm Preparing… ################################# [100%] Updating / installing… 1:zsh-5.0.2-28.el7 ################################# [100%] [root@localhost Packages]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm –force Preparing… ################################# [100%] Updating / installing… 1:zsh-5.0.2-28.el7 ################################# [100%] [root@localhost Packages]# 注意:(1)不要对内核做升级操作;linux支持多内核版本并存,因此直接安装新版本内核即可 (2)如果对元程序包的配置文件安装后曾被修改,升级时,新版本提供的配置文件并不会直接覆盖旧版本的配置文件,而是把新版本的文件重命名后保存(filename.rpmnew) 31.1.3 查询 rpm {-q|–query} [select options] [quire options] [select options] -a:所有包 -f:查看指定文件由那个程序包安装生成 -p /PATH/TO/PACKAGE:针对尚未安装的程序文件做查询操作 –whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供 –whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖 [quire options] –changelog:查询rpm包的changelog -c:查询程序的配置文件 -d:查询程序的文档 -i:information -l:查看指定程序包安装后生成的所有文件 –scripts:查看程序包自带的脚本片段 -R:查询指定的程序包所依赖的CAPABILITY –provides:列出指定程序包所提供的CAPABILITY 用法: -qi PACKAGE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE, -qf FILE, -qpi PACKAGE_FILE,-qpl PACKAGE_FILE,… -qa [root@localhost Packages]# rpm -qf zsh error: file /media/cd-rom/Packages/zsh: No such file or directory [root@localhost Packages]# rpm -qi zsh Name : zsh Version : 5.0.2 Release : 28.el7 Architecture: x86_64 Install Date: Mon 02 Aug 2021 11:11:00 PM EDT Group : System Environment/Shells Size : 5855982 License : MIT Signature : RSA/SHA256, Thu 10 Aug 2017 04:28:17 PM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : zsh-5.0.2-28.el7.src.rpm Build Date : Wed 02 Aug 2017 06:52:37 AM EDT Build Host : c1bm.rdu2.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://zsh.sourceforge.net/ Summary : Powerful interactive shell Description : The zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more. [root@localhost Packages]# rpm -qf /bin/zsh zsh-5.0.2-28.el7.x86_64 [root@localhost Packages]# rpm -qpi zsh-5.0.2-28.el7.x86_64.rpm Name : zsh Version : 5.0.2 Release : 28.el7 Architecture: x86_64 Install Date: (not installed) Group : System Environment/Shells Size : 5855982 License : MIT Signature : RSA/SHA256, Thu 10 Aug 2017 04:28:17 PM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : zsh-5.0.2-28.el7.src.rpm Build Date : Wed 02 Aug 2017 06:52:37 AM EDT Build Host : c1bm.rdu2.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://zsh.sourceforge.net/ Summary : Powerful interactive shell Description : The zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more. [root@localhost Packages]# rpm -qa | head -3 cups-pk-helper-0.2.6-2.el7.x86_64 teamd-1.25-5.el7.x86_64 ipxe-roms-qemu-20170123-1.git4e85b27.el7.noarch [root@localhost Packages]# 31.1.4 卸载: rpm {-e|–erase} PACKAGE_NAME [root@localhost Packages]# rpm -e zsh [root@localhost Packages]# rpm -qa | grep zsh [root@localhost Packages]# 31.1.5 检验: 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 [root@localhost Packages]# vim /usr/share/doc/zsh-5.0.2/MACHINES [root@localhost Packages]# rpm -V zsh S.5….T. d /usr/share/doc/zsh-5.0.2/MACHINES missing d /usr/share/man/man1/zshzle.1.gz [root@localhost Packages]# 31.1.6 包来源合法性及完整性验证 完整性验证:SHA256 来源合法性验证:RSA 数据加密方法: (1)对称加密:加密和解密使用同一个密码 (2)公钥加密(非对称加密):每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key),一个用来加密,一个用来解密 (3)单向加密,散列加密(可以由明文取得密文,但不能由密文取得明文):提取数据特征码,常用于数据完整性校验 单向加密特点 雪崩效应(蝴蝶效应):初始条件的微小改变会引起结果的巨大改变 [root@Daniel-R480 ~]# cp /etc/inittab ./ [root@Daniel-R480 ~]# md5sum inittab 66a88d6c4d693170753ea3382f8bc150 inittab [root@Daniel-R480 ~]# vim inittab -bash: vim: command not found [root@Daniel-R480 ~]# vi inittab [root@Daniel-R480 ~]# md5sum inittab 568c018aebe36cf208fc32c465e4b120 inittab 定长输出 MD5:Message Digest, 128位定长输出 SHA1:Secure Hash Algorithm, 160位定长输出 密码前面一般会有加上的杂质(salt),防止相同用户的密码显示的密文相同 31.1.7 导入所需要的公钥 rpm -import /PATH/FROM/GPG-PUBKEY-FILE CentOS 7 发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7 [root@localhost cd-rom]# rpm -import RPM-GPG-KEY-CentOS-7 [root@localhost cd-rom]# 31.1.8 数据库重建 rpm {–initdb|–rebuilddb} initdb:初始化 如果事先不存在数据库则新建之,否则,不执行任何操作 rebuilddb:重建 无论当前存在与否,直接重新创建数据库; [root@localhost cd-rom]# rpm –initdb [root@localhost cd-rom]# rpm –rebuilddb [root@localhost cd-rom]# |