yum相較於rpm,能夠更好地解決安裝軟件時的依賴包問題,使用yum安裝更簡單更方便。搭建本地YUM源服務器,可以避免升級安裝軟件時占用公網帶寬;有了本地YUM源服務器,可以解決無法連接Internet的其他YUM客戶端的軟件升級和安裝。
與其他私服一樣的,yum私服同樣有三種類型:
hosted: 本地存儲,即同 yum 官方倉庫一樣提供本地私服功能proxy: 提供代理其他倉庫的類型,如我們常用的163倉庫group: 組類型,實質作用是組合多個倉庫為一個地址,相當於一個透明代理。
那么就來一個一個創建。
1,創建blob存儲
為其創建一個單獨的存儲空間,命名為yum-hub。

2,創建hosted類型的yum庫
后來才發現,其實每次創建的這個hosted類型的,並沒有什么用。不過照例創建一波吧。
Name::定義一個名稱local-yumStorage:Blob store,我們下拉選擇前面創建好的專用blob:yum-hub。Hosted:開發環境,我們運行重復發布,因此Delpoyment policy 我們選擇Allow redeploy。這個很重要!
整體配置截圖如下:

3,創建一個proxy類型的yum倉庫
Name: proxy-163-yumProxy:Remote Storage: 遠程倉庫地址,這里填寫: http://mirrors.163.com/centos/Storage: yum-hub
其他的均是默認。
這里就先創建一個代理163的倉庫,其實還可以多創建幾個,諸如阿里雲的,搜狐的,等等,這個根據個人需求來定義。
整體配置截圖如下:

4,創建一個group類型的yum倉庫
Name:group-yumStorage:選擇專用的blob存儲yum-hub。group: 將左邊可選的2個倉庫,添加到右邊的members下。
整體配置截圖如下:

這些配置完成之后,就可以使用了。
5,構建緩存
新建一台環境干凈的主機,此時需要保證這台主機能夠上網,因為私服當中還沒有進行初始化。
先簡單配置一下,將yum源指向到私服中來。
cd /etc/yum.repos.d/
mkdir bak
mv * bak/
2,創建一個新的源
vim nexus.repo
添加如下內容:
其中的url就是私服當中創建的group的對外地址,后面的$releasever/os/$basearch/不要漏掉了。
[nexus]
name=Nexus Repository
baseurl=http://192.168.75.11:8081/repository/group-yum/$releasever/os/$basearch/
enabled=1
gpgcheck=0

注意這還不是完整內容,我第一次構建的時候只寫了這些內容,以求私服自己能夠通過剛剛配置的proxy將遠程的包拉下來,最后發現這種方式,死活都是無法成功的。
因此,這里還應該將163的源配置添加進來。
注意:CentOS8系統的不一樣
完整內容應該如下:
[nexus]
name=Nexus Repository
baseurl=http://192.168.106.65:8081/repository/group-yum/$releasever/os/$basearch/
enabled=1
gpgcheck=0
#released updates
[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
[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
[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
注意:不知是否還可以添加其他的源內容,比如epel-release的源內容?
3,構建緩存
現在,就可以通過make cache將遠程的包拉到內部私服當中了。
操作之前,就像古代變戲法一般的,依舊先去私服看一眼group-yum當中是否有包存在,這是一個固定流程哈。

可以看到空空如也,那么通過如下三步操作創建緩存。
# yum clean all
# yum makecache
# yum -y install httpd
當上邊的第三步執行完成之后,此時我們可以回到剛剛那個空白的頁面,看看內容是否上來了。

6,驗證一下效果
驗證的方式其實也很簡單,找一台不能上網但是可以與剛剛私服通信的主機,將其yum源指向的配置好的私服,看看安裝軟件什么的是否可以so easy。
或者是將其他的源都切斷,然后yum源僅僅指向私服,看看安裝是否順利。
這里采用第二種方式簡單試驗一下。
1,將原有的移走
# cd /etc/yum.repos.d/
# mkdir bak
# mv * bak
2,創建一個新的源
cat /etc/yum.repos.d/nexus.repo
[nexus]
name=Nexus Repository
baseurl=http://192.168.75.11:8081/repository/group-yum/$releasever/os/$basearch/
enabled=1
gpgcheck=0
然后安裝軟件
