配置本地 YUM 源
在企業中,除過DMZ堡壘機之外,大部分伺服器都是無法訪問外網的,這就出現一個問題,如果我們要對伺服器中某軟體進行升級怎麼辦?拿到我們要把軟體下載下來放進U盤,在跑到機房去,一個個升級?這顯然是不科學。第一,不具有時效性,第二,浪費了時間成本,當然還有其他原因,這裡就不一一列舉。
因此,為了避免上述問題的存在,我們一般都會在區域網中配置自己的 yum 倉庫。下面我們就來介紹下 yum 倉庫的配置方法。
一、YUM 源是什麼?
所謂 YUM 源,其實它就是一個目錄項,它是為了解決 Linux 中的依賴關係而存在的。當我們使用 yum 來安裝安裝軟體的時候,如果該軟體又需要的依賴軟體,則 yum 機制會根據在 YUM 源中定義好的路徑查詢依賴軟體,並自動將依賴軟體安裝。
二、YUM 的工作原理
伺服器端:我們在伺服器端存放了大量的 RPM 軟體包,然後以相關的功能去分析每個 RPM 包的依賴關係,並將這些資料記錄成檔案存放在伺服器的某個特定的目錄中。
客戶端:如果我們需要安裝某個軟體時,會先下載伺服器上面記錄的依賴性關係檔案,通過 對伺服器端下載的記錄資料進行分析,然後取得所有相關軟體,一次性全部下載下來進行安裝。
三、YUM 源配置檔案解析
1、XXX.repo檔案
name=CentOS-$releasever - Media #yum 倉庫的描述,支援$releaseve $basearch這樣的變數,如 name= Centos Core $releasever - $basearch - Released Updates
baseurl=ftp://media/CentOS/ #baseurl 是 yum 源中最重要部分,它支援三個協議的格式,分別為:http://、ftp://、file:///,後面可以跟多個url,但是隻能有一個 baseurl
http://media/cdrom/
file:///media/cdrecorder/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch #指定一個映象伺服器的地址列表,通常是開啟的,我們可以將$releasever、$basearch替換成自己對應的版本和架構
gpgcheck=1 #是否開啟校驗,預設為1,設定為 0 是,表示不開啟校驗
enabled=1 #是否啟用此 yum 源,1:啟用 0:禁用
failovermethod=priority #failoveermethod 有兩個選項,分別為 roundrobin(當有多個 url 可供選擇時,yum隨機選擇)和priority(當有多個 url 可供選擇時,yum依次選擇), 如果不止明,預設是roundrobin
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #如果開啟yum源包校驗,則需要匯入RPM公鑰,此處只是在系統沒有匯入rpm公鑰時候進行安裝
2、yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #yum 下載後的快取目錄
keepcache=0 #是否快取,0:不快取 1:快取
debuglevel=2 #debuglevel:除錯級別,0──10, 預設是:2 表示只記錄安裝和刪除記錄
logfile=/var/log/yum.log #yum 安裝日誌
pkgpolicy=newest #pkgpolicy: 包的策略。一共有兩個選項,newest和last,這個作用是如果你設定了多個repository,而同一軟體在不同的repository中同時存在,yum應該安裝哪一個,如果newest,則yum會安裝最新的那個版本。如果是last,則yum會將伺服器id以字母表排序,並選擇最後的那個伺服器上的軟體安裝。一般都是選newest。
distroverpkg=centos-release #指定一個軟體包,yum會根據這個包判斷你的發行版本,預設是redhat-release,也可以是安裝的任何針對自己發行版的rpm包。
tolerant=1 #tolerent,也有1和0兩個選項,表示yum是否容忍命令列發生與軟體包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設為1,則yum不會出現錯誤資訊。預設是0。
exactarch=1 #exactarch,有兩個選項1和0,代表是否只升級和你安裝軟體包cpu體系一致的包,如果設為1,則如你安裝了一個i386的rpm,則yum不會用1686的包來升級。
retries=20 #retries,網路連線發生錯誤後的重試次數,如果設為0,則會無限重試。
obsoletes=1 #此選項僅對更新有影響,它啟用yum的過時處理邏輯。 參閱 update
gpgcheck=1 #是否進行 gpg 校驗,1:校驗 0:不校驗
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
四、yum源配置
1、安裝 apache 服務,做為 yum 源伺服器的服務系統
[[email protected] ~]# yum -y install httpd
將 /Package 目錄設定為 apache 的站點目錄,具體設定方式,這裡就不再贅述了,請參閱小弟的博文 http://blog.51cto.com/4746316/2326614
2、啟動 anache 服務
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd
3、建立 yum 倉庫
[[email protected] ~]# createrepo -pdo /Package/ /Package/
執行該命令後,會在 /Package/ 目錄下生成一個 repodata 目錄,進入該目錄
[[email protected] ~]# cd /Package/repodata
[[email protected] ~]# ll
如圖,為目錄中的檔案
4、配置 repo 檔案
進入 /etc/yum.repos.d 目錄
[[email protected] repodata]# cd /etc/yum.repos.d/
刪除或者移動或者重新命名其他的 yum 源配置檔案,編輯我們自己的 yum 源配置檔案
[[email protected] yum.repos.d]# mv * /opt
[[email protected] yum.repos.d]# vim Localhost.repo
複製貼上一下內容到該檔案中
#阿里雲
[aliyun-base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[aliyun-updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[aliyun-extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[aliyun-centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[aliyun-contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#163.com
[163-base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[163-updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[163-extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[163-centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#Ceph
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-x86_64]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-mimic/el7/$basearch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
#清華大學
[tsinghua]
name=tsinghua
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch/
enabled=1
gpgcheck=0
#zabbix
[zabbix]
name=zabbix
baseurl=http://repo.zabbix.com/zabbix/4.1/rhel/$releasever/$basearch/
enable=1
gpgcheck=0
#上海交大
[centos-sh]
name=centos-sh
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
enable=1
gpgcheck=1
gpgkey=http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-7
#中國科技大學
#[centos-zk]
#name=centos-zk
#baseurl=http://centos.ustc.edu.cn/centos/$releasever/os/$basearch/
#enable=1
#gpgcheck=1
#gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-7
#[ceph-zk]
#name=ceph-zk
#baseurl=http://centos.ustc.edu.cn/ceph/rpm-mimic/$releasever/$basearch/
#enable=1
#gpgcheck=1
#gpgkey=http://centos.ustc.edu.cn/ceph/keys/release.asc
#[epel-zk]
#name=epel-zk
#baseurl=http://centos.ustc.edu.cn/epel/$releasever/$basearch/
#enable=1
#gpgcheck=1
#gpgkey=http://centos.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-7
#搜狐開源映象
[souhu]
name=souhu
baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch/
enable=1
gpgcheck=1
http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-7
說明:這裡整理了國內比較常用的 yum 源
儲存並退出,重建 yum 元資料快取。
[[email protected] repodata]# yum clean all
[[email protected] repodata]# yum makecache
如果沒有報錯,說明正常,如果有報錯,請仔細檢查配置是否正確,由於地域原因,中國科技大學的 yum 經常會超時,所以在此,我進行登出。
檢視我們自己配置的 yum 源是否存在
[[email protected] yum.repos.d]# yum repolist
如圖:
如果,得到的結果跟上圖差不多,說明 yum 源配置正確。
5、同步公網 yum 源到本地
使用命令:reposync -p /Package/
[[email protected] ~]# reposync -p /Package/
此命令可自動將公網 yum 源同步到本地,雖然較慢,但可同步所有源,具體的其他使用引數,請參考幫助。同步完之後,我們的 yum 倉庫就算建立完成。
6、同步公網 yum 到本地是也可使用命令 wget 和 rsync,使用 rsync 時,需要公網的 yum 源支援才行。
說明:以上配置時通過 http 協議來完成 yum 倉庫的搭建,同時我們也可以使用 ftp 協議、https協議以及 file 來搭建。ftp 和 https 協議搭建 yum 倉庫和 http 協議方法基本一樣,這裡就不介紹了,而 file ,則需要將 rpm 包上傳到指定目錄,或者掛載安裝光碟來完成,其他步驟基本和 http 協議一樣,這裡也不贅述,各位大佬可以舉一反三。
五、客戶端驗證
在客戶端配置我們剛才搭建的 yum 倉庫
[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# vim Package.repo
[system]
name=system
baseurl=http://192.168.20.138
enable=1
gpgcheck=0
儲存退出,重建 yum 元資料快取。
[[email protected] repodata]# yum clean all
[[email protected] repodata]# yum makecache
然後,我們使用 yum 隨便安裝一個 yum 倉庫中存在的軟體,看是否能安裝成功,如果成功,說明我們配置沒問題,如果失敗,則需要我自回頭檢查一下配置。