一、yum 簡介
yum畔况,是Yellow dog Updater, Modified 的簡稱,是杜克大學為了提高RPM 軟件包安裝性而開發(fā)的一種軟件包管理器跷跪。起初是由yellow dog 這一發(fā)行版的開發(fā)者Terra Soft 研發(fā),用python 寫成葛菇,那時還叫做yup(yellow dog updater)橡羞,后經(jīng)杜克大學的Linux@Duke 開發(fā)團隊進行改進眯停,遂有此名卿泽。yum 的宗旨是自動化地升級,安裝/移除rpm 包签夭,收集rpm 包的相關信息,檢查依賴性并自動提示用戶解決侄旬。yum 的關鍵之處是要有可靠的repository,顧名思義,這是軟件的倉庫,它可以是http 或ftp 站點汰蜘,也可以是本地軟件池之宿,但必須包含rpm 的header族操,header 包括了rpm 包的各種信息比被,包括描述色难,功能等缀,提供的文件,依賴性等尺迂。正是收集了這些header 并加以分析,才能自動化地完成余下的任務蹲盘。
yum 的理念是使用一個中心倉庫(repository)管理一部分甚至一個distribution 的應用程序相互關系,根據(jù)計算出來的軟件依賴關系進行相關的升級膳音、安裝召衔、刪除等等操作祭陷,減少了Linux 用戶一直頭痛的dependencies 的問題。這一點上颗胡,yum 和apt 相同。apt 原為debian 的deb 類型軟件管理所使用毒姨,但是現(xiàn)在也能用到RedHat 門下的rpm 了。
yum 主要功能是更方便的添加/刪除/更新RPM 包闸迷,自動解決包的倚賴性問題,便于管理大量系統(tǒng)的更新問題腥沽。
yum 可以同時配置多個資源庫(Repository)鸠蚪,簡潔的配置文件(/etc/yum.conf)师溅,自動解決增加或刪除rpm 包時遇到的依賴性問題盾舌,保持與RPM 數(shù)據(jù)庫的一致性墓臭。
二妖谴、yum 安裝
CentOS 默認已經(jīng)安裝了yum,不需要另外安裝膝舅,這里為了實驗目的,先將yum 卸載再重新安裝洼滚。
1、查看系統(tǒng)默認安裝的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 從網(wǎng)上下載相關包安裝挪哄,也可以掛載系統(tǒng)安裝光盤進行安裝,這里選擇掛載系統(tǒng)安裝光盤進行安裝琉闪。
# 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
其他安裝包根據(jù)自己需要安裝迹炼。
三、yum 配置
yum 的配置文件分為兩部分:main 和repository
- main 部分定義了全局配置選項颠毙,整個yum 配置文件應該只有一個main。常位于/etc/yum.conf 中蛀蜜。
- repository 部分定義了每個源/服務器的具體配置,可以有一到多個磅摹。常位于/etc/yum.repo.d 目錄下的各文件中霎奢。
yum.conf 文件一般位于/etc目錄下,一般其中只包含main部分的配置選項幕侠。
# cat /etc/yum.conf
[![復制代碼](http://upload-images.jianshu.io/upload_images/16619462-4bd55cebd7f9fc00.gif?imageMogr2/auto-orient/strip)](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[main]
cachedir=/var/cache/yum
//yum 緩存的目錄,yum 在此存儲下載的rpm 包和數(shù)據(jù)庫晤硕,默認設置為/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 會根據(jù)這個包判斷你的發(fā)行版本幕袱,默認是redhat-release,也可以是安裝的任何針對自己發(fā)行版的rpm 包涯捻。
tolerant=1
//有1和0兩個選項,表示yum 是否容忍命令行發(fā)生與軟件包有關的錯誤障癌,比如你要安裝1,2,3三個包,而其中3此前已經(jīng)安裝了康辑,如果你設為1,則yum 不會出現(xiàn)錯誤信息轿亮。默認是0。
exactarch=1
//有1和0兩個選項我注,設置為1,則yum 只會安裝和系統(tǒng)架構匹配的軟件包励七,例如奔缠,yum 不會將i686的軟件包安裝在適合i386的系統(tǒng)中。默認為1添坊。
retries=6
//網(wǎng)絡連接發(fā)生錯誤后的重試次數(shù),如果設為0雨女,則會無限重試阳准。默認值為6.
obsoletes=1
//這是一個update 的參數(shù),具體請參閱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</pre>
除了上述之外洽故,還有一些可以添加的選項,如:
exclude=selinux* // 排除某些軟件在升級名單之外时甚,可以用通配符撞秋,列表中各個項目要用空格隔開,這個對于安裝了諸如美化包吻贿,中文補丁的朋友特別有用哑子。
gpgcheck=1 // 有1和0兩個選擇,分別代表是否是否進行gpg(GNU Private Guard) 校驗帐要,以確定rpm 包的來源是有效和安全的弥奸。這個選項如果設置在[main]部分,則對每個repository 都有效盛霎。默認值為0。
四期揪、配置本地yum源
1规个、掛載系統(tǒng)安裝光盤
# mount /dev/cdrom /mnt/cdrom/
2、配置本地yum源
# cd /etc/yum.repos.d/
# ls
會看到四個repo 文件
CentOS-Base.repo 是yum 網(wǎng)絡源的配置文件
CentOS-Media.repo 是yum 本地源的配置文件
修改CentOS-Media.repo
# cat CentOS-Media.repo
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 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</pre>
在baseurl 中修改第2個路徑為/mnt/cdrom(即為光盤掛載點)
將enabled=0改為1
3缤苫、禁用默認的yum 網(wǎng)絡源
將yum 網(wǎng)絡源配置文件改名為CentOS-Base.repo.bak墅拭,否則會先在網(wǎng)絡源中尋找適合的包,改名之后直接從本地源讀取翼虫。
4、執(zhí)行yum 命令
# yum install postgresql
關于repo 文件的格式
所有repository 服務器設置都應該遵循如下格式:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[serverid]
name=Some name for this server
baseurl=url://path/to/repository/</pre>
- serverid 是用于區(qū)別各個不同的repository掸宛,必須有一個獨一無二的名稱招拙;
- name 是對repository 的描述,支持像basearch這樣的變量别凤;
- baseurl 是服務器設置中最重要的部分,只有設置正確求豫,才能從上面獲取軟件诉稍。它的格式是:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">baseurl=url://server1/path/to/repository/
url://server2/path/to/repository/
url://server3/path/to/repository/</pre>
其中url 支持的協(xié)議有 http:// ftp:// file:// 三種。baseurl 后可以跟多個url杯巨,你可以自己改為速度比較快的鏡像站,但baseurl 只能有一個杜恰,也就是說不能像如下格式:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">baseurl=url://server1/path/to/repository/
baseurl=url://server2/path/to/repository/
baseurl=url://server3/path/to/repository/</pre>
其中url 指向的目錄必須是這個repository header 目錄的上一級仍源,它也支持basearch 這樣的變量。
url 之后可以加上多個選項檬寂,如gpgcheck戳表、exclude、failovermethod 等匾旭,比如:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[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</pre>
其中gpgcheck,exclude 的含義和[main] 部分相同女蜈,但只對此服務器起作用,failovermethode 有兩個選項roundrobin 和priority伪窖,意思分別是有多個url可供選擇時,yum 選擇的次序竹伸,roundrobin 是隨機選擇簇宽,如果連接失敗則使用下一個,依次循環(huán)魏割,priority 則根據(jù)url 的次序從第一個開始。如果不指明拜银,默認是roundrobin遭垛。
五、配置國內(nèi)yum源
系統(tǒng)默認的yum 源速度往往不盡人意耻卡,為了達到快速安裝的目的牲尺,在這里修改yum源為國內(nèi)源。
上海交通大學yum源
a. 修改/etc/yum.repos.d/CentOS-Base.repo為:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 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</pre>
關于變量
- $releasever:代表發(fā)行版的版本,從[main]部分的distroverpkg獲取蜒简,如果沒有,則根據(jù)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. 執(zhí)行yum 命令
其他國內(nèi)yum源列表如下:
1. 企業(yè)貢獻:
搜狐開源鏡像站:http://mirrors.sohu.com/
網(wǎng)易開源鏡像站: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軟件倉庫非常有限克伊,僅僅限于發(fā)行版本那幾張盤里面的常規(guī)包和一些軟件包的更新,利用RpmForge不从,可以增加非常多的第三方rpm軟件包。RpmForge庫現(xiàn)在已經(jīng)擁有超過10000種的CentOS的軟件包椿息,被CentOS社區(qū)認為是最安全也是最穩(wěn)定的一個第三方軟件庫坷衍。
1、安裝yum-priorities插件
這個插件是用來設置yum在調(diào)用軟件源時的順序的枫耳。因為官方提供的軟件源,都是比較穩(wěn)定和被推薦使用的钻心。因此仑最,官方源的順序要高于第三方源的順序。如何保證這個順序警医,就需要安裝yum-priorities這插件了坯钦。
# yum -y install yum-priorities
2侈玄、安裝完yum-priorities插件后需要設置/etc/yum.repos.d/ 目錄下的.repo相關文件(如CentOS-Base.repo),在這些文件中插入順序指令:priority=N (N為1到99的正整數(shù)突颊,數(shù)值越小越優(yōu)先)
一般配置[base], [addons], [updates], [extras] 的priority=1潘悼,[CentOSplus], [contrib] 的priority=2,其他第三的軟件源為:priority=N (推薦N>10)
以CentOS-Base.repo 為例:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[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</pre>
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
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">### 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</pre>
8怜浅、測試安裝
# yum install htop
其他第三方軟件庫如 EPEL(Extra Packages for Enterprise Linux ) 和 RPMFusion 的安裝與使用和RPMForge類似蔬崩,可自行查找資料安裝。