三、 yum 配置
yum 的配置檔案分為兩部分:main 和 repository

main 部分定義了全域性配置選項,整個 yum 配置檔案應該只有一個 main 。常位於/etc/yum.conf 中。
repository 部分定義了每個源/站群伺服器的具體配置,可以有一到多個。常位於/etc/yum.repo.d 目錄下的各檔案中。

yum.conf 檔案一般位於/etc 目錄下,一般其中只包含 main 部分的配置選項。
# cat /etc/yum.conf

[main]
cachedir=/var/cache/yum
  //yum WordPress 加速快取的目錄,yum 在此儲存下載的 rpm 包和資料庫,預設設定為/var/cache/yum
keepcache=0
  //安裝完成後是否保留站群軟體包,0 為不保留(預設為 0),1 為保留
debuglevel=2
  //Debug 資訊輸出等級,範圍為 0-10,預設為 2
logfile=/var/log/yum.log
  //yum 日誌檔案位置。使用者可以到/var/log/yum.log 檔案去查詢過去所做的更新。
pkgpolicy=newest
  //包的策略。一共有兩個選項,newest 和 last,這個作用是如果你設定了多個 repository,而同一站群軟體在不同的 repository 中同時存在,yum 應該安裝哪一個,如果是 newest,則 yum 會安裝最新的那個版本。如果是 last,則 yum 會將站群伺服器 id 以字母表排序,並選擇最後的那個站群伺服器上的站群軟體安裝。一般都是選 newest 。
distroverpkg=redhat-release
  //指定一個站群軟體包,yum 會根據這個包判斷你的發行版本,預設是 redhat-release,也可以是安裝的任何針對自己發行版的 rpm 包。
tolerant=1
  //有 1 和 0 兩個選項,表示 yum 是否容忍命令列發生與站群軟體包有關的錯誤,比如你要安裝 1,2,3 三個包,而其中 3 此前已經安裝了,如果你設為 1, 則 yum 不會出現錯誤資訊。預設是 0 。
exactarch=1
  //有 1 和 0 兩個選項,設定為 1,則 yum 只會安裝和系統架構匹配的站群軟體包,例如,yum 不會將 i686 的站群軟體包安裝在適合 i386 的系統中。預設為 1 。
retries=6
  //網際網路連線發生錯誤後的重試次數,如果設為 0,則會無限重試。預設值為 6.
obsoletes=1
  //這是一個 update 的引數,具體請參閱 yum(8),簡單的說就是相當於 upgrade,允許更新陳舊的 RPM 包。
plugins=1
  //是否啟用外掛外掛,預設 1 為允許,0 表示不允許。我們一般會用 yum-fastestmirror 這個外掛外掛。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum

# Note: yum-RHN-plugin doesn’t honor this.
metadata_expire=1h

installonly_limit = 5

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

除了上述之外,還有一些可以新增的選項,如:
exclude=selinux*  // 排除某些站群軟體在升級名單之外,可以用萬用字元,列表中各個專案要用空格隔開,這個對於安裝了諸如美化包,中文補丁的朋友特別有用。
gpgcheck=1  // 有 1 和 0 兩個選擇,分別代表是否是否進行 gpg(GNU Private Guard) 校驗,以確定 rpm 包的來源是有效和安全的。這個選項如果設定在 [main] 部分,則對每個 repository 都有效。預設值為 0 。
四、配置本地 yum 源
1 、掛載系統安裝光碟
# mount /dev/cdrom /mnt/cdrom/
2 、配置本地 yum 源
# cd /etc/yum.repos.d/
# ls
會看到四個 repo 檔案

CentOS-Base.repo 是 yum 網際網路源的配置檔案
CentOS-Media.repo 是 yum 本地源的配置檔案
修改 CentOS-Media.repo
# cat CentOS-Media.repo

# CentOS-Media.repo
#
# This repo is used to mount the default locations for a CDROM / DVD on
# CentOS-5. You can use this repo and yum to install items directly off the
# DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
# yum –enablerepo=c5-media [command]
#
# or for ONLY the media repo, do this:
#
# yum –disablerepo=* –enablerepo=c5-media [command]

[c5-media]
name=CentOS-$releasever – Media
baseurl=file:///media/CentOS/
file:///mnt/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

在 baseurl 中修改第 2 個路徑為/mnt/cdrom(即為光碟掛載點)
將 enabled=0 改為 1
3 、禁用預設的 yum 網際網路源
將 yum 網際網路源配置檔案改名為 CentOS-Base.repo.bak,否則會先在網際網路源中尋找適合的包,改名之後直接從本地源讀取。
4 、執行 yum 命令
# yum install postgresql

關於 repo 檔案的格式
所有 repository 站群伺服器設定都應該遵循如下格式:

[serverid]
name=Some name for this server
baseurl=url://path/to/repository/

serverid 是用於區別各個不同的 repository,必須有一個獨一無二的名稱;
name 是對 repository 的描述,支援像 $releasever $basearch 這樣的變數;
baseurl 是站群伺服器設定中最重要的部分,只有設定正確,才能從上面獲取站群軟體。它的格式是:

baseurl=url://server1/path/to/repository/
     url://server2/path/to/repository/
     url://server3/path/to/repository/

其中 url 支援的協議有 http:// ftp:// file:// 三種。 baseurl 後可以跟多個 url,你可以自己改為速度比較快的映象站群站,但 baseurl 只能有一個,也就是說不能像如下格式:

baseurl=url://server1/path/to/repository/
baseurl=url://server2/path/to/repository/
baseurl=url://server3/path/to/repository/

