Linux之Redhat系列程序包管理


    安装、升级和卸载应用软件是每个系统不可或缺的一部分;对于在企业使用越来越广泛的Linux操作系统而言,强大而简洁的程序包管理机制为工程师们带来了很大的便利;下文主要介绍在RedHat系列的系统上如何使用RPM/YUM/编译三种方式去管理程序包。



一、RPM程序包管理

    PRM全称是Red Hat Package Manager(RedHat 包管理器)。Linux RPM软件包的命名有一定的规律:名称-版本-修正版-类型.rpm

    例如:

       wKioL1Z76tzCuIkLAAAIzTPyHYQ029.png 

    RPM命令详解:

        功能:

    安装、卸载、升级、查询和数据库维护

        用法:

            rpm [OPTIONS] [PACKAGE_NAME]

                -i:安装软件

                --test:测试安装

                -h:显示“#”进度条

                -v:显示详细信息

                -e:卸载

                -U:升级安装

                -q:查询指定软件包的信息

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

            以上选项可结合使用

        安装:rpm -ivh Package_Name

             -v:显示详细信息

            -h:显示“#”的进度条

            -i:安装  

        wKioL1Z77i7jRTFUAAAmXBw_4sk080.png

            其余安装选项:

                --nodeps:忽略依赖关系

                --replacepkgs:重新安装

                --test:测试安装

        wKiom1Z78lTjkVsaAAAjBHN8keM924.png

        

        卸载:rpm -e 软件名

        wKiom1Z7896iDOL2AAAF7kTzpkA053.png


        升级:rpm -Uih Package_Name

            升级和安装的选项差不多,这里就不做过多介绍

           额外选项:

             --force:强制升级 

         


        查询:rpm -q[a|f|p|l|i|c|d|R] 软件名

            -a:查询所有已安装的软件名

            wKioL1Z7-H2joaRyAAAJ5a4Rko4741.png

            -f:查询文件所属软件包

            wKiom1Z7-KTAseDQAAALHeCMXQM583.png

            -p:查询软件包(通常用来查看未安装的软件)

                用法:rpm -qp 软件包名

                    -qpi:该软件的详细信息                

                    -qpl:该软件中的列表

                    -qpc:该软件安装后将会产生的配置文件

                    ...

               

             -l:显示软件包中的列表

            wKioL1Z7-TbBrqOXAAAWZM_AZtQ671.png

            -i:显示软件包信息

            wKioL1Z7-cDTdLgAAABAELEBFPQ650.png

            -c:显示被标注为配置文件的列表

             -d:显示被标记为文档的列表

            -R:查询软件包的依赖关系

            wKiom1Z7-hGQFtomAAAWBVAGVjo720.png

        


        重建数据库:rebuilddb,initdb

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

            用法:

                rpm {--initdb | --rebuilddb}

                    initdb:初始化数据库

                    rebuilddb:按照已安装的软件包来重建数据库



二、YUM仓库程序包管理

    yum(全称为Yellow dog Ypdater,Modified)是一个在Fedora和RedHat以及SUSE中的Shell前段软件包管理器;yum基于RPM包管理,是把许多.rpm包通过编译后整合在一起建立成一个仓库;yum无须繁琐地一次次下载,安装,可以自动处理依赖性关系。yum提供了查找、安装、删除等功能。

    

    本地光盘制作yum源:

        1.挂载CentOS 7光盘镜像到系统上并把光盘内的文件拷贝到/PATH/TO/DIR_NAME

        wKiom1Z9LzjSvbHIAAANovjNlxI785.png

        注意:这里复制的时候可能会比较长,请耐心等待。        


        2.利用createrepo创建仓库,如果没有createrepo请根据上面rpm的方式安装

        wKiom1Z9MT7CTY_AAAAoC50Dq_w555.png            

        3.到/etc/yum.repo.d/目录下定义yum仓库

        

        [base]

name-Some name for this repository

baseurl=usrl://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

        如下图:

        wKioL1Z9ODmRXax1AAAWcZdAjuI416.png


        4.运行yum list检查是否制作成功

      

        当然yum源的制作方式不止这一种,这里就不多做演示了,有兴趣的同学可以下来自行研究。

    

    yum命令详解:

       用法:yum [options] COMMAND

        COMMANDS:

            check:检查RPM数据库问题

            check-update:检查是否有可用的软件更新

            install:安装软件包

            wKiom1Z9Q7PCkW7FAAA0DbLMNJo869.png

            list:列出软件包

            update:更新软件包

            repolist:显示已配置的源

            remove:卸载程序包

            wKiom1Z9Q4KTGsUDAAAqm5kNVXw463.png

            

            info:显示软件包信息

            clean:清理本地缓存

            reinstall:覆盖安装软件包


        OPTIONS:

            -y:回答全部问题为师

            --nogpgcheck:禁用GPG签名检查

            --installroot=[path]:设置安装根目录

            -v:详细操作过程

            --noplugins:禁用所有插件

            -q:静默模式


                            



三、源代码包管理(编译安装)

    Linux上的大多数源码都是C或者C++语言编写的,源代码包的管理方式与RPM管理方式相比更为复杂了一点,但是更能体现作为一个Linux工程师的技术性;因为源码包的管理需要自己定义相关功能,安装需要的模块;此外用户还可以自己选择安装路径,方便管理;卸载软件只需要删除对应的目录即可。

    

    编译前注意事项:

        是否安装gcc、make编译命令,解压从网上下载下来的源代码包;通常打包为.tar.gz或.tar.bz2等格式。在安装时configure会检测是否满足安装要求,要学会根据configure的报错信息找出问题解决掉。

        


        第一步:解压下载下来的源码包,进入源码目录,一般都会存在configure文件

            ./configure  

                选项:

                    --prefix=[PATH]:指定安装位置

                    --sysconfdir=[PATH]:指定配置文件位置

                    --help:可以看到所有选项

                    --enable-FEATURE:使用某个特性

                    --disable-FEATURE:禁用某个特性

                    --with-PACKAGE:依赖包为默认

                    --without-PACKAGE:依赖包自己指定

              

            configure完成后会根据用户指定的特性等生成makefile文件


        第二步:make命令进行编译,根据makefile文件,构建应用程序

        

        第三步:make install  安装

        

    下面根据Apache进行演示:

        第一步:

            创建一个目录:mkdir /apache

            把下载的apache源码包解压到/apache下面

            切换至解压目录下,运行./configure命令并指定安装目录为/apache2.2

            wKiom1Z9UKmzOmhQAAAHJKUYTKc246.png


        第二步,第三步:

            运行make && make install 命令进行安装

            wKiom1Z9URiRt-sRAAAQNYRZfeg570.png


        验证:访问http://192.168.1.1 我的apache服务器IP

            wKiom1Z9Ui2yj7YMAAF_-1Bwd00927.png


        

    以上截图均以CentOS 7 为例。