Linux学习之CentOS(二十四)--Linux软件管理之YUM软件管理

 

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 501395377@qq.com  / lzp501395377@gmail.com

如果需要转载,请注明出处,谢谢!!

 

在上一篇随笔里面,我们详细讲解了Linux系统下的软件管理机制,Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理

在Linux系统下通常使用的软件管理机制有源代码的形式、以及RPM(redhat Package Manager)包管理机制,在这篇随笔里面,我们将详细讲解Linux软件管理只YUM软件管理。

注意:】首先必须先明确一点,yum并不是一种新的软件包管理形式,我们的rpm则是一种新的软件包管理形式,yum只是rpm的一个前端程序,yum最主要的功能就是帮助我们解决软件包的依赖性问题!!!

在上一篇随笔里面我们详细比较过了基于源代码形式安装以及RPM软件包安装的优缺点。rpm软件包形式管理软件虽然方便,但是需要我们手工的去解决软件包的依赖性问题,比如安装当前这个软件我需要A软件的支持,安装A软件又需要用到了B软件,这样我们就必须手动的去安装好该软件所依赖的所有的rpm包,有的时候安装一个软件可能需要首先安装好1个或者多个(有时多达上百个)其他的软件,这样我们在手工解决时就非常的麻烦。所以我们在这里就需要使用YUM来解决这个问题!

YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

一、YUM的特点主要有以下几点

自动解决依赖性问题  这个是yum最主要的功能,我们可以通过yum来自动的解决软件包直接的依赖性问题

可以对RPM进行分组,并基于组来进行安装操作  有时候我们可能需要对软件进行分组,比如基于开发的软件放在一组,桌面软件又放在一组,在传统的RPM包管理机制里,我们需要自己手动的去将每一个组里面的软件都安装了才行,而yum就可以方便的对RPM进行分组,我只需要安装这个组,那么这个组里面的所有软件都会自动给我们安装好。

引入了仓库的概念,支持多个仓库  通过yum来进行软件的安装其实就是基于仓库这个概念的,我将所有的rpm软件包都事先放在一个仓库里面,然后yum就可以在这个仓库里面寻找我们需要安装的软件,找到了就可以自动安装,没找到则就安装不了

配置简单  在现在的RHEL、CentOS里面基本上都使用yum的方式来进行软件的安装,其主要原因也是基于其仓库的配置非常的简单,这个将在下面进行详细论述

二、YUM

yum里引入了仓库的概念,仓库里其实就是用来存放我们所有现有的rpm软件包,因为yum就是基于rpm软件包管理的一个前端程序,所以yum也是通过rpm来进行软件的安装的。当使用yum进行软件安装时,如果存在依赖关系,那么yun也会自动的去仓库里面去寻找所依赖的rpm软件包,并自动安装,解决软件包的依赖问题。

这个仓库既可以是本地的,也可以是互联网上的,可以通过http、ftp或者nfs等形式使用集中的、统一的网络仓库

三、YUM仓库

yum使用的是仓库来保持管理我们的rpm软件包,仓库的配置文件是存放在 /etc/yum.repos.d/ 这个文件目录下,我们可以进入到该目录,查看一下里面的信息

[root@xiaoluo home]# cd /etc/yum.repos.d/
[root@xiaoluo yum.repos.d]# ls -l
总用量 16
-rw-r--r--. 1 root root 1926 2月  25 16:57 CentOS-Base.repo
-rw-r--r--. 1 root root  638 2月  25 16:57 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 2月  25 16:57 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 2月  25 16:57 CentOS-Vault.repo

我们看到在该目录下一共有四个yum的配置文件(每个配置文件必须是以.repo结尾),CentOS系统会默认的给出我们这四个yum仓库的配置文件,里面保存着非常多的网络仓库信息,RHEL系统默认可能就没有这些yum仓库的配置文件,如果我们需要这些,我们必须向红帽购买相应的服务才行。

我们首先来看一下yum仓库的配置格式

[xiaoluo]  // 这个就是我们仓库的名字

name=This is xiaoluo's rpm soft repo  // 这个虽然写着是name,但是其实后面通常是写一些对该仓库进行描述的语句

