RPM软件包管理

             

                              RPM 软件包管理

1、rpm软件包管理:

       本章内容:

           软件运行环境

           软件包基础

           rpm包管理

           yum管理

           定制yum仓库

           编译安装

  Linux程序包管理:

       API:Application program interface (应用编程接口)

       ABI:Application binary interface  (应用二进制接口)

           API:Application program interface

               程序源代码—->预处理—->编译——->汇编——–>链接

             静态编译 和 共享编译

              ABI:Application binary interface

                 windows 和 Linux 不兼容

                 Windows PE

                 Linux ELF

                 库级别的虚拟化:

                 Linux:wine

                 Windows:cywin

      2、包管理器:

              二进制应用程序的组成部分:

                  二进制文件;

                  库文件;

                  配置文件;

                  帮助文件;

              程序包管理器:

                  debian:deb文件,dpkg包管理器

                  redhat:rpm文件,rpm包管理器

                  S.U.S.E:rpm文件,rpm包管理器

                  gentoo:ports文件

     3、包命名:

              使用rpm机制封装的软件包文件一般使用“软件名-软件版本-发布次数.硬件平台类型.rpm”的文件名形式:

              例如:bash-4.2.46-12.el7.x86_64.rpm

                    basesystem-10.0-7.el7.centos.noarch.rpm

              其中硬件平台通常为“i386 i586 i686 X86_64 或 noarch(不区分硬件平台)”

       4、包命名和工具:

                主包:libasyncns-0.8-7.el7.x86_64.rpm

                支包:libasyncns-devel-0.8-7.el7.i686.rpm

                支包命名:function  devel  utils libs

                rpm包之间可能存在依赖关系,甚至循环依赖;

                解决依赖包管理工具:

                     yum:rpm包管理器的前端工具

                     apt-get:deb包管理器的前端工具

                     zypper:suse上的rpm前端管理工具

                     dnf:Fedora 22+ rpm包管理器前端管理工具

         5、库文件:

               查看二进制程序所依赖的库文件:

               ldd  /PATH/TO/BINARY_FILE

               管理及查看本机装载的库文件:

               ldconfig

               /sbin/ldconfig -p 显示本机已经缓存的所有可用库文件;

           6、程序包管理器:

                  功能:将编译好的应用程序的各组成文件打包成一个或几个程序文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作;

                 (1)程序包的组成清单(每个程序包都单独实现);

                       文件清单

                       安装或卸载时运行的脚本

                  (2)数据库(公共)

                       程序包的名称和版本

                       依赖关系

                       功能说明

                       安装生成的各文件路径及校验码信息

                       /var/lib/rpm:rpm包的数据库文件存放路径;

                  示例:

                  rpm包的数据库文件

                    [root@centos7 rpm]# ll

                    total 70248

                    -rw-r–r–. 1 root root  4120576 ago 19 05:55 Basenames

                    -rw-r–r–. 1 root root    16384 ago 19 05:43 Conflictname

                    -rw-r–r–. 1 root root   311296 ago 23 06:59 __db.001

                    -rw-r–r–. 1 root root    90112 ago 23 06:59 __db.002

                    -rw-r–r–. 1 root root  1318912 ago 23 06:59 __db.003

                    -rw-r–r–. 1 root root  1130496 ago 19 05:55 Dirnames

                    -rw-r–r–. 1 root root    32768 ago 19 05:55 Group

                    -rw-r–r–. 1 root root    24576 ago 19 05:55 Installtid

                    -rw-r–r–. 1 root root    81920 ago 19 05:55 Name

                    -rw-r–r–. 1 root root    40960 ago 19 05:55 Obsoletename

                    -rw-r–r–. 1 root root 61956096 ago 19 05:55 Packages

                    -rw-r–r–. 1 root root  2154496 ago 19 05:55 Providename

                    -rw-r–r–. 1 root root   536576 ago 19 05:55 Requirename

                    -rw-r–r–. 1 root root   135168 ago 19 05:55 Sha1header

                    -rw-r–r–. 1 root root    81920 ago 19 05:55 Sigmd5

                    -rw-r–r–. 1 root root     8192 ago 19 05:55 Triggername

                    [root@centos7 rpm

                  

            7、获取rpm程序包的途径:

                    (1)系统发行版的光盘或官方的文件服务器(或镜像站点):

                          http://mirrors.aliyun.com

                          http://mirrors.sohu.com

                          http://mirrors.163.com

                     (2)项目的官方站点

                     (3)第三方组织:

                            搜索引擎:

                              http://pkgs.org

                              http://rpmfind.net

                              http://rpm.pbone.net

                      (4)自己制作rpm包:

  8、rpm包管理:

   centos系统上使用rpm命令管理程序包:

       安装、卸载、升级、查询、校验、数据库维护等;

   rpm  [options]  PACKAGE_FILE …

   安装: -i 在当前系统中安装(install)一个新的rpm软件包;

     rpm  -ivh  PACKAGE_FILE……

   -U:检查并升级系统中的某个软件包,若该软件包原来未安装,则等同于-i选项;

   -e:卸载指定名称的软件包;

   -F:检查并更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装;

   –force 强制安装某个软件包,当需要替换现在已安装的软件包及文件、或者安装一个比当前使用的软件版本更旧的软件时,可以使用此选项;

   –nodeps在安装、升级或卸载一个软件包时,不检查与其他软件包的依赖关系;

   -h:在安装或升级软件包的过程中,以“#”号显示安装进度;

   -v:显示软件安装过程中的详细信息;

   -vv:显示软件安装过程中更详细的信息;

   -V:校验安装后的文件有没有被篡改;

   –test:测试安装,但不真正执行安装;

   –nosignature:不检查来源合法性;

   –nodigest:不检查包完整性;

   –nosciptis:不执行程序包脚本片段;

         %pre:安装前脚本:–nopre

         %post:安装后脚本:–nopost

         %preun:卸载前脚本:–nopreun

         %postun:卸载后脚本:–nopostun

   –oldpackage:降级程序包;

  升级:

      rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

      rpm {-F|–freshen} [install-options] PACKAGE_FILE …

     -U:升级或安装;

     -F:升级;

     rpm -Uvh PACKAGE_FILE

     rpm -Fvh PACKAGE_FILE

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

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

卸载:

    rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …

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

          –nodeps:忽略依赖关系;

          –test:测试卸载,dry run模式;

rpm查询:

   rpm命令的查询功能主要通过“-p”选项实现,主要针对当前系统中的已经安装的软件包;

   rpm {-q|–query} [select-options] [query-options]

   [select-options]

     PACKAGE-NAME:查询指定的程序包是否已经安装,及其版本;

       -qa:–all 查询所有已经安装过的rpm包;

       -qf:file 查询指定的文件是由哪个程序包安装的;

       -qi:info 查询指定软件包的名称、版本、许可协议、用途描述等详细信息;

       -ql:list 显示指定的软件包在当前系统中安装的所有目录、文件列表;

       -qc:configfile 显示指定软件包在当前系统中安装的配置文件列表;

       -qd:docfiles 显示指定软件包在当前系统中安装的文档文件列表;

   使用“-qp”选项时,需要使用rpm包文件作为参数,主要查询系统中未安装的软件包信息;

        -qpi:查询指定软件包的名称、版本、许可协议、用途描述等详细信息;

        -qpl:查询指定的软件包在当前系统中准备安装的所有目录、文件列表;  

        -qpc:查询定软件包在当前系统中准备安装的配置文件列表;

        -qpd:查询指定软件包在当前系统中准备安装的文档文件列表; 

校验rpm包:

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

       来源合法性验证:

       完整性验证:

    获取并导入信任的包制作者的秘钥:

          对于centos发行版来说导入公钥的方法:

          [root@centos7 ~]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

          验证:

            安装此组织签名的程序时,会自动执行验证;

            手动验证:rpm -k PACKAGE_FILE

            [root@centos7 Packages]# rpm -K zsh-5.0.2-7.el7.x86_64.rpm 

            zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

rpm数据库重建:

    rpm 管理器数据库路径:/var/lib/rpm

    获取帮助:

        centos6:man rpm   

        centos7:man rpmdb  

        rpm {–initdb|–rebuilddb} [-v] [–dbpath DIRECTORY] [–root DIRECTORY]

             –initdb :初始化数据库,当前无任何数据库可初始创建一个新的,当前有时不执行任何操作;

             –rebuilddb :重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

             rpm  –initdb

             rpm  –rebuilddb

   yum创建:

        centos : yum dnf

        yum repository : yum repo

        存储了众多rpm包,以及包的相关的元数据文件(放置于特定的目录下:repodata):

        文件服务器:

            ftp://

            http://

            nfs://

            file:///

         yum客户端:

            配置文件:

            /etc/yum.conf  :yum主配置文件为所有仓库提供公共配置

            /etc/yum.repos.d/*.repo :为仓库的指向提供配置

           yum仓库指向的定义:

            [repositoryID]

            name=some name for this repository

            baseurl=url://path/to/repository

            enabled={1|0}

            gpgcheck={1|0}

            enabedgroups={1|0}

            failovermethod={roundrobin|priority}

                 默认为:roundrobin,意为随机挑选;

            cost=

                默认为:1000

       示例:

             1 [base]

             2 name=base

             3 baseurl=http://10.1.0.1/cobbler/ks_mirror/7/

             4         file:///mnt

             5 enabled=1

             6 gpgcheck=1

             7 gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/

             8 

             9 

            10 [fedora]

            11 name=fedora

            12 baseurl=http://10.1.0.1/fedora-epel/7/x86_64/

            13 enabled=1

            14 gpgcheak=0

            15

     yum命令的用法:

            yum [options] [command][package…..]

          yum-config-manager  –disable “仓库名”  禁用指定的仓库

          yum-config-manager  –enable  “仓库名” 启用指定的仓库

          示例:

          [root@centos7 yum.repos.d]# yum-config-manager –disable base

          [root@centos7 yum.repos.d]# yum-config-manager –enable base

          显示仓库列表:

          repolist [all|enable|disable]

          [root@centos7 yum.repos.d]# yum repolist

          Loaded plugins: fastestmirror, langpacks

          repo      repo name                 status

          base        base                    9.007

          fedora       fedora                     0

          repolist: 9.007

          [root@centos7 yum.repos.d]# 

          显示所有程序包:

          list

          示例:

          [root@centos7 yum.repos.d]# yum list

          yum安装程序包:

          install 

          reinstall 重新安装;

          示例:

         升级程序包:

          update

          检查可用升级:

          check-update

          卸载程序包:

          remove 

          查看程序包information

          info

          查看指定的特性(可以是某文件)是由哪个程序包所提供;

          provides

          清理本地缓存:

          clean

          构建缓存:

          makecache

          搜索:

          search  string1 string2

          以指定的关键字搜索程序包名及summary信息;

          查看指定包所依赖的capabilities

          deplist package1

          查看yum事物历史

          history

          安装及升级本地程序包:

          localinstall

          localupdate

          包租管理的相关命令:

          groupinstall

          groupupdate

          grouplist

          groupremove

          groupinfo

编译安装:

      解包、配置、编译、安装

第一步:configure脚本

        选项:指定安装位置、指定启用的特性

              –help:获取其支持使用的选项

        选项的分类:

             安装路径设定:

               –prefix=/path:指定默认安装位置,默认为/usr/local

               –sysconfdir=/path:配置文件的安装路径

                system types :支持交叉编译;

          optional features :可选特性

                 –disable-feature

                 –enable-feature[=arg]

          optional packages:可选包

                 –with-packsge[=arg]依赖包

                 –without-package禁用依赖关系

  第二部:make

  第三部:make  install

  安装后的配置:

       (1)二进制程序目录导入至path环境变量中

            编辑文件/etc/profile.d/NAME.sh

            export PATH=/path/to/bin:$PATH

        (2)导入库文件路径

              编辑/etc/ld.so.conf.d/name.conf

              添加新的库文件所在目录至此文件中

           让系统重新生成缓存

              ldconfig  -v

         (3)导入头文件

               基于链接的方式实现:

                  in -sv

          (4)导入帮助手册

               编辑/etc/man.config|man_db.conf文件

                  添加一个MANPATH

       

     

             

 

     

  

       

      

  

         

        

    

    

      

     

        

       

       

       

    

           

       

     

     

 

            

   

    

     

 

            

   

    

原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/42404

(0)
zhengyibozhengyibo
上一篇 2016-09-01
下一篇 2016-09-01

相关推荐

  • Linux设备驱动Hello World程序介绍

    by Valerie Henson07/05/2007 (译者注:本文的例子是只能在linux的2.6内核下使用的,2.6以上的内核,译者没有做过实验,2.4是要修改make文件才能运行。) 本文的出处:这里 自古以来,学习一门新编程语言的第一步就是写一个打印“hello world”的程序(可以看《hello world 集中营》这个帖子供罗列了300个“…

    Linux干货 2015-04-01
  • 登录后经常出现You have new mail in /var/spool/mail/root的提示

    安装完LINUX后经常使用终端远程登录,登录后经常出现You have new mail in /var/spool/mail/root的提示,很是烦人。 这东西到底是做什么用的呢?经过查询才知道这是LINUX的邮年提示功能。LINUX会定时查看LINUX各种状态做汇总,每经过一段时间会把汇总的信息发送的root的邮箱里,以供有需之时查看。 那要怎么去掉这麻…

    系统运维 2017-08-05
  • Linux nginx 服务

                           Linux nginx 服务 Nginx服务简介:      NGINX :是一个自由、开源、高性能、轻量级的HT…

    系统运维 2016-11-18
  • 显示历史命令时间

        历史命令中默认是不显示时间的,如果我们想要在使用history命令时显示时间可以通过设置环境变量来实现。     HISTTIMEFORMAT变量的具体参数与date命令中的类似,可以参数date命令的对日期时间格式时行修改。    &nbs…

    Linux干货 2015-05-02
  • 27期第一周学习小结

    第一周 1. 描述计算机的组成及其功能。 计算机主要组成部分以下五种:运算器,控制器,存储器,输入设备,输出设备。 运算器的功能是对数据进行算术运算与逻辑运算,就是对数据进行加工处理。 控制器的功能是调度二进制程序,数据,内存寻址,以及协调计算机输入设备和输出设备等各计算机部件之间的正常工作。 存储器的功能是存储二进制指令和数据。存储器是编址存储单元。 输入…

    Linux干货 2017-07-15
  • windows server 2008 r2 每隔一段时间自动关机

    首先来说一下我的狗血经历:     话说作为一个地铁汪,每天背着电脑从房山到朝阳那简直就是能累死我的节奏,所以我跟公司申请我不要用自己的笔记本了(补助我不要了)。最后公司把一台不用的server 2008r2给我用,12G内存,志强CPU,跑虚拟机杠杠的。 但是噩梦开始了,我发现一个特点,这台server 2008 r…

    2015-11-26