CentOS系统上rpm命令管理程序包:

rpmrpm Package Manager,即软件包管理工具;

一、rpm包管理的用途;

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;

2、通过rpm包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;

3、可以在查询系统中的软件包是否安装以及其版本;

4、作为开发者可以把自己的程序打包为RPM 包发布;

5、软件包签名GPGMD5的导入、验证和签名发布

6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;

 

二、rpm 的使用权限;

rpm软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;

 

三、rpm命令:rpm  [OPTIONS] [PACKAGE_FILE]

   rpm的基本选项:

        1、安装:-i,--install

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

        3、卸载:-e,--erase

        4、查询:-q,--query

        5、校验:-V,--verify

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

                           

   1rpm安装:

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

      rpm与yum详解_rpm与yum详解

         rpm–ivh PACKAGE_FILE ...

         根据路径安装并显示进度

           GENERAL OPTIONS

           -v:以详细信息输出

           -vv:更详细的输出

                                    

         [install-options]

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

             --test:测试安装,检查并报告依赖关系及冲突消息等,并不实际安装;

             --nodeps:忽略软件包的依赖关系强行安装;不建议使用;

             --replacepkgs:无论软件包是否已被安装,都强行重装软件包

             --nosignature:不检查包签名信息,不检查来源合法性;

             --nodigest:不检查包完整性信息;

                    

   2)升级:

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

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

      rpm与yum详解_rpm与yum详解_02                           

        -U:升级或安装,如后面接的包若没有安装过,则系统将直接安装

        -F:升级,如果后面接的包若没有安装过,则该包不会安装。

                                    

        rpm -Uvh PACKAGE_FILE ...

        rpm -Fvh PACKAGE_FILE ...

                                    

        --oldpackage:降级;

        rpm –Uvh –oldpackage PACKAGE_FILE…

 

        --force:忽略软件包及文件的冲突,强制升级;

        rpm–ivh PACKAGE_FILE… --force

               

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

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

                                                  

   3)卸载:

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

rpm与yum详解_rpm与yum详解_03                                

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

          --nodeps:忽略软件包的依赖关系强行安装

          --test:安装测试,并不实际安装

                                    

   4)查询:

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

      rpm与yum详解_rpm与yum详解_04                        

        [select-options]

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

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

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

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

                               

            --whatprovidesCAPABILITY:查询指定的功能由哪个程序包提供;

            --whatrequiresCAPABILITY:查询指定的功能被哪个包所依赖;

                                    

        [query-options]

            --changelog:查询rpm包的changlog

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

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

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

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

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

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

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

                                    

    用法:

        -qiPACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

        -qpiPACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...

                                    

    5)校验:

      rpm{-V|--verify} [select-options] [verify-options]  

                           

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

    来源合法性验正:

    完整性验正:

                  

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

      对于CentOS发行版 rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

                           

    验正:

     (1)安装此组织签名的程序时,会自动执行验正;

     (2)手动验正:rpm -K PACKAGE_FILE

                           

  数据库重建:

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

       查询操作:通过此处的数据库进行;

                           

    获取帮助:

        CentOS6man rpm

        CentOS7man rpmdb

                           

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

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

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

                           




yum(全称为 Yellow dogUpdater, Modified):是一个在FedoraRedHat以及CentOS中的Shell前端软件包管理器。

 yumrepository: yum repoyum仓库)

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

 

  yum客户端: 

      配置文件:

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

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

 

     仓库指向的定义:

      [repositoryID]:仓库的名字

      name=仓库的描述,也可以说是名字

      baseurl=url://path/to/repository/:仓库的位置

      enabled={1|0}:是否启用这个仓库,1为启用,0为禁用

      gpgcheck={1|0}:是否检查gpg签名,检查来源完整性

      gpgkey=URL指明密钥文件

      enablegroups={1|0}是否在此仓库上使用组来批量处理程序包

      failovermethod={roundrobin|priority}(默认为:roundrobin,意为随机挑选)

      cost=:开销数字(默认为1000)

 

yum命令的用法:

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


     显示仓库列表:

        repolist [all|enabled|disabled]

      rpm与yum详解_rpm与yum详解_05


      显示程序包:

      list

        # yum list [all | glob_exp1][glob_exp2] [...]

        # yum list{available|installed|updates} [glob_exp1] [...]

      rpm与yum详解_rpm与yum详解_06

      安装程序包:

        install package1 [package2] [...]

      rpm与yum详解_rpm与yum详解_07

        reinstall package1 [package2][...]  (重新安装)

      rpm与yum详解_rpm与yum详解_08

     升级程序包:

        update [package1] [package2] [...]

      rpm与yum详解_rpm与yum详解_09

        downgrade package1 [package2] [...] (降级)

 

     检查可用升级:

        check-update