baseurl=http://www.xiaoluo.com/yum/soft/CentOS/x86_64/rpms/  // 这个是仓库的地址,可以是http、ftp、nfs等网络仓库的地址,也可以是我们本地仓库的地址

enabled=1  // enabled=1表示我们使用这个仓库,默认就是enabled=1

gpgcheck=1  // 是否启用软件校验,基于安全考虑,主流的Linux发行版本都会对一些常用的rpm进行签名操作

以上就是yum仓库的基本的配置格式,当然可能还有其他的一些配置字段,下面我们打开CentOS下 /etc/yum.repos.d/ 这个目录里面的yum仓库配置文件来看看其里面的内容

[root@xiaoluo yum.repos.d]# cat CentOS-Base.repo 
# CentOS
-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

我们看到每一个这样的yum仓库配置文件里面都包含了好多个yum仓库的配置信息,在上面有一个mirrorlist选项,这个选项的主要作用就是去动态的获取我们的baseurl地址,因为如果yum仓库的网络地址修改以后,我们不需要每次都去修改baseurl来更换地址,只需要设置mirrorlist这个选项,它就会动态的去获取我们所需要的baseurl的地址。其中的gpgkey这个字段就是设置我们启用校验时所需要的密钥。

使用yum仓库需要注意一下几点

①仓库可以使用http、ftp、file、nfs等方式

②yum配置文件必须以.repo结尾

③一个yum配置文件里面可以存放多个仓库的配置信息

④/etc/yum.repos.d/ 目录下可以存放多个yum配置文件

四、yum基本命令

yum管理软件的常用命令有如下几个:

 

安装软件:yum install software-name

 

删除软件:yum remove software-name

 

升级软件:yum update software-name

 

 

在这里我们通过安装 tigervnc 这个软件来试验一下:

 

[root@xiaoluo ~]# yum install tigervnc
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
 * base: mirrors.grandcloud.cn
 * extras: mirrors.grandcloud.cn
 * updates: mirrors.grandcloud.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tigervnc.x86_64 0:1.1.0-5.el6_4.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch           Version                  Repository       Size
================================================================================
Installing:
 tigervnc         x86_64         1.1.0-5.el6_4.1          updates         258 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 258 k
Installed size: 644 k
Is this ok [y/N]: y
Downloading Packages:
tigervnc-1.1.0-5.el6_4.1.x86_64.rpm                      | 258 kB     00:03     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : tigervnc-1.1.0-5.el6_4.1.x86_64                              1/1 
  Verifying  : tigervnc-1.1.0-5.el6_4.1.x86_64                              1/1 

Installed:
  tigervnc.x86_64 0:1.1.0-5.el6_4.1                                             

Complete!

 

从上面的信息我们可以发现,当使用yum进行软件安装时,yum会去我们的 /etc/yum.repos.d/ 目录下的yum仓库配置文件寻找仓库,然后根据对应的baseurl来进行下载安装,上面也会给出我们该软件的详细信息,包括运行的操作系统版本、软件名、软件版本信息等等。同时通过yum的方式来安装软件时,它会自动的去找该软件是否有依赖的其它软件,有的话就会去仓库寻找并自动下载。我们使用yum的方式安装软件时,其首先会将该软件从仓库上下载下来,等安装好以后,会将该软件删除掉!

因为yum安装的软件都是通过rpm方式来进行安装的,所以我们可以使用 rpm -qi softname 命令来查看一下刚才安装的软件信息

[root@xiaoluo ~]# rpm -qi tigervnc
Name : tigervnc Relocations: (not relocatable) Version :
1.1.0 Vendor: CentOS Release : 5.el6_4.1 Build Date: 2013年04月29日 星期一 19时35分32秒 Install Date: 2013年05月20日 星期一 23时30分26秒 Build Host: c6b7.bsys.dev.centos.org Group : User Interface/Desktops Source RPM: tigervnc-1.1.0-5.el6_4.1.src.rpm Size : 659349 License: GPLv2+ Signature : RSA/SHA1, 2013年04月29日 星期一 19时42分00秒, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.tigervnc.com Summary : A TigerVNC remote display system Description : Virtual Network Computing (VNC) is a remote display system which allows you to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures. This package contains a client which will allow you to connect to other desktops running a VNC server.

