一、yum發展與作用
在linux系統維護中管理員經常遇到軟體包的依賴問題,有時無法解決,比如你在安裝庫文件時常出現報錯問題,說依賴其它軟體包.由於這個問題一直困繞linux的廣大愛好者,開源社區的軟體愛好者開始開發一些工具來解決這個問題;比如Yellow Dog的YUM(Yellow dog Update,Modified),Debian的APT(Advanced Packaging tool)等,開發這些工具都是為了解決rpm包的依賴關係.而yum起初是由yellow dog發行版的開發者Terra soft 研發,用python寫成,那時叫做yum(yellow dog updater),后經杜克大學的linux@Duke開團隊時行改進便得此名;yum的宗旨是自動化升級,安裝/移除rpm包,收集rpm包的相關信息,檢查依賴性並自動提示用戶解決,而其關鍵之處就是有可靠的repository(軟體的倉庫),可以是http、ftp、操作系統本機,但是必須包含rpm的(header),header包括了rpm包的信息,包括描述,功能,提供的文件,依賴等,正是收集了這些header並加以分析,才能自動化完成餘下的任務.
Yum具有如下功能:
1、自動解決包的依賴性問題,並能夠添加/刪除/更新RPM包
2、便於管理大量系統的更新問題
3、可以同時配置多個資源庫
4、簡潔的配置多個資源庫(Repository)
5、保持與RPM的數據的一致
6、有一個比較詳細的log,可以查看何時升級安裝了什麼軟體
二、yum倉庫:
倉庫(repository)是一個預備好的目錄,或是一個網站,包含了軟體包和索引文件,yum可以在倉庫中自動地定位並獲取正確的RPM軟體包,這樣就不必要手動搜索和安裝新應用程序和升級補丁了,只要用一個命令就可以更新系統 所有的軟體,也可以根據指定搜索目標來查找安裝新軟體
倉庫的分類:
如下是本地倉庫的配置:
1、 掛載rhel5DVD光碟到/media/cdrom/
2、 修改repo文件(必須在/etc/yum.repos.d/目錄下以repo結尾)
使文件修改成如下:
[RHEL5-Server]
name=RHEL5-Server
baseusrl=file:///media/cdrom/Server 默認rpm包安裝路徑
gpgcheck=1
enabled=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release
[RHEL5-VT]
name=RHEL5-VT
baseusrl=file:///media/cdrom/VT
gpgcheck=1
enabled=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release
[RHEL5-Cluster]
name=RHEL5-Server
baseusrl=file:///media/cdrom/Cluster
gpgcheck=1
enabled=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release
[RHEL5-ClusterStorage]
name=RHEL5-ClusterStorge]
baseusrl=file:///media/cdrom/ClusterStorage
gpgcheck=1
enabled=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release
配置文件內容簡介:
[]內的是倉庫的名稱
name 是倉庫的位置
baseurl 倉庫的位置
enabled 是否啟用這個倉庫,為1是起用,0為禁用
gpgcheck 是否檢查GPG簽名(用來驗證要安裝的包是不是redhat官方的)
GPGKEY是存放地址我們需要用下面的命令來導入到這個簽名,才能使用此功能
---------------------------------------------------------------------------------------------
下面我們將光碟中的文件拷貝到系統中來進行yum倉庫的配置
這時需要重新配置repository.
[root@localhost ~]# cd /var/ftp/rhel5/Server/
[root@localhost Server]#
[root@localhost Server]# createrepo -g repodata/comps-rhel5-cluster.xml ./
[root@localhost Server]# cd ../ClusterStorage/
[root@localhost ClusterStorage]# createrepo -g repodata/comps-rhel5-cluster-st.xml ./
[root@localhost VT]# createrepo -g repodata/comps-rhel5-vt.xml ./
[root@localhost VT]# rm -rf ../*/.olddata
三、相關的軟體:
createrepo-0.4.4-2.fc6
yum-3.0.2-5.el5
四、yum的相關配置文件與講解:
YUM的配置文件
YUM的一切配置信息都儲存在一個叫YUM.conf的配置文件中,通常位於/etc目 錄下,這是整個YUM系統的重中之重,有必要詳細介紹.下面是一個從網上找來的YUM.con文件,讓我們以此為例,進行說明.
1. [main]
2. cachedir=/var/cache/YUM
3. debuglevel=2
4. logfile=/var/log/YUM.log
5. pkgpolicy=newest
6. distroverpkg=redhat-release
7. tolerant=1
8. exactarch=1
9. retries=1
[main]
cachedir:YUM緩存的目錄,YUM在此存儲下載的rpm包和資料庫,一般是/var/cache/YUM.
debuglevel:除錯級別,0-10,默認是2.
logfile:YUM的日誌文件,默認是/var/log/YUM.log.
pkgpolicy:包的策略.一共有兩個選項,newest和last,這個作用是如果你設置了多個repository,而同一軟體在不同的 repository中同時存在,YUM應該安裝哪一個,如果是newest,則YUM會安裝最新的那個版本.如果是last,則YUM會將伺服器id以字母表排序,並選擇的那個伺服器上的軟體安裝.一般都是選newest.
distroverpkg:指定一個軟體包,YUM會根據這個包判斷你的發行版本,默認是redhat-release,也可以是安裝的任何針對自己發行版的rpm包.
exactarch,有兩個選項1和0,代表是否只升級和你安裝軟體包cpu體系一致的包,如果設為1,則如你安裝了一個i386的rpm,則YUM不會用1686的包來升級.
retries 網路連接發生錯誤后的重試次數,如果設為0,則會無限重試.
tolerent,也有1和0兩個選項,表示YUM是否容忍命令行發生與軟體包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設為1,則YUM不會出現錯誤信息.默認是0.
除了上述之外,還有一些可以添加的選項,如
exclude=,排除某些軟體在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對於安裝了諸如美化包,中文補丁的朋友特別有用.
gpgchkeck= 有1和0兩個選擇,分別代表是否是否進行gpg校驗,如果沒有這一項,默認好像也是檢查的.
另外,在/etc/yum.repo.d目錄下,存放的是yum的伺服器配置,所有伺服器設置都應該遵循如下格式:
1. [serverid]
2. name=Some name for this server
3. baseurl=url://path/to/repository/
serverid是用於區別各個不同的repository,必須有一個獨一無二的名稱.
name是對repository的描述,支持像$releasever $basearch這樣的變數;
baseurl是伺服器設置中最重要的部分,只有設置正確,才能從上面獲取軟體.它的格式是:
1. baseurl=url://server1/path/to/repository/
2. url://server2/path/to/repository/
3. url://server3/path/to/repository/
其中url支持的協議有 http:// ftp:// file://三種.baseurl后可以跟多個url,你可以自己改為速度比較快的鏡像站,但baseurl只能有一個.
導入GPG KEY:
導入每個reposity的GPG key,前面說過,YUM可以使用gpg對包進行校驗,確保下載包的完整性,我們先要到各個repository站點找到gpg key,一般都會放在首頁醒目位置,一些名字諸如 RPM-GPG-KEY.txt之類的純文本文件,把它們下載,然後用rpm --import xxx.txt命令將它們導入,最好把發行版自帶GPG-KEY也導入.rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方軟體升級用的上.
常見的幾個變數:
$releasever,發行版的版本,從[main]部分的distroverpkg獲取,如果沒有,則根據redhat-release包進行判斷.
$arch,cpu體系,如i686,athlon等
$basearch,cpu的基本體系組,如i686和athlon同屬i386,alpha和alphaev6同屬alpha.
五、yum案例講解:
一,準備工作
1,啟動REDHAT Linux ,並放入安裝光碟
2,掛載光碟機 mount /dev/cdrom /mnt
3,安裝FTP服務.如果你只是自己本機使用YUM源可以省略掉這一步
cd /mnt/Server
rpm -ivh vsftpd*
chkconfig vsftpd on
service vsftpd start
4,安裝createrepo軟體包
rpm –ivh createrepo*
5,拷貝系統盤中的文件本系統中
cp -R /mnt/Server /var/ftp/pub
二,搭建YUM
1, 生成依賴性關係
createrepo -g /var/ftp/pub/Server/repodata/comps-rhel5-server-core.xml /var/ftp/pub/Server/
這個地方要注意,comps-rhel5-server-core.xml一定不能手動生成,默認安裝光碟上已經有了
2, 做完上面的步驟後會有一個錯誤提示,「Could not remove old metadata dir: .olddata「說目錄有問題.不用管他,把那個目錄刪除掉
rm –rf /var/ftp/pub/Server/.olddata
3, 把步驟1再做一遍
createrepo -g /var/ftp/pub/Server/repodata/comps-rhel5-server-core.xml /var/ftp/pub/Server/
4,cd /etc/yum.repos.d
vim yum.repo (新建一個倉庫文件,名字可以隨便起,在文件中寫如下內容)
[base]
name=base
baseurl=ftp://192.168.0.6/pub/Server #192.168.0.6是你的YUM源地址
enabled=1 #是否開啟源
gpgcheck=1 #是否驗證,可不要
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #驗證的密鑰,可不要
[火星人 ] 在RHEL5中Yum 應用已經有479次圍觀