摘要:闡述Linux操作系統(tǒng)選軟件安裝中兩種常見的形式,并分析了RPM軟件包管理存在的問題,引入YUM技術(shù)并對YUM倉庫的安裝、配置與搭建進(jìn)行研究,實(shí)現(xiàn)使用YUM倉庫解決RPM管理中存在的依賴關(guān)系。
關(guān)鍵詞:YUM倉庫 RPM 開源軟件 Linux系統(tǒng)
對于Linux初學(xué)者來說,安裝軟件是一件很讓人頭疼的事,因?yàn)樵贚inux以開源著稱,Linux下安裝軟件不像在 Windows中那樣簡單。在Linux系統(tǒng)中大多數(shù)軟件提供的是源代碼,而不是現(xiàn)成的可執(zhí)行文件,這就要求用戶根據(jù)自己系統(tǒng)的實(shí)際情況和自身的需要來配置、編譯源程序后,軟件才能使用。這也是Linux之所以不能被普遍人群所接受的重要原因。隨著Linux的不斷升級,軟件的安裝也在不斷的改進(jìn),本文旨在研究Linux下的YUM技術(shù)。
1 問題描述
隨著Linux的不斷升級與進(jìn)步,目前Linux下的軟件安裝包主要有兩種形式,其一是RPM包,其二是壓縮成*.tar.gz的形式。*.tar.gz的格式需要有一定的Linux專業(yè)功底,RPM包是最受歡迎的形式。Linux是開源的操作系統(tǒng),并且一向推崇自由軟件,正是因?yàn)殚_源與自由造成了RPM包具有很深的依賴關(guān)系。使用RPM在Linux中安裝軟件或者服務(wù)時經(jīng)常會涉及到rpm包的依賴,往往我們在安裝A軟件時,提示會依賴于B,安裝B時會依賴于C,安裝時會……等一系列的依賴關(guān)系,YUM倉庫技術(shù)可以自動解決RPM的依賴關(guān)系,方便軟件的安裝。因此本文的研究具有重要的意義。
2 YUM技術(shù)介紹
Yum(全稱為Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基于RPM包管理,能夠從指定的服務(wù)器自動下載RPM包并且安裝,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
我們在安裝好Linux后要進(jìn)行YUM源的設(shè)置,是為了方便日后對軟件包的管理,解決單獨(dú)安裝RPM軟件包時可能產(chǎn)生的軟件包依賴關(guān)系。在企業(yè)中,我們會設(shè)置企業(yè)自己的YUM源(庫)方便企業(yè)Linux系統(tǒng)(主要是紅帽和紅帽的Fedora)對軟件包的管理,更重要的原因是保證YUM源的安全性,因?yàn)橐粋€軟件包從源頭就被修改過或者做過手腳的話,那么這樣的軟件的安裝已經(jīng)沒有什么意義了。
3 YUM倉庫的搭建
第一步:設(shè)置虛擬光驅(qū),裝入Red Hat Enterprise Linux 6.0光盤,如圖1,圖2所示。
第二步:掛在光驅(qū)到/mnt/目錄下。
root@seashorewang ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
第三步:創(chuàng)建cangku文件夾,并拷貝/mnt/Packages/下的所有文件到cangku文件下。
[root@seashorewang /]# mkdir cangku
[root@seashorewang /]#cd cangku
[root@seashorewang /]# cd /cangku
[root@seashorewang cangku]# cp -r /mnt/Packages/ /cangku/
說明:因?yàn)楣獗P中的Packages目錄中的內(nèi)容過大,需要1-2分鐘的等待,當(dāng)然不同配置的計(jì)算機(jī)的時耗不一樣。
第四步:安裝createrepo文件。
[root@seashorewang yum.repos.d]# cd /mnt/Packages/
[root@seashorewang Packages]# rpm -e creterapo-0.9.8.4.el6.noarch deltarpm-3.5-0.5.20090913git.el6.
I686 python-deltarpm-3.5-0.5.20090913git.el6.i686
[root@seashorewang Packages]#rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm
Warning: createrepo-0.9.8.4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY error: Failed dependendcies:
Deltarpm is needed by createrepo-0.9.8-4.el6.noarch
Python-deltarpm is needed by createrepo-0.9.8-4.el6.noarch
說明:這里因?yàn)閏reaterepo-0.9.8-4.el6.noarch.rpm軟件包依賴于另外兩個軟件包,所以安裝出現(xiàn)了錯誤。
[rot@seashorewang Packages]# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm deltarpm-3.5-0.5.20090913git.el6.i686.rpm pytho
Warning: createrepo-0.9.8-4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ###########################[100]
1:deltarpm ###########################[33%]
2:python-deltarpm ###########################[67%]
3:createrepo ###########################[100%]
說明:這里將三個軟件包一起安裝,可以自動解決依賴關(guān)系。
第五步:創(chuàng)建依賴關(guān)系。
[root@seashorewang repodata]# cd /
[root@seashorewang /]# createrepo -g /mnt/repodata/3c26ed953dc3d25ef7bc8f1ff057le771cc16fefe6623ba654ele33a68cbaelb-comps-rhel6-Server.xml.gz /cangku/Packages/
2168/2679 -hunspell-nb-2.0.100.5.1.el6.noarch.rpm
Iso-8859-l encoding on Ville Skytt?
2679/2679 -k3b-1.0.5-13.el6.i686.rpm
Saving Primary metadata
Saving file lists mesadata
Saving other metadata
說明:這里的/cangku/Packages/目錄一定要和后面創(chuàng)建的配置文件一致。
第六步:編寫配置文件。
[root@seashorewang /]# cd /etc/yum.repos.d/
[root@seashorewang yum.repos.d]# ls
wangluocangku.repo
說明:倉庫的配置文件保存到/etc/yum.repos.d/目錄下,這個非常重要。
[root@seashorewang yum.repos.d]# vim wodecangku.repo
[myyum]
name=wodecangku
Baseurl=file:///cangku/Packages/
endabled=1
Gpgchech=0
說明:以上是配置文件的內(nèi)容,下面對每一項(xiàng)逐一介紹。
[ ]是倉庫名字,這個可以隨意;
Name=….這個你可以理解為倉庫的描述,這個可以不寫這一行;
Baseurl=file:///cangku/Packages,這里解釋一下倉庫的baseurl可以指向本地,ftp和互聯(lián)網(wǎng),所有才有了三種配置。file:// ftp:// http://,這里要強(qiáng)調(diào)的是Linux中一切都以根開始的那路徑上要加個/,所以最后是file:///cangku/Packages,意思是在本地的/ cangku / Packages下;
Enable=1,這里是說是否用戶倉庫,1是啟用,0是不啟用;
Gpgcheck=0是說是否檢查軟件的KEY,我一般都不檢查;
Gpgkey=…這里是說你的KEY文件在哪里,默認(rèn)為不啟用,指定Red Hat發(fā)行版數(shù)字簽名公鑰文件。
第七步:測試。
[root@seashorewang yum.repos.d]# yum install xinetd
Loaded plugins: refresh-packagekit, rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Myyum | 2.0 kB 00:00...
Myyum/primary |1.3 MB 00:00...
Myyum 2679/2679
Setting up Install Process
Resolving Dependencies
--> Running taansaction check
---> Package xinetd.i686 2:2.3.14-29.el6 set to be updated
-->Finished Dependency Resolution
Dependencies Resolved
Package Arch Version Repository Size
Installing:
Xinetd i686 2:2.3.14-29.el6 myyum 121k
Transaction Summary
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 121 k
Installed size:258 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Rransaction
Warning: RPMDB altered outside of yum.
Installing : 2:xinetd-2.3.14-29.el6.i6861/1
Installed:
Xinetd.i686 2:2.3.14.29.el6
Complete!
4 總結(jié)
Linux下軟件的安裝分為源代碼和RPM包,RPM包的使用有效解決了大文件編譯難的問題,但是卻存在很多依賴關(guān)系,為了能夠自動解決依賴關(guān)系出現(xiàn)了YUM技術(shù),文章對YUM技術(shù)進(jìn)行研究并詳細(xì)介紹了YUM倉庫配置、搭建與測試的具體步驟。
參考文獻(xiàn):
[1]王海賓,白尚旺,等.基于Observer模式的AS/RS調(diào)度系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(3):110-113.
[2]鳥哥.鳥哥的Linux私房菜基礎(chǔ)篇(第三版)[M].機(jī)械工業(yè)出版社,2009.7.
[3]鳥哥.鳥哥的Linux私房菜服務(wù)器架設(shè)篇(第三版)[M].機(jī)械工業(yè)出版社,2009.7.
作者簡介:
曹新鴻(1971-),男,陜西藍(lán)田人,重慶大學(xué)本科學(xué)歷,工程師,邢臺職業(yè)技術(shù)學(xué)院后勤集團(tuán)職工,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。