如果我们需要删除该软件,则可以通过 yum remove softname 来删除软件,通过 yum update softname 命令可以来更新某个软件

五、yum查询命令

 

基于关键字搜索软件:yum search 关键字

列出全部的、安装的、最近的、更新的软件  yum list (all | installed | recent | updates)  

 

列出YUM仓库中全部软件:yum list all

 

显示软件信息:yum info packagename

查询某个rpm软件包含该目标文件  yum whatprovides filename   

 

因为我们使用yum来进行软件安装时,必须要写全软件的名字,所以如果我们对某个软件记不太清楚,需要搜索某个软件的信息,可以使用 yum search 软件名字的关键字 来进行搜索

[root@xiaoluo ~]# yum search mysql
Loaded plugins: fastestmirror, refresh
-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.grandcloud.cn * extras: mirrors.grandcloud.cn * updates: mirrors.grandcloud.cn ============================== N/S Matched: mysql ============================== MySQL-python.x86_64 : An interface to MySQL apr-util-mysql.x86_64 : APR utility library MySQL DBD driver bacula-director-mysql.x86_64 : Bacula Director with MySQL database support bacula-storage-mysql.x86_64 : MySQL Bacula storage daemon files dovecot-mysql.x86_64 : MySQL back end for dovecot freeradius-mysql.x86_64 : MySQL support for freeradius libdbi-dbd-mysql.x86_64 : MySQL plugin for libdbi mod_auth_mysql.x86_64 : Basic authentication for the Apache web server using a : MySQL database mysql.x86_64 : MySQL client programs and shared libraries mysql-bench.x86_64 : MySQL benchmark scripts and data mysql-connector-java.noarch : Official JDBC driver for MySQL mysql-connector-odbc.x86_64 : ODBC driver for MySQL mysql-devel.i686 : Files for development of MySQL applications mysql-devel.x86_64 : Files for development of MySQL applications mysql-embedded.i686 : MySQL as an embeddable library mysql-embedded.x86_64 : MySQL as an embeddable library mysql-embedded-devel.i686 : Development files for MySQL as an embeddable library mysql-embedded-devel.x86_64 : Development files for MySQL as an embeddable : library mysql-libs.i686 : The shared libraries required for MySQL clients mysql-libs.x86_64 : The shared libraries required for MySQL clients mysql-server.x86_64 : The MySQL server and related files mysql-test.x86_64 : The test suite distributed with MySQL perl-DBD-MySQL.x86_64 : A MySQL interface for perl php-mysql.x86_64 : A module for PHP applications that use MySQL databases qt-mysql.i686 : MySQL driver for Qt's SQL classes qt-mysql.x86_64 : MySQL driver for Qt's SQL classes qt3-MySQL.i686 : MySQL drivers for Qt 3's SQL classes qt3-MySQL.x86_64 : MySQL drivers for Qt 3's SQL classes rsyslog-mysql.x86_64 : MySQL support for rsyslog Name and summary matches only, use "search all" for everything.

我们如果需要列出YUM仓库中全部软件,可以使用 yum list all 命令来查看

[root@xiaoluo ~]# yum list all

***********************************此处省略N个字*******************************************
yum-plugin-priorities.noarch 1.1.30-14.el6 base yum-plugin-protectbase.noarch 1.1.30-14.el6 base yum-plugin-ps.noarch 1.1.30-14.el6 base yum-plugin-remove-with-leaves.noarch 1.1.30-14.el6 base yum-plugin-rpm-warm-cache.noarch 1.1.30-14.el6 base yum-plugin-show-leaves.noarch 1.1.30-14.el6 base yum-plugin-tmprepo.noarch 1.1.30-14.el6 base yum-plugin-tsflags.noarch 1.1.30-14.el6 base yum-plugin-upgrade-helper.noarch 1.1.30-14.el6 base yum-plugin-verify.noarch 1.1.30-14.el6 base yum-plugin-versionlock.noarch 1.1.30-14.el6 base yum-presto.noarch 0.6.2-1.el6 base yum-updateonboot.noarch 1.1.30-14.el6 base zlib.i686 1.2.3-29.el6 base zlib-devel.i686 1.2.3-29.el6 base zlib-static.x86_64 1.2.3-29.el6 base zsh.x86_64 4.3.10-5.el6 base zsh-html.x86_64

