Linux 之RPM和YUM包管理

   在Linux的日常维护管理中,管理员要不停的和Linux的程序安装,升级,卸载打交道,这里面用到最多的两个命令就是rpm和yum,甚至有时候我们还涉及源程序的编译安装,用来更高效利用我们的设备,本次博客的主题就是关于rpm和yum命令的介绍和使用


   一:包程序管理简介

   过去,许多 Linux 程序以源代码的形式发行,用户把源代码构建为所需的程序或程序集;源代码还附带必需的手册页、配置文件等等但对于很多系统管理员原来说源代码要想安装上,必须要经过编译才行,但是编译过程又是一个复杂繁琐的过程,对于系统管理很是不方便,也很不容易上手后来redhat公司提出了程序安装包的发行机制rpm( Red Hat Package Manager)。rpm包之前是用Perl语言编写后来改为使用c语言,因为rpm出现使程序的安装大为方便,现在许多Linux发行商也都采用这种机制,现在rpm包依然成为Linux工业化标准,现在我们把rpm称为Rpm is Package Manager更好些。


   二:RPM

   1)rpm的命名格式

    name-version-relase.arch.rpm

       name:程序包的名称

       version:程序包源代码的发行号。

       relase:rpm程序包版本号.

       arch:适用于的硬件平台(x86.x86_64,ppc等)

   2)rpm包的安装

     命令:rpm [option] /path/to/package_file 

     选项【option】

      -i  :install 安装

      -v  :可视安装进度

      -h  :可以看到安装进度条

      组合在一起 -ivh :在安装过程中能够看到安装进度,安装rpm包时必须要找到rpm本身。

      rpm包的重新安装 (当之前的配置文件修改错误,或删错某个文件此时想重新安装)

       --replacepkgs


     --test :测试安装,仅测试不给于安装。

     rpm包的依赖特性:安装rpm包会遇到一个很让人头疼的事情就是安装时有可能会遇到依赖关系此时,你如果想要继续想安装此包有两种方法可以解决。一是忽略此包继续安装,但安装后可能就不能使用此包,二是根据提示的内容一一把所依赖的包安装上。

     如果你想忽略次依赖关系继续安装的话可以使用 --nodepes这个命令来安装。

     

     3)rpm包的卸载

    命令:rpm [option] package_name  (注意:后面跟的是所要卸载安装包的名字,不是路径)。

    选项【option】

      -e: 卸载,擦除。

     卸载rpm包时也会遇到依赖关系,你如果想要继续想安装此包有两种方法可以解决。一是忽略继续卸载,二是根据提示的内容一一把所依赖的包卸载掉。--nodepes


    4) 升级程序包

     命令:rpm [option] /path/to/package_file

     选项【option】

       -Uvh:升级或安装 :有没有老版本都没问题有就替换,没有就安装。

       -Fvh:纯升级  :必须要有老版本才能升级。

       --force  : 强制升级。

     注意:对内核不能进行升级,只能对内核进行安装。


    5)查询程序包

     命令:rpm [option] package_name....

     选项【option】

     -q:查询某包是否安装

    -qa:查询所有已经安装的包,通常和grep一起使用。

   -qi:查询包的详细信息(已安装的程序包);-qpi(未安装的程序包后面要跟程序全名)下图为已安装包示例(下同)。


   -ql:查询某包安装生成了哪些文件;-qpl:查询未安装包生成文件


   -qc:查询某包安装生成了哪些配置文件;-qpc:查询未安装包生成了哪些配置文件。


   -qd:查询某包生成了哪些帮助文件;-qpd:查询未安装包生成了哪些帮助文件。


   6)rpm包的合法性检测

    网上有众多的rpm包我们怎样才能判别这些包的合法性呢,这里边引入了公钥的检测方法。我们在当前系统上导入rpm包作者的公钥信息。


  三:YUM

   YUM 在 RPM 系统中增加了自动更新和包管理采用C/S架构,包括依赖关系管理。YUM 使用存储库。存储库是包的集合,通常可以通过网络连接访问它们。yum通过内建的微型数据库可以对所要安装的文件进行分析看安装此软件需要哪些depend的文件然后再安装的时侯统一对他们进行安装。yum安装的时候采用先从服务器统一把所需要的文件下载到本地,然后再统一对他们进行安装,对于这些缓存文件我们可以选择是否删除他们。

    1)yum客户端

    yum客户端提供repo配置文件,里面有仓库的访问路径及各种配置信息。yum客户端的配置文件分为主配置文件及仓库yum源地址配置文件。

    yum主配置文件在/etc/yum.conf

     在程序缓存目录里有一个$basearch和$releasever.下面对这两个变量做一下解释说明。

$basearch: 系统基本架构,如i686,i586等的基本架构为i386;

$releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6;

   yum源地址配置文件在/etc/yum.repos.d/

      

  yum源地址配置可以分开配置也可以在一个baseurl里进行配置,配置格式如下:

                         baseurl=ftp://server/path/to/repository

                 http://server/path/to/repository

            nfs://server/nfs_path

         file:///path/to/repository


下面的连接地址不能顶格写。


    2)yum安装

    命令:yum install package_name

     yum命令执行后会自动分析安装文件所依赖的包并下载下来后一并安装。


    3)yum卸载

    命令:yum remove package_name

    注意:我遇到了以下情况

    ***********在给 rhel 6  配置本地源时,有个问题一直都很麻烦。********

Error: Cannot retrieve repository metadata (repomd.xml) for repository: InstallMedia. Please verify its path and try again

    原来是rhel 6 新引进的一个包管理工具 Packagekit,这个工具似乎会在每次读取软件仓库之后,会把原本光盘根目录下,也就是一同被你拷贝到软件仓库目录的media.repo 复制一份到/etc/yum.repos.d/,并重命名为 packagekit-media.repo ,而该文件也就是导致本地yum源失效的罪魁祸首。

    解决方法:

    删除软件仓库中的 media.repo,并删除或重命名/etc/yum.repos.d/packagekit-media.repo

但由于我直接使用 iso 文件作为源,所以无法删除 iso 中的该文件,单单只是删除或重命名 packagekit-media.repo 只能起一次作用,之后又会产生新的packagekit-media.repo 文件,只好索性卸载Packagekit 了。yum remove -y PackageKit看起来一切都正常

                                              -------转自http://yueyizx.blog.51cto.com/

 

    4)清理缓存

    yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}


    5)升级

     yum update package_name


    6)yum查询命令

     列出所有可用的repo:yum repolist {enabled|disabled|all}

     列出rpm包:yum list {all|installed|available}

     包的描述信息:yum info package_name


    四:总结

    上面Linux系统软件管理的rpm和yum的使用方法做了简单的总结,自从有了yum的安装方式Linux对软件的安装已经方便了许多,所以我们也要会自建一个yum源,有时对于只有源的软件我们还要会对他进行编译安装,这些在以后的博客里我在给大家做一介绍。






    




本文出自 “slayer” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。