對于企而言,假設有一批CentOS 5.7伺服器需要更新到CentOS 5.8,每一台機都使用yum update指令從外網下載下傳更新包的話,既費時間,也占流量,實在不劃算。而對于虛拟機玩家而言,可能需要更新的系統不多,也就三四台,但倘若都從外網下載下傳更新包,也是件很費勁的的事情,而且,有時候會遇到實體機不友善聯網的情況,那就加無奈。
是以,在區域網路内搭建yum伺服器,應該是每個Linux從業者必須懂的基本功。SQ不才,直到現在才弄懂,實在慚愧,在此分享一下經驗。其實操作很簡單,注意一些細節就行了。
本文作業環境:
注:以下的操作是在VirtualBox虛拟機環境下進行的。
提供Yum源的伺服器,以下簡稱為Yum伺服器:
CentOS 5.8,主機名為luffy,IP為192.168.56.123
(注:Yum伺服器也可以為CentOS 5.7系統)
需要更新的伺服器,以下簡稱為用戶端:
CentOS 5.7,主機名為zoro,IP為192.168.56.124
一、
到官網查找并下載下傳最新的CentOS 5.8鏡像(國内也有放多鏡像源,比如http://mirrors.163.com/centos/ ,更新得也蠻快的),下載下傳CentOS-5.8-i386-bin-DVD-1of2就可以了,DVD-2of2用不到。
如果Yum伺服器是實體機,需将DVD-1of2鏡像刻錄到DVD光碟,然後将放進Yum伺服器光驅;
如果是虛拟機,則在虛拟機光驅設定中,選擇實體機上存放的DVD-1of2鏡像即可。
Yum伺服器加載光驅
[root@luffy ~]# mount /dev/cdrom /media
mount: block device /dev/sr0 is write-protected, mounting read-only
二、
為使區域網路内其他CentOS伺服器可以通路到Yum 伺服器上的資源,需要在Yum伺服器上架設http伺服器或者ftp伺服器。鑒于http伺服器設定簡易、流行,本文使用http伺服器。
如果Yum伺服器是聯網的,可使用yum 指令直接安裝Appache伺服器,即軟體包httpd
[root@luffy ~]#yum install httpd
這裡由于虛拟機不友善連接配接外網(采用了Host-only Adapter模式,并且内網IP位址是固定,懶得改了,虛拟機玩家都有遇到過這種情形吧~),需要手動安裝rpm包(直接在系統鏡像裡找,也可以到http://rpm.pbone.net/ 等網站找,然後再從實體機上傳到虛拟機裡),由于rpm指令無法解決包的依賴性問題,故需要安裝若幹個包,包括httpd-2.2.3、apr-1.2.7、apr-util-1.2.7,postgresql-libs-8.1.23。
具體過程如下(為說清楚包的依賴性,我把報錯也列出來了):
[root@luffy ~]# rpm -ivh /media/CentOS/httpd-2.2.3-63.el5.centos.i386.rpm
error: Failed dependencies:
libapr-1.so.0 is needed by httpd-2.2.3-63.el5.centos.i386
libaprutil-1.so.0 is needed by httpd-2.2.3-63.el5.centos.i386
[root@luffy ~]# rpm -ivh /media/CentOS/apr-1.2.7-11.el5_6.5.i386.rpm
Preparing... ########################################### [100%]
1:apr ########################################### [100%]
[root@luffy ~]# rpm -ivh /media/CentOS/apr-util-1.2.7-11.el5_5.2.i386.rpm
libpq.so.4 is needed by apr-util-1.2.7-11.el5_5.2.i386
[root@luffy ~]# rpm -ivh /media/CentOS/postgresql-libs-8.1.23-1.el5_7.3.i386.rpm
1:postgresql-libs ########################################### [100%]
1:apr-util ########################################### [100%]
1:httpd ########################################### [100%]
啟動httpd服務,并設定為開機時啟動
[root@luffy ~]# service httpd start
[root@luffy ~]# chkconfig httpd on
三、
在Appache根目錄下建立檔案夾yum及其子檔案夾CentOS,将CD光牒内CentOS檔案夾下的所有内容拷貝到/var/www/html/yum/CentOS目錄下(光碟内其他的資料不需要)。
[root@luffy ~]# mkdir -p /var/www/html/yum
[root@luffy ~]# mkdir -p /var/www/html/yum/CentOS
[root@luffy ~]# cp -prf /media/CentOS/* /var/www/html/yum/CentOS/
可以彈出光碟了
[root@luffy~]# umount /dev/cdrom
[root@luffy~]# eject
四、Yum伺服器安裝createrepo并建立倉庫
createrepo是Linux下的建立倉庫的軟體包,這個軟體包在系統鏡像CentOS-5.8-i386-bin-DVD-1of2裡是有的。這裡已經拷貝到/var/www/html/yum/CentOS目錄下了。
[root@luffy ~]# rpm -ivh /var/www/html/yum/CentOS/createrepo-0.4.11-3.el5.noarch.rpm
1:createrepo ########################################### [100%]
(注:在CentOS 5.7下安裝會有如下警告,但不影響後續操作:
warning: /var/www/html/yum/CentOS/createrepo-0.4.11-3.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e8562897)
安裝完成之後,在/usr/bin/目錄下會有一個createrepo指令。使用createrepo 生成XML metadata,在/var/www/html/yum/CentOS目錄下生成repodata 檔案夾(具體有何作用,還沒弄明白)
[root@luffy ~]# createrepo /var/www/html/yum/CentOS/
2669/2669 - compat-gcc-34-g77-3.4.6-4.1.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
五、
用戶端修改Centos-Base.repo,建議先備份一個副本,以後若要從外網更新的話,可以再使用。
[root@zoro ~]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
[root@zoro ~]# vi /etc/yum.repos.d/CentOS-Base.repo
##############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
baseurl=http://192.168.56.123/yum/CentOS
enabled=1
gpgcheck=0
#released updates
[updates]
name=CentOS-$releasever - Updates
gpgcheck=1
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#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://mirror.centos.org/centos/$releasever/centosplus/$basearch/
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://mirror.centos.org/centos/$releasever/contrib/$basearch/
##############Centos-Base.repo内容修改後,以上#######################
注:[centosplus]和[contrib]的内容不需要修改,它們的enabled值預設值是0,即子產品不啟用。
操作基本完成了,運氣好的話,可以直接從Yum伺服器拿軟體、更新包。
不過,并不排除意外發生。比如有報錯,提示找不着路由。
以安裝mc為例:
[root@zoro ~]# yum install mc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
http://192.168.56.123/yum/CentOS/repodata/repomd.xml: [Errno 4] IOError: <urlopen error (113, 'No route to host')>
Trying other mirror.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mc.i386 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
Installing:
mc i386 1:4.6.1a-35.el5 addons 2.1 M
Transaction Summary
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 2.1 M
Is this ok [y/N]: y
Downloading Packages:
http://192.168.56.123/yum/CentOS/mc-4.6.1a-35.el5.i386.rpm: [Errno 4] IOError: <urlopen error (113, 'No route to host')>
Error Downloading Packages:
1:mc-4.6.1a-35.el5.i386: failure: mc-4.6.1a-35.el5.i386.rpm from addons: [Errno 256] No more mirrors to try.
六、
Yum伺服器上,關閉防火牆及SELinux。
(一般情況下,企業裡,都是關的,倘若不關,隻能說是運氣不好,以置出了上述報錯,此所謂運氣不好也~)
七、
再到用戶端進行操作,一切順利。
用戶端可以通過yum指令從伺服器端下載下傳并安裝軟體了
mc-4.6.1a-35.el5.i386.rpm | 2.1 MB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mc 1/1
Installed:
mc.i386 1:4.6.1a-35.el5
Complete!
運作yum udpate指令,即可将用戶端更新為CentOS 5.8
[root@zoro~]#yum update
注:用戶端CentOS 5.7更新完成後,核心由kernel-2.6.18-274更新到了kernel-2.6.18-308,用戶端需要重新開機才能使用新的核心,重新開機後可使用yum remove kernel*274*指令将原核心删除。
檢視系統安裝的核心
# rpm -qa | grep kernel
檢視系統目前用到的核心的版本号
# more /proc/version
本文轉自Sunshyfangtian 51CTO部落格,原文連結:http://blog.51cto.com/sunshyfangtian/822167,如需轉載請自行聯系原作者