第一列就是我们的软件的名字,第二列显示的是该软件的版本信息以及适用的操作系统平台,第三列显示的软件属于哪个仓库,仓库的名字

如果需要查看已经安装的 yum 软件,则使用 yum list installed 命令即可

 

[root@xiaoluo ~]# yum list installed

***********************************此处省略N个字*****************************************
yum-metadata-parser.x86_64
                        1.1.2-16.el6    @anaconda-CentOS-201303020151.x86_64/6.4
yum-plugin-fastestmirror.noarch
                        1.1.30-14.el6   @anaconda-CentOS-201303020151.x86_64/6.4
yum-plugin-security.noarch
                        1.1.30-14.el6   @anaconda-CentOS-201303020151.x86_64/6.4
yum-utils.noarch        1.1.30-14.el6   @anaconda-CentOS-201303020151.x86_64/6.4
zd1211-firmware.noarch  1.4-4.el6       @anaconda-CentOS-201303020151.x86_64/6.4
zenity.x86_64           2.28.0-1.el6    @anaconda-CentOS-201303020151.x86_64/6.4
zip.x86_64              3.0-1.el6       @anaconda-CentOS-201303020151.x86_64/6.4
zlib.x86_64             1.2.3-29.el6    @anaconda-CentOS-201303020151.x86_64/6.4
zlib-devel.x86_64       1.2.3-29.el6    @anaconda-CentOS-201303020151.x86_64/6.4  // @ 符号就表示该软件已经被安装

 

如果我们要查看某个软件的详细信息,可以使用 yum info softname 命令,这个命令与 rpm -qi softname 的作用完全一样

root@xiaoluo ~]# yum info tigervnc
Loaded plugins: fastestmirror, refresh
-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.grandcloud.cn * extras: mirrors.grandcloud.cn * updates: mirrors.grandcloud.cn Installed Packages Name : tigervnc Arch : x86_64 Version : 1.1.0 Release : 5.el6_4.1 Size : 644 k Repo : installed From repo : updates Summary : A TigerVNC remote display system URL : http://www.tigervnc.com License : GPLv2+ Description : Virtual Network Computing (VNC) is a remote display system which : allows you to view a computing 'desktop' environment not only on : the machine where it is running, but from anywhere on the Internet : and from a wide variety of machine architectures. This package : contains a client which will allow you to connect to other : desktops running a VNC server.

如果我们需要查看哪个rpm文件包含了指定的目标文件,可以使用 yum whatprovides filename 命令来查看:

[root@xiaoluo ~]# yum whatprovides httpd
Loaded plugins: fastestmirror, refresh
-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.grandcloud.cn * extras: mirrors.grandcloud.cn * updates: mirrors.grandcloud.cn httpd-2.2.15-28.el6.centos.x86_64 : Apache HTTP Server Repo : updates Matched from: httpd-2.2.15-26.el6.centos.x86_64 : Apache HTTP Server Repo : base Matched from: httpd-2.2.15-26.el6.centos.x86_64 : Apache HTTP Server Repo : installed Matched from: Other : Provides-match: httpd

六、创建我们自己的yum仓库

 

上面我们使用的都是网络上的yum仓库,这里我们将详细讲解如何创建我们自己的yum仓库。其实创建我们自己的yum仓库非常的简单,只需要按照以下步骤来即可:

①将所有的rpm软件拷贝到一个文件夹中  因为yum仓库实际就是存放了现有所有的rpm软件包,所以我们构建自己的yum仓库只需要将rpm软件包拷贝到一个文件夹中即可

②通过yum命令手工安装 createrepo 软件  这个软件的作用就是为我们刚拷贝过来的所有rpm软件包创建仓库的索引,这个软件在CentOS的安装镜像光盘里面有

③运行 createrepo -v /rpm仓库文件夹   这个命令就会对刚才的rpm仓库文件夹进行索引

