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倉庫。!!!

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM