31、程序包管理之二-rpm

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]# 

Comments Closed.