④如果有分组信息、则在运行命令的时候使用 -g 参数指定分组文件

  createrepo -g /xx.comps.xml /rpm仓库文件夹  RHEL\CentOS的分组信息都是保存在安装光盘的repodata/目录下,文件名以comps.xml结尾的.xml文件

创建好一会我们就可以通过 file 的方式来配置yum仓库配置文件来使用,如果我们需要作为对外的yum仓库服务器,还可以通过http、ftp、nfs等协议共享出去!

下面我们就来自己试验一下创建我们自己的yum仓库,按照上面的步骤来:

首先我们先挂载我们的CentOS镜像光盘1,发现里面有个Packages文件夹,之所以我们的CentOS安装镜像有这么大,其实主要原因就是里面包含了非常多的rpm软件安装包在里面

 

我们在根目录下创建一个 xiaoluo.yum 的文件夹,然后将上面所有的rpm软件包都拷贝到我们的该文件夹下

[root@xiaoluo ~]# cd /
[root@xiaoluo /]# mkdir xiaoluo.yum
[root@xiaoluo /]# cd xiaoluo.yum/
[root@xiaoluo xiaoluo.yum]# cp -rv /media/CentOS_6.4_Final/Packages/* .  

***********************************此处省略N个字**********************************************

这个过程需要比较长的时间,因为我们刚也看到,Packages文件夹下面拥有3956个rpm软件安装包。

等全部拷贝完以后,我们查看一下当前这个目录下看有多少个文件:

[root@xiaoluo xiaoluo.yum]# ls -l | wc -l
3957

我们将所有的这些rpm包拷贝到目录下还没用,我们还需要为其创建索引,而创建索引我们需要使用 createrepo 这个命令,这个命令默认是没有按照的,所以接下来我们就需要先安装 createrepo 这个软件了,在我们刚才拷贝过来的rpm包里面就有这个软件,我们通过 rpm -ivh 命令来安装它

[root@xiaoluo xiaoluo.yum]# rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm

error: Failed dependencies:
python-deltarpm is needed by createrepo-0.9.9-17.el6.noarch

[root@xiaoluo xiaoluo.yum]# rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

error: Failed dependencies:
deltarpm = 3.5-0.5.20090913git.el6 is needed by python-deltarpm-3.5-0.5.20090913git.el6.x86_64

[root@xiaoluo xiaoluo.yum]# rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

Preparing... ########################################### [100%]
1:deltarpm ########################################### [ 33%]
2:python-deltarpm ########################################### [ 67%]
3:createrepo ########################################### [100%]

我们看到在安装createrepo命令时提示需要先安装所依赖的其它软件包 python-deltarpm和deltarpm,所以这个时候我们在安装 createrepo时需要将这个两个依赖的安装包一并安装,因为rpm是不能自动解决依赖性的问题的。安装完以后我们就能使用 createreop 命令来创建我们的rpm 软件包的索引了:

[root@xiaoluo xiaoluo.yum]# createrepo -v .  // -v 显示详细信息  createrepo命令后面跟需要建立rpm包的目录即可,.表示当前的路径

这个过程同样的非常漫长。。。。。。。耐心等待一下。。。。。。

************************************此处省略N个字*******************************************

Worker 0: reading libpcap-1.0.0-6.20091201git117cb5.el6.i686.rpm
Worker 0: reading kde-i18n-Hebrew-3.5.10-11.el6.noarch.rpm
Worker 0: reading krb5-libs-1.10.3-10.el6.i686.rpm
Worker 0: reading python-zope-sqlalchemy-0.4-3.el6.noarch.rpm
Worker 0: reading xml-commons-apis-1.3.04-3.6.el6.x86_64.rpm
Worker 0: reading ruby-qpid-qmf-0.14-14.el6_3.x86_64.rpm
Worker 0: reading samba-common-3.6.9-151.el6.i686.rpm
Worker 0: reading ctags-etags-5.8-2.el6.x86_64.rpm
Worker 0: reading cmake-2.6.4-5.el6.x86_64.rpm
Worker 0: reading libXt-devel-1.1.3-1.el6.i686.rpm
Worker 0: reading hyphen-et-0.20030606-5.1.el6.noarch.rpm
Worker 0: reading dbus-devel-1.2.24-7.el6_3.i686.rpm
Worker 0: reading dracut-fips-004-303.el6.noarch.rpm
Worker 0: reading ctan-cm-lgc-typewriter-fonts-0.5-17.1.el6.noarch.rpm
Worker 0: reading binutils-devel-2.20.51.0.2-5.36.el6.i686.rpm
Worker 0: reading gnome-vfs2-devel-2.24.2-6.el6.x86_64.rpm
Workers Finished
Gathering worker results


Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Starting other db creation: Tue May 21 00:41:53 2013
Ending other db creation: Tue May 21 00:41:56 2013
Starting filelists db creation: Tue May 21 00:41:56 2013
Ending filelists db creation: Tue May 21 00:42:03 2013
Starting primary db creation: Tue May 21 00:42:04 2013
Ending primary db creation: Tue May 21 00:42:08 2013
Sqlite DBs complete