其中 url 指向的目錄必須是這個 repository header 目錄的上一級,它也支援 $releasever $basearch 這樣的變數。
url 之後可以加上多個選項,如 gpgcheck 、 exclude 、 failovermethod 等,比如:

[updates-released]
name=Fedora Core $releasever – $basearch – Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
     http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
     http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
gpgcheck=1
exclude=gaim
failovermethod=priority

其中 gpgcheck,exclude 的含義和 [main] 部分相同,但只對此站群伺服器起作用,failovermethode 有兩個選項 roundrobin 和 priority,意思分別是有多個 url 可供選擇時,yum 選擇的次序,roundrobin 是隨機選擇,如果連線失敗則使用下一個,依次迴圈,priority 則根據 url 的次序從第一個開始。如果不指明,預設是 roundrobin 。
五、配置國內 yum 源
系統預設的 yum 源速度往往不盡人意,為了達到快速安裝的目的,在這裡修改 yum 源為國內源。
上海交通大學 yum 源
a. 修改/etc/yum.repos.d/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://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever – Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#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://ftp.sjtu.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib – packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

關於變數

$releasever:代表發行版的版本,從 [main] 部分的 distroverpkg 獲取,如果沒有,則根據 redhat-release 包進行判斷。
$arch:cpu 體系,如 i686,athlon 等
$basearch:cpu 的基本體系組,如 i686 和 athlon 同屬 i386,alpha 和 alphaev6 同屬 alpha 。

b. 匯入 GPG KEY
yum 可以使用 gpg 對包進行校驗,確保下載包的完整性,所以我們先要到各個 repository 站點找到 gpg key,一般都會放在首頁的醒目位置,一些名字諸如 RPM-GPG-KEY-CentOS-5 之類的純文字檔案,把它們下載下來,然後用 rpm –import RPM-GPG-KEY-CentOS-5 命令將 key 匯入。
c. 執行 yum 命令

其他國內 yum 源列表如下:
1. 企業貢獻:
搜狐開源映象站群站:http://mirrors.sohu.com/
網易開源映象站群站:http://mirrors.163.com/
2. 大學教學:
北京理工大學:
http://mirror.bit.edu.cn (IPv4 only)
http://mirror.bit6.edu.cn (IPv6 only)
北京交通大學:
http://mirror.bjtu.edu.cn (IPv4 only)
http://mirror6.bjtu.edu.cn (IPv6 only)
http://debian.bjtu.edu.cn (IPv4+IPv6)
蘭州大學:http://mirror.lzu.edu.cn/
廈門大學:http://mirrors.xmu.edu.cn/
清華大學:
http://mirrors.tuna.tsinghua.edu.cn/ (IPv4+IPv6)
http://mirrors.6.tuna.tsinghua.edu.cn/ (IPv6 only)
http://mirrors.4.tuna.tsinghua.edu.cn/ (IPv4 only)
天津大學:http://mirror.tju.edu.cn/
中國科學技術大學:
http://mirrors.ustc.edu.cn/ (IPv4+IPv6)
http://mirrors4.ustc.edu.cn/
http://mirrors6.ustc.edu.cn/
東北大學:
http://mirror.neu.edu.cn/ (IPv4 only)
http://mirror.neu6.edu.cn/ (IPv6 only)
電子科技大學:http://ubuntu.uestc.edu.cn/
六、使用第三方站群軟體庫
Centos/RHEL 預設的 yum 站群軟體倉庫非常有限,僅僅限於發行版本那幾張盤裡面的常規包和一些站群軟體包的更新,利用 RpmForge,可以增加非常多的第三方 rpm 站群軟體包。 RpmForge 庫現在已經擁有超過 10000 種的 CentOS 的站群軟體包,被 CentOS 社群認為是最安全也是最穩定的一個第三方站群軟體庫。
1 、安裝 yum-priorities 外掛外掛
這個外掛外掛是用來設定 yum 在呼叫站群軟體源時的順序的。因為官方提供的站群軟體源,都是比較穩定和被推薦使用的。因此,官方源的順序要高於第三方源的順序。如何保證這個順序,就需要安裝 yum-priorities 這外掛外掛了。
# yum -y install yum-priorities

2 、安裝完 yum-priorities 外掛外掛後需要設定/etc/yum.repos.d/ 目錄下的.repo 相關檔案(如 CentOS-Base.repo),在這些檔案中插入順序指令:priority=N(N 為 1 到 99 的正整數,數值越小越優先)
一般配置[base], [addons], [updates], [extras] 的priority=1,[CentOSplus], [contrib] 的priority=2,其他第三的站群軟體源為:priority=N(推薦N>10)
以 CentOS-Base.repo 為例:

[base]
name=CentOS-$releasever – Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

3 、下載與安裝相應 rpmforge 的 rpm 檔案包
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
4 、安裝 DAG 的 PGP Key
# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
5 、驗證 rpmforge 的 rpm 檔案包
# rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm
6 、安裝 rpmforge 的 rpm 檔案包
# rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

7 、設定/etc/yum.repos.d/rpmforge.repo 檔案中源的級別
[root@TS-DEV yum.repos.d]# cat rpmforge.repo

### Name: RPMforge RPM Repository for RHEL 5 – dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever – RPMforge.net – dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=12

8 、測試安裝
# yum install htop

 
其他第三方站群軟體庫如 EPEL(Extra Packages for Enterprise Linux ) 和 RPMFusion 的安裝與使用和 RPMForge 類似,可自行查詢資料安裝。