rpm与yum详解_rpm与yum详解_10

    卸载程序包:

        remove | erase package1 [package2][...]

      rpm与yum详解_rpm与yum详解_11

    查看程序包information

        info [...]

rpm与yum详解_rpm与yum详解_12

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

        provides | whatprovides feature1[feature2] [...]

rpm与yum详解_rpm与yum详解_13

    清理本地缓存:

        clean [ packages | metadata |expire-cache | rpmdb | plugins | all ]

rpm与yum详解_rpm与yum详解_14

    构建缓存:

        makecache

 

    搜索:

        search string1 [string2] [...]

      rpm与yum详解_rpm与yum详解_15

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

 

    查看指定包所依赖的capabilities

        deplist package1 [package2] [...]    rpm与yum详解_rpm与yum详解_16

    查看yum事务历史:

        History [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|

        new|sync|stats]

rpm与yum详解_rpm与yum详解_17

    安装及升级本地程序包:

        *localinstall rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use install)

        *localupdate rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use update)

 

    包组管理的相关命令:

       * groupinstall group1 [group2] [...]

       * groupupdate group1 [group2] [...]

       * grouplist [hidden] [groupwildcard] [...]

       * groupremove group1 [group2] [...]

       * groupinfo group1 [...]

 

    如何使用光盘当作本地yum仓库:

        (1) 挂载光盘至某目录,例如/media/cdrom

          # mount -r -t iso9660 /dev/cdrom /media/cdrom

        (2) 创建配置文件

               

    yum的命令行选项:

            --nogpgcheck:禁止进行gpgcheck

            -y: 自动回答为“yes”;

            -q:静默模式;

            --disablerepo=repoidglob:临时禁用此处指定的repo

            --enablerepo=repoidglob:临时启用此处指定的repo

            --noplugins:禁用所有插件;

 

   yumrepo配置文件中可用的变量:

            $releasever: 当前OS的发行版的主版本号;

            $arch: 平台;

            $basearch:基础平台;

            $YUM0-$YUM9

 

   创建yum仓库:

            createrepo [options] <directory>


   程序包编译安装:

            testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装;

            源代码 --> 预处理 --> 编译(gcc)--> 汇编 --> 链接 --> 执行

            源代码组织格式:

                多文件:文件中的代码之间,很可能存在跨文件依赖关系;

 

                CC++ make(configure --> Makefile.in --> makefile)

                java: maven

 

    源代码编译安装三步骤:

        ./configure

          ]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2

rpm与yum详解_rpm与yum详解_18

       (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile

        (2) 检查依赖到的外部环境;

          make

rpm与yum详解_rpm与yum详解_19

       根据makefile文件,构建应用程序;

          make install

rpm与yum详解_rpm与yum详解_20

 

      开发工具:

          autoconf: 生成configure脚本

          automake:生成Makefile.in

 

    建议:安装前查看INSTALLREADME

 

      开源程序源代码的获取:

        官方自建站点:

          apache.org (ASF)

          mariadb.org

            ...

        代码托管:

          SourceForge

          Github.com

          code.google.com

 

       c/c++: gcc (GNU C Complier)

 

    编译C源代码:

      前提:提供开发工具及开发环境

      开发工具:make,gcc

      开发环境:开发库,头文件

       glibc:标准库

 

    通过“包组”提供开发组件

       CentOS 6:"Development Tools", "Server Platform Development",

rpm与yum详解_rpm与yum详解_21 

    第一步:configure脚本

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

rpm与yum详解_rpm与yum详解_22

       注:上面是启动时遇到的一个问题;

rpm与yum详解_rpm与yum详解_23

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

    选项分类:

      安装路径设定:

            --prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;默认为/usr/local/

            --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

               

            Systemtypes:

 

            OptionalFeatures: 可选特性

               --disable-FEATURE

               --enable-FEATURE[=ARG]

 

        OptionalPackages: 可选包

                                                         --              with-PACKAGE[=ARG]

           --without-PACKAGE

    第二步:make

    第三步:makeinstall

    安装后的配置:

    1) 导出二进制程序目录至PATH环境变量中;

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

      export PATH=/PATH/TO/BIN:$PATH

rpm与yum详解_rpm与yum详解_24 

   2) 导出库文件路径

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

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

rpm与yum详解_rpm与yum详解_25

      让系统重新生成缓存:

         ldconfig[-v]

rpm与yum详解_rpm与yum详解_26

    (3) 导出头文件

        基于链接的方式实现:

           ln -sv

 

    (4) 导出帮助手册

      编辑/etc/man.config文件

      添加一个MANPATH

rpm与yum详解_rpm与yum详解_27