经过漫长的等待时间以后我们的索引文件终于创建完了,我们这时可以发现当前目录下多出了一个 repodata/ 文件夹,里面就是存放的我们刚创建好的索引文件:

[root@xiaoluo xiaoluo.yum]# cd repodata/
[root@xiaoluo repodata]# ls -l
总用量 16452
-rw-r--r--. 1 root root 1932879 5月  21 00:41 7508fe0a9f5000259cf085f6dc580cc6288e415bd754e234f7d27728d47044c5-other.xml.gz
-rw-r--r--. 1 root root 1858414 5月  21 00:41 c7242dd3869d1f21165d3a50cd7f06107e59fbd0723df3cb012b95243cf75463-primary.xml.gz
-rw-r--r--. 1 root root 4140751 5月  21 00:42 d7ae001219b8b9c18afa0aca2af2a7e292e40f6a0fa5be19f318e10cbb513ac4-filelists.sqlite.bz2
-rw-r--r--. 1 root root 3719639 5月  21 00:41 df232eb2f6f4a82510b47e8bf13cef90f526ace0cf1d2cc19b578e22b34a30f6-filelists.xml.gz
-rw-r--r--. 1 root root 1761043 5月  21 00:41 e548b07d5d84711cff6022920d86510e5b800b99f4070c798656eff876cf37aa-other.sqlite.bz2
-rw-r--r--. 1 root root 3422151 5月  21 00:42 f38537f9491006bed229244647ee7225073e845d62cb3df02c5e15f7439ffaf9-primary.sqlite.bz2
-rw-r--r--. 1 root root    3018 5月  21 00:42 repomd.xml

这些个索引文件我们不需要去动它,因为yum就是通过读取这些索引文件然后去yum仓库里面查找我们需要的rpm软件包来进行安装的。

接下来我们就要建立自己的yum仓库配置文件了,按照前面的规定,yum仓库的配置文件必须存放在 /etc/yum.repos.d/ 这个目录下,并且要以.repo结尾,所以我们这里创建一个新的yum仓库配置文件 xiaoluo.repo 

[root@xiaoluo xiaoluo.yum]# cd /etc/yum.repos.d/
[root@xiaoluo yum.repos.d]# vi xiaoluo.repo

  [xiaoluo]
  name=This is xiaoluo's yum repo
  baseurl=file:///xiaoluo.yum/  

这里就是我们yum仓库的配置信息,仓库的名字就是xiaoluo 下面的baseurl就是使用我们本地的仓库,就是我们刚才存放rpm软件包的目录,我们自己配置的yum仓库通常不需要加上gpgcheck=1这个参数,本地仓库通常不需要对其进行校验,也不需要添加enabled=1这个参数,因为默认就是enabled=1.

在配置好yum仓库的配置文件以后我们通常需要运行 yum clean all 这个命令

因为yum在工作时会缓存很多的信息,这些缓存信息并不是我们刚才 /xiaoluo.yum/repodata/ 里面的信息,而是会在/var目录下缓存一些信息。所以我们每次在使用yum命令后最好都使用 yum clean all 这个命令来清除这些缓存信息。

