yum倉庫及配置


本文由秀依林楓提供友情贊助,首發於爛泥行天下

最近由於服務器需求,需要在公司內網搭建內網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

clip_image001

二、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,在瀏覽器中打開,我們就能看到一長串鏡可用的鏡像服務器地址列表。如下:

clip_image002

選擇自己訪問速度較快的鏡像服務器地址復制並粘貼到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官網給出的參考,如下:

clip_image003

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

clip_image004

當然你也可以使用源碼方式安裝apache,有關apache的源碼安裝可以參考《爛泥:源碼安裝apache》。

apache安裝完畢后,我們來啟動apache。如下:

/etc/init.d/httpd start

wget http://192.168.1.247

clip_image005

通過上圖,我們可以很明顯的看到apache服務器已經正常啟動。

4.2 安裝createrepo

createrepo是什么?createrepo是linux下創建倉庫的軟件包。create是創建的意思,repo是repository的縮寫,是倉庫的意思。

只有安裝createrepo這個軟件,才能在yum服務器創建軟件倉庫。

createrepo的安裝很簡單,我們現在通過yum進行安裝,如下:

yum -y install createrepo

clip_image006

createrepo安裝完畢后,我們就可以創建repo倉庫了。

4.3 光盤鏡像

把本地下載的光盤鏡像復制到yum服務器上,我們在此是通過xftp工具復制的,如下:

clip_image007

clip_image008

創建軟件源所在的位置,如下:

mkdir -p /var/www/html/yum

ll /var/www/html/yum/

clip_image009

創建光盤掛載的目錄,如下:

mkdir /iso

mount -o loop CentOS-6.6-x86_64-minimal.iso /iso/

ll /iso/

clip_image010

復制到光盤下的所有文件到/var/www/html/yum/目錄下,如下:

cp -rv /iso/* /var/www/html/yum/

clip_image011

現在我們訪問下該目錄,看看能不能正常顯示,如下:

wget http://192.168.1.247/yum

clip_image012

clip_image013

通過上圖我們可以很明顯的看到,目前該目錄是可以被正常訪問的。

注意:在此我們沒有創建yum數據庫和信息索引文件,是因為光盤已經有yum數據庫和信息索引文件,我們不需要再通過createrepo命令在進行。其實yum的數據庫和信息索引文件,都在repodata文件夾下。如下:

clip_image014

為了光盤鏡像實驗的效果,我們在此以光盤鏡像軟件包中curl軟件為例。如下:

ll |grep curl

clip_image015

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/

clip_image016

現在我們來創建該特殊yum源的yum數據庫和信息索引文件,切換到/var/www/html/ilanni/目錄下,執行createrepo命令,如下:

createrepo ./

tree repodata/

clip_image017

現在我們訪問下該目錄,看看能不能正常顯示,如下:

wget http://192.168.1.247/ilanni

clip_image018

clip_image019

通過上圖我們可以很明顯的看到,目前該目錄是可以被正常訪問的。

以上的所有配置都是在yum服務器上進行的,現在我們來切換到yum客戶端上進行操作。

五、yum客戶端配置

yum客戶端的操作就簡單了很多,我們只需要修改客戶端的repo文件即可。

進入/etc/yum.repos.d/目錄,備份原有的repo文件,如下:

rename .repo .repo.bak *.repo

clip_image020

然后在該目錄下,創建一個新的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

clip_image021

注意:該文件名可以變,但是后綴一定是.repo。

repo文件修改完畢后,我們來進行相關測試。

安裝curl軟件,如下:

yum -y install curl

clip_image022

安裝lrzsz軟件,如下:

yum -y install lrzsz

clip_image023

通過以上測試,我們可以很明顯的看到客戶端已經從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

clip_image024

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/

clip_image025

現在我們再來切換到客戶端上進行操作,如下:

yum clean all

yum list |grep lftp

yum -y install lftp

clip_image026

通過上圖,可以很明顯的看出客戶端已經安裝lftp軟件了。

未經允許不得轉載:爛泥行天下 » 爛泥:yum的使用及配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM