最近由於服務器需求,需要在公司內網搭建內網yum源。
搭建內網yum源需要分以下幾個步驟,如下:
1、 yum是什么
2、 repo文件是什么
3、 repo文件內容詳解
4、 yum服務器端配置
5、 yum客戶端配置
6、 保存yum安裝的軟件包
7、 更新rpm包
一、yum是什么
yum(全稱為Yellowdog Updater Modified)是一個在CentOS、RedHat和Fedora操作系統中使用的Shell前端軟件包管理器。
yum主要管理基於rpm的軟件包,它可以自動升級、安裝、刪除rpm軟件包,同時它還能夠自動查找並解決rpm包之間的依賴關系,並且無需管理員逐個、手工的去安裝每一個rpm包,使管理員在維護Linux主機時更加輕松自如。
yum可以從一個或多個repo文件中配置的repo倉庫,通過http或ftp協議從repo倉庫獲得必要的信息,然后下載相關的軟件包。這樣,本地用戶通過建立不同的repo倉庫,在有Internet連接時就能方便進行系統的升級和維護工作。
repo倉庫可以通過createrepo或yum-arch命令進行創建,也能夠用別人已經創建好的repo倉庫作為yum源,在此我們主要探討通過createrepo命令創建的repo倉庫。
有關yum命令的使用幫助信息,我們可以通過man yum命令進行查看,如下:
man yum
二、repo文件是什么
通過第一章,我們知道repo文件是CentOS、RedHat和Fedora操作系統中yum源(軟件倉庫)的配置文件,通常一個repo文件定義了一個或者多個軟件源。
例如:我們將從哪里下載需要安裝或者升級的軟件包,repo文件中都進行了相關的配置,而這些配置將會被yum讀取和應用。
三、repo文件內容詳解
一個標准的centos的repo文件內容如下:
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
各個選項說明如下:
[base]
該選項是定義軟件源的名稱,該名稱是可以自定義,同時在該服務器上所有repo文件中是唯一的。注意:方括號里面不能有空格。
name=CentOS-$releasever – Base
該選項是定義軟件倉庫的名稱,$releasever變量定義了發行版本,通常是5,6,7等數字。
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
這是指定鏡像服務器的地址列表,通常是開啟的。我們可以嘗試,將$releasever和$basearch替換成自己對應的版本和架構,例如6.6和x86_64,在瀏覽器中打開,我們就能看到一長串鏡可用的鏡像服務器地址列表。如下:
選擇自己訪問速度較快的鏡像服務器地址復制並粘貼到repo文件中的baseurl選項中,我們就能獲得較快的更新速度了。
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
這行第一個字符是#表示該行已經被注釋,將不會被讀取,這一行的意思是指定一個baseurl(源的鏡像服務器地址)。
baseurl通常有以下四種格式,如下:
baseurl= http://mirrors.aliyun.com/centos/6.6/os/x86_64/
使用http協議鏡像服務器地址
baseurl= ftp://ftp.sjtu.edu.cn/centos/6.6/os/x86_64/
使用ftp協議鏡像服務器地址
baseurl= rsync://mirror.zol.co.zw/centos/
使用rsync鏡像服務器地址
baseurl= file:///ilanni/yum/
使用本機的鏡像服務器地址
其中前兩種是我們使用最多的。有關這個我們可以參考centos官網給出的參考,如下:
enabled=1
該選項表示在這個repo文件中啟用這個軟件源,默認該選項可以不寫。但是如果enabled的值為0,則表示禁用這個軟件源。
注意:一個repo文件中可以定義多個軟件源。
gpgcheck=1
該選項表示對通過該軟件源下載的rpm包進行gpg校驗,如果gpgcheck的值為0表示不進行gpg校驗。
gpgkey= file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
該選項定義用於校驗的gpg密鑰文件。
通過以上這個repo文件的說明,相信各位會覺得,其實centos的repo文件真是很簡單。有了一個初步的認識了之后,我們就可以進行下面的實驗了。
我們現在要求在公司內網搭建一個yum源。該yum源需要配置兩個源:一個是centos的光盤鏡像源,一個是特殊rpm軟件的鏡像源,並且該yum源是通過http進行訪問。
此次實驗:yum服務器192.168.1.247 centos,客戶端192.168.1.248 centos。
四、yum服務器端配置
要達到以上要求,我們首先要搭建yum服務器,並且在該服務器配置web服務器。
在此web服務器我們使用的是apache,當然使用nginx也是可以的。
4.1 配置web服務器
在yum服務器上,我們現在直接使用yum安裝apache。如下:
yum -y install httpd
當然你也可以使用源碼方式安裝apache,有關apache的源碼安裝可以參考《爛泥:源碼安裝apache》。
apache安裝完畢后,我們來啟動apache。如下:
/etc/init.d/httpd start
wget http://192.168.1.247
通過上圖,我們可以很明顯的看到apache服務器已經正常啟動。
4.2 安裝createrepo
createrepo是什么?createrepo是linux下創建倉庫的軟件包。create是創建的意思,repo是repository的縮寫,是倉庫的意思。
只有安裝createrepo這個軟件,才能在yum服務器創建軟件倉庫。
createrepo的安裝很簡單,我們現在通過yum進行安裝,如下:
yum -y install createrepo
createrepo安裝完畢后,我們就可以創建repo倉庫了。
4.3 光盤鏡像
把本地下載的光盤鏡像復制到yum服務器上,我們在此是通過xftp工具復制的,如下:
創建軟件源所在的位置,如下:
mkdir -p /var/www/html/yum
ll /var/www/html/yum/
創建光盤掛載的目錄,如下:
mkdir /iso
mount -o loop CentOS-6.6-x86_64-minimal.iso /iso/
ll /iso/
復制到光盤下的所有文件到/var/www/html/yum/目錄下,如下:
cp -rv /iso/* /var/www/html/yum/
現在我們訪問下該目錄,看看能不能正常顯示,如下:
wget http://192.168.1.247/yum
通過上圖我們可以很明顯的看到,目前該目錄是可以被正常訪問的。
注意:在此我們沒有創建yum數據庫和信息索引文件,是因為光盤已經有yum數據庫和信息索引文件,我們不需要再通過createrepo命令在進行。其實yum的數據庫和信息索引文件,都在repodata文件夾下。如下:
為了光盤鏡像實驗的效果,我們在此以光盤鏡像軟件包中curl軟件為例。如下:
ll |grep curl
4.4 特殊軟件鏡像
在前面我們還要求一個特殊的yum源用來存放特殊軟件的,在此我們以lrzsz這個軟件為例。
該yum源存放的位置/var/www/html/ilanni/目錄下,然后把lrzsz這個軟件的rpm包放在/var/www/html/ilanni/目錄下,如下:
mkdir -p /var/www/html/ilanni
cp /var/cache/yum/x86_64/6/base/packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm /var/www/html/ilanni/
ll /var/www/html/ilanni/
現在我們來創建該特殊yum源的yum數據庫和信息索引文件,切換到/var/www/html/ilanni/目錄下,執行createrepo命令,如下:
createrepo ./
tree repodata/
現在我們訪問下該目錄,看看能不能正常顯示,如下:
wget http://192.168.1.247/ilanni
通過上圖我們可以很明顯的看到,目前該目錄是可以被正常訪問的。
以上的所有配置都是在yum服務器上進行的,現在我們來切換到yum客戶端上進行操作。
五、yum客戶端配置
yum客戶端的操作就簡單了很多,我們只需要修改客戶端的repo文件即可。
進入/etc/yum.repos.d/目錄,備份原有的repo文件,如下:
rename .repo .repo.bak *.repo
然后在該目錄下,創建一個新的repo文件ilanni.repo,內容如下:
[centos6]
name=centos6
baseurl=http://192.168.1.247/yum/
enabled=1
gpgcheck=0
[ilanni]
name=ilanni
baseurl=http://192.168.1.247/ilanni/
enabled=1
gpgcheck=0
注意:該文件名可以變,但是后綴一定是.repo。
repo文件修改完畢后,我們來進行相關測試。
安裝curl軟件,如下:
yum -y install curl
安裝lrzsz軟件,如下:
yum -y install lrzsz
通過以上測試,我們可以很明顯的看到客戶端已經從yum服務器下載我們所需要的軟件包。
注意:如果客戶端yum安裝軟件包時,提示找不到該軟件。強烈建議,在客戶端上執行yum clean all和yum list命令。
其中yum clean all表示清除yum源緩存,yum list表示列出所有的軟件包。
以上就是我們在內網搭建yum源的步驟。
六、保存yum安裝的軟件包
在我們使用yum進行安裝軟件時,安裝完畢后會自動把軟件包刪除。
為了保存yum安裝的軟件包,我們需要修改yum的配置文件yum.conf,把keepcache修改為1即可。如下:
vi /etc/yum.conf
cachedir表示rpm包的緩存位置。
七、更新rpm包
在我們搭建完畢內網yum源后,會經常遇到這兩種情況。一是軟件版本的更新,二是新增軟件。
無論遇到以上那種情況,我們都需要先刪除原來的yum服務器的yum數據庫和信息索引文件,然后通過createrepo命令重新創建yum數據庫和信息索引文件。
在此我們以新增軟件為例,該軟件為lftp。
如下:
cp /var/cache/yum/x86_64/6/base/packages/lftp-4.0.9-1.el6_5.1.x86_64.rpm /var/www/html/ilanni/
ll /var/www/html/ilanni/
rm -fr /var/www/html/ilanni/repodata/
createrepo /var/www/html/ilanni/
現在我們再來切換到客戶端上進行操作,如下:
yum clean all
yum list |grep lftp
yum -y install lftp
通過上圖,可以很明顯的看出客戶端已經安裝lftp軟件了。
未經允許不得轉載:爛泥行天下 » 爛泥:yum的使用及配置