[root@xiaoluo yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, refresh
-packagekit, security Cleaning repos: xiaoluo Cleaning up Everything Cleaning up list of fastest mirrors

最后我们就可以来测试一下,看我们自己本地的yum仓库是否已经配置好了,我们通过 yum list 命令来查看我们的本地仓库是否已经配置好:

[root@xiaoluo yum.repos.d]# yum list
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
xiaoluo                                                  | 2.9 kB     00:00 ... 
xiaoluo/primary_db                                       | 3.3 MB     00:00 ...

******************************此处省略N个字*********************************
ypserv.x86_64
2.19-26.el6 xiaoluo yum-plugin-aliases.noarch 1.1.30-14.el6 xiaoluo yum-plugin-changelog.noarch 1.1.30-14.el6 xiaoluo yum-plugin-downloadonly.noarch 1.1.30-14.el6 xiaoluo yum-plugin-tmprepo.noarch 1.1.30-14.el6 xiaoluo yum-plugin-verify.noarch 1.1.30-14.el6 xiaoluo yum-plugin-versionlock.noarch 1.1.30-14.el6 xiaoluo yum-presto.noarch 0.6.2-1.el6 xiaoluo zlib.i686 1.2.3-29.el6 xiaoluo zlib-devel.i686 1.2.3-29.el6 xiaoluo zsh.x86_64 4.3.10-5.el6 xiaoluo

第一次运行时yum仓库会去加载我们的索引文件,我们发现我们本地的yum仓库已经配置好了,通过第三个字段就可以知道我们的仓库名字就是 xiaoluo 

我们再通过 yum whatprovides filename 命令来查看一下:

[root@xiaoluo yum.repos.d]# yum whatprovides mysql
Loaded plugins: fastestmirror, refresh
-packagekit, security Loading mirror speeds from cached hostfile mysql-5.1.66-2.el6_3.x86_64 : MySQL client programs and shared libraries Repo : xiaoluo Matched from: mysql-5.1.67-1.el6_3.x86_64 : MySQL client programs and shared libraries Repo : installed Matched from: Other : Provides-match: mysql

说明此时我们自己的本地yum仓库已经配置成功了!!!

在前面我们说到,yum可以对rpm包进行分组,这样就可以直接对组进行安装操作,从而该组里面所有的软件都会被自动安装。我们可以通过 createrepo 命令的 -g 参数就可以来指定我们本地yum仓库的分组划分,createrepo -g /xx.comps.xml /rpm仓库文件夹

那个用来进行的分组配置文件 xx.comps.xml 就在CentOS安装光盘的 repodata/ 目录下:

[root@xiaoluo yum.repos.d]# cd /media/CentOS_6.4_Final/repodata/
[root@xiaoluo repodata]# ls 08faa81a545bb1157be476ada0524206d137084f50d285b9f7f875b3b02839df-other.sqlite.bz2 2727fcb43fbe4c1a3588992af8c19e4d97167aee2f6088959221fc285cab6f72-c6-x86_64-comps.xml 6ce81da964e0028da004fd4deb817a89d4db450a3d0af4a826d7c6abad0168a9-other.xml.gz cb96727ddc89e5e1786456c6f2c08a81418296f949470311ee9c2ebb1a6ccc7d-c6-x86_64-comps.xml.gz d221c3d1c22cc4e4c4dafc40aa2bf3d353d67882a0d98f7f88ad8215f2d48818-filelists.sqlite.bz2 df5b1510036696c30d69d32d0609c5bfb6f121083ff97bf98a7540c644f6e4ac-primary.sqlite.bz2 f050fc8b41b566153c15bb1d287e6c5a016809415bfce9ddc3540176ce8afdaf-filelists.xml.gz f6f4019e1d7ff186c247c58d394a5faaab51e9ca1fb9c174c94a204588536d14-primary.xml.gz repomd.xml TRANS.TBL

其中这个以 .comps.xml结尾的文件就是我们需要添加的分组信息!!!

 

至此!!本篇随笔终于完笔了,花了我大概3个多小时来写这篇随笔啊!!!!

 

本篇随笔详细讲解了Linux软件管理YUM软件管理的知识,并介绍了yum的基本命令以及如何配置我们自己本地的yum仓库。!!!

 

 

 

 

posted @ 2013-05-21 01:17  xiaoluo501395377  阅读(15356)  评论(2编辑  收藏  举报