CentOS yum 源的配置與使用

CentOS yum 源的配置與使用
一、yum 簡介

  yum,是Yellow dog Updater, Modified 的簡稱,是杜克大學爲了提高RPM 軟件包安裝性而開發的一種軟件包管理器。起初是由yellow dog 這一發行版的開發者Terra Soft 研發,用python 寫成,那時還叫做yup(yellow dog updater),後經杜克大學的Linux@Duke 開發團隊進行改進,遂有此名。yum 的宗旨是自動化地升級,安裝/移除rpm 包,收集rpm 包的相關信息,檢查依賴性並自動提示用戶解決。yum 的關鍵之處是要有可靠的repository,顧名思義,這是軟件的倉庫,它可以是http 或ftp 站點,也可以是本地軟件池,但必須包含rpm 的header,header 包括了rpm 包的各種信息,包括描述,功能,提供的文件,依賴性等。正是收集了這些header 並加以分析,才能自動化地完成餘下的任務。

  yum 的理念是使用一箇中心倉庫(repository)管理一部分甚至一個distribution 的應用程序相互關係,根據計算出來的軟件依賴關係進行相關的升級、安裝、刪除等等操作,減少了Linux 用戶一直頭痛的dependencies 的問題。這一點上,yum 和apt 相同。apt 原爲debian 的deb 類型軟件管理所使用,但是現在也能用到RedHat 門下的rpm 了。

  yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決包的倚賴性問題,便於管理大量系統的更新問題。

  yum 可以同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增加或刪除rpm 包時遇到的依賴性問題,保持與RPM 數據庫的一致性。

二、yum 安裝

CentOS 默認已經安裝了yum,不需要另外安裝,這裏爲了實驗目的,先將yum 卸載再重新安裝。

1、查看系統默認安裝的yum

rpm -qa|grep yum

2、卸載yum

rpm -e yum-fastestmirror-1.1.16-14.el5.centos.1 yum-metadata-parser-1.1.2-3.el5.centos yum-3.2.22-33.el5.centos

3、重新安裝yum

這裏可以通過wget 從網上下載相關包安裝,也可以掛載系統安裝光盤進行安裝,這裏選擇掛載系統安裝光盤進行安裝。

mount /dev/cdrom /mnt/cdrom/

rpm -ivh yum-3.2.22-33.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm

yum -v

yum 的基礎安裝包包括:

yum  //RPM installer/updater
yum-fastestmirror  //Yum plugin which chooses fastest repository from a mirrorlist
yum-metadata-parser  //A fast metadata parser for yum
其他安裝包根據自己需要安裝。

三、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 緩存的目錄,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

參考 http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章