Linux程序包管理之RPM、YUM

Linux程序包管理之RPM、YUM


一、程序包管理工具

1.程序包制作流程

     程序源码预处理后进行编译,编译成目标代码,然后汇编成二进制代码,最后将源程序所用的库代码与目标代码合并,最终形成可执行的二进制代码。

2.程序包管理工具

      一般情况下一个程序不止一个二进制程序,可能存在配置文件,帮助文档等相应文件,这时候我们就需要一个打包软件将程序包及相关组件进行打包,此时就需要使用程序包管理工具。

    程序包管理器功能:

       把二进制程序、库文件、配置文件、帮助文件打包成一个文件;从而更方便地实现程序包的安装、升级、卸载和查询等管理操作

    3.常用程序包管理工具

后端工具:

         Debian:工具dpt, dpkg;包名 ".deb"

         RedHat:工具  rpm   ;包名 ".rpm" 

前端工具:自动解决依赖关系;

          RHEL系列:  yum

          Debian:  apt-get (apt-cache)

          SUSE::  zypper

          Fedora :  dnf


二、RPM命令管理程序包

1.什么是RPM

       RPM是一个开放的软件包管理器,全称是Redhat Package Manager,它工作于Red Hat Linux以及其它Linux系统,成为了Linux中公认的软件包管理标准

2.RPM的命名格式

     name-version-release-release.arch.rpm

    包名-主版本号.次版本号.发行号.arch.rpm

    主版本号:软件内容发生重大改进会修改主版本号

    次版本号:软件内容的某个子功能发生重大变化会修改次版本号

    发行号:修正了部分bug,调整了一点功能会修改发行号

     arch:表示为arch平台架构

      rpm:软件包扩展名

3.RPM常用命令

  rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]

        查询:

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

   [select-options]:

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

wKioL1bwr7aTYpjKAAANXIRBBIc562.png

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

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

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

wKiom1bwrzeDIbgXAAAXwsR728w045.png


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

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


  [query-options]

            --changelog:查询rpm包的changlog

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

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

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

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

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

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

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

 

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


      常规选项:

           -vverbose,详细信息

          -vv:更详细的输出


    安装选项:

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

Linux程序包管理之RPM、YUM_第1张图片

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

          --nodeps:忽略依赖关系;不建议;

          --replacepkgs:重新安装

升级:

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

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


-U:升级或安装;

-F:升级


rpm  -Uvh PACKAGE_FILE ...如果装有老版本的,则升级;否则,则安装

rpm  -Fvh PACKAGE_FILE ...如果装有老版本的,则升级;否则,则退出 

--oldpackage:降级;

--force:强制升级;


注意:

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

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

卸载:

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

     -e   :卸载

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

        --nodeps:忽略依赖关系

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

 

校验:

         rpm {-V|--verify}  PACKAGE_FILE ...  无输出信息即为正常、

 

 

数据库重建:

       rpm管理器数据库路径:/var/lib/rpm/,查询操作是通过此处的数据库进行;

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

 

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

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

 

三、YUM程序包管理

        YUMrpm的基础上很好的解决了软件包之间的依赖关系。 YUM是一种基于C/S架构的服务,需要Server和Client来进行使用,即yum仓库和本地的yum工具。

 

1.YUM仓库(即服务端配置)

        yum仓库可以是本地文件、ftp服务器和http服务器。yum仓库的配置文件即为YUM的元数据文件,元数据文件需要存放在一个叫repodata的目录下面,其目录和组成yum众多rpm包需要同处于同一个目录下(在此目录下可用createrepo命令创建本地yum仓库)


primary.xml.gz:定义了当前仓库中所有的rpm包列表以及各包之间的依赖关系和每个软件包安装生成的文件列表 

filelists.xml.gz:当前仓库中所有RPM包的文件列表 

other.xml.gz:额外信息,rpm包的修改日志  

repomd.xml:记录的是上面三个文件的时间戳和校验和 

comps.xmlRPM包分组信息 

 

2.YUM本地工具(即客户端配置)

   客户端配置文件在/etc/yum.repos.d/*.repo文件内进行定义,可以定义多个.repo文件,也可以在一个repo文件定义多个yum服务器,其格式如下: 

 [RepositoryID] 

 name=Some name for this repository

 baseurl=yum仓库路径 

 enabled={0|1}:是否启用此仓库,默认不写的时候是启用 

 gpgcheck={0|1}:校验文件的完整性


 yum仓库的路径有三种: 

 ftp服务器:  ftp:// 

 http服务器:http://

 本地文件    file:/// 

3.YUM常用命令

   显示仓库列表:yum repolist

  显示程序包:

      yum list:查看yum列表 

               all:默认选项,会列出所有的rpm

               available:列出仓库中未安装的包 

               installed:列出显示已经安装的软件 

               updates:列出可以升级的软件包 

 

     yum clean:清除缓存 

Linux程序包管理之RPM、YUM_第2张图片

  安装程序包:

      yum install Package

         yum y install Package直接自动完成软件的安装

           yum  reinstall  Package 重新安装      

  升级程序包:

             update Package  升级软件包 

           downgrade  Package (降级)

 

  检查可用升级:

            check-update

  卸载程序包:

           remove | erase Package     

  查看程序包information

              yum info Package

 

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

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

 

4.YUM的组管理命令

yum grouplist :查看组,包括安装或未安装的 

Linux程序包管理之RPM、YUM_第3张图片 

yum groupinstall GROUPNAME  :安装组,注意如果组名中间有空格,需要使用”” 

groupinfo   组名:显示组包含包信息(如果组名中间有空格,使用””) 

Linux程序包管理之RPM、YUM_第4张图片

groupremove :删除组

 

四、源码程序安装

  1.通过提供开发组件

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

第一步:configure脚本

    选项:指定安装位置、指定启用的特性--help: 获取其支持使用的选项

       选项分类:

         安装路径设定:

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

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

                System types:

                     Optional Features: 可选特性

                         --disable-FEATURE

                         --enable-FEATURE[=ARG]

                     Optional Packages: 可选包

                         --with-PACKAGE[=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)导出头文件

    基于链接的方式实现:

    ln -sv

4)导出帮助手册

    编辑/etc/man.config文件

    添加一个MANPATH

2.通过编译、安装web服务器来说明编译安装的相关过程


1.解压源码包

                  tar xf httpd-2.2.29.tar.bz2并进入解压包目录

Linux程序包管理之RPM、YUM_第5张图片


2.配置参数、编译、安装

Linux程序包管理之RPM、YUM_第6张图片

wKioL1bwtaiS1xCmAAAHFFdFw7g222.png

3.添加环境变量

               vim /etc/profile.d/httpd.sh ,添加如下内容

               export PATH=$PATH:/usr/local/apache/bin //增加环境变量

wKioL1bwtT2zhH7eAAAIOH1cvjs358.png

Linux程序包管理之RPM、YUM_第7张图片

httpd安装完后默认主页面文件路径:/var/www/html/index.html

 



你可能感兴趣的:(二进制,配置文件,管理工具)