linux程序包管理的实现,rpm包管理器

   rpm命令实现程序管理:

       安装:i,--install

       升级:-U,update,-F,--freshen

       卸载:-e,--erase

       查询:-q,--query

       校验:-V,--verify

       数据库维护:--builddb,--initdb

  安装,升级是要用 Package_File (zsh-4.3.11-4.el6.centos.2.x86_64.rpm )

  卸载,查询是要用 Package_name  (zsh)

  安装:

       rpm {-i|--install} [install-options] PACKAGE_FILE ...

       rpm -ivh  (一般安装过的rpm,在/etc目录下)

       [General-options] 

             -v:verbose,详细信息

            -vv:更详细的输出

       [install-options]

              -h:hash marks输出进度条;每个#表示2%的进度;

          --test:测试软件是否可以安装到用户的Linux环境中,检查是否有依赖性问题

        --nodeps:强制安装,不考虑依赖关系,但是装上所需软件后,可以造成软件无法

                    正常使用

   --replacepkgs:重新安装已安装过的软件

                  (如果原有软件的配置文件遭到你不小心的更改,首先你必须先删除原有的配置文件,然后再进行重新安装,这样就ok了)

例:首先找到自己的rpm包所在,然后查看,下面是我的光盘下的rpm包

wKiom1e9rfiTOmWNAAAGJQ7cCH0024.png-wh_50

wKiom1e9rjDx5jQ1AAAkjCVzs3Q548.png-wh_50

安装了一个包:

rpm -ivh zsh-4.3.11-4.el6.centos.2.x86_64.rpm 

wKioL1e9rrqRhhhDAAAVgSVz8j8632.png-wh_50

查看本机shell,可以看到多出一个zsh

wKioL1e9sOrC3HOUAAAJ-9KBP8E657.png-wh_50

安装完zsh生出的文件,可以用rpm -ql zsh查看

wKioL1e9sUGz99QFAAAWQVcNEPY648.png-wh_50

删除zsh,并且检查是否删除成功

wKioL1e9skDhDtLyAAAOJ7-bSJQ581.png-wh_50

rpm -ivh --test zsh-4.3.11-4.el6.centos.2.x86_64.rpm 

只准备不安装,如果有冲突,会提醒报错,下面无冲突

wKiom1e9s4STjSaxAAAWssYj6SA587.png-wh_50

升级:

     rpm -Uvh  -U:升级或安装

     rpm -Fvh  -F:升级

              --oldpackage:降级安装;

              --force:强制升级;

    注意:(1)不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核

          (2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

    

    卸载:

        rpm -e --allmatches --nodeps --test

               --allmatches:卸载所有匹配指定名称的程序包的各版本;

               --nodeps:忽略依赖关系

               --test:测试卸载,dry run模式

    查询:

         rpm -q [select-option][query-option]

    [select-option]:

            -a:查询所有已经安装过的包;

            -f:查询指定的文件由哪个程序包安装生成;

            -p:用于实现对未安装的程序包执行查询操作;

           

            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

    [query-option]

            --changelog:查询rpm的包的changelog;

            -l:程序安装生成的所有文件列表;

            -i:程序包相关信息,版本号,大小,所属的包组等;

            -c:查询指定的程序提供的配置文件

            -d:查询指定的程序包提供的文档

            --provides:列出指定的程序包提供的所有CAPABILITY

            -R:查询指定程序包的依赖关系

            --scripts:查看程序包自带的脚本片段

   校验:  

            rpm -V

       S file Size differs

           文件的容量大小被改变

       M Mode differs (includes permissions and file type)

           文件的类型或文件的属性(rwx)被改变

       5 digest (formerly MD5 sum) differs

           MD5指纹码内容改变

       D Device major/minor number mismatch

           设备的主/次代码改变

       L readLink(2) path mismatch

           Link路径改变

       U User ownership differs

           文件的所有者改变

       G Group ownership differs

           文件的所属主改变

       T mTime differs

           文件的创建时间改变

     

       c: 设置文件

       d: 文档

       g: “鬼”文件,通常是该文件不被某个文件所包含,较少发生

       l: 授权文件

       r: 自述文件


包来源合法性验证和完整性验证:

           来源合法性验证:

                 数字签名:

       

   重建数据库:

            rpm --rebuilddb

       RPM博主就总结到这里,我们下节再见,我的心愿是,世上再无心机婊。