環境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5
1. 前言
如果我們的yum倉庫需要多台機器共同使用,此時把yum倉庫做成本地的,然后一台台scp
推送過去比較麻煩,此時可以考慮搭建一個基於HTTP協議,供給內網其它機器使用的本地yum倉庫。
下面的操作步驟以內網管理機器(10.0.0.61)作為rpm包倉庫,在其上安裝nginx,並對外提供HTTP服務,其它機器使用內網管理機器上的rpm包倉庫作為自己的倉庫。
總體操作步驟如下:
- 在內網管理機器(存放rpm包的機器)准備好rpm包
- 在管理機器上生成repodata信息
- 在管理機器上配置nginx並對外提供服務
- 在管理機器上配置倉庫的
repo
文件 - 把管理機器上的
repo
文件推送給其它機器使用 - 在其它內網機器上測試使用
2. 把rpm包下載到本地
yum install --downloadonly --downloaddir=/aspack/ mysql-community-server
看到了嗎,就是如此簡單,上述命令即可把mysql-community-server
對應的所有rpm包及其依賴下載到/aspack/
目錄里,也就是說yum本地安裝mysql需要的所有文件我們都准備好了。
執行上述命令本機不會安裝mysql,本機初始處於沒有安裝任何mysql相關包的狀態
下圖是我用此方法,下載的一些rpm包:
3. 配置nginx對外提供服務
在管理機器上安裝好nginx並配置如下:
[root@m01 ~]# hostname -I
10.0.0.61 172.16.1.61
[root@m01 ~]# cat /etc/nginx/conf.d/as4k-http.conf
# yum repository for other machine over http
server {
listen 2222;
server_name 10.0.0.61;
location / {
root /aspack;
index index.html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
[root@m01 ~]# nginx -t
[root@m01 ~]# systemctl restart nginx
[root@m01 ~]# netstat -lntp | grep 2222
監控其它端口也一樣,開啟索引功能不是必須的,根目錄一定是rpm包存放的目錄。
4. 配置本地repo文件
[root@m01 ~]# cat /etc/yum.repos.d/as4k-http.repo
[as4k-http]
name=as4k http repository
baseurl=http://10.0.0.61:2222/
gpgcheck=0
enabled=1
5. 生成repodata信息
createrepo命令默認系統沒有,需要我們額外安裝:
# yum install createrepo -y
安裝完畢之后,直接使用:
# createrepo /aspack/
這時會發現本地倉庫repodata相關信息已經生成完畢:
6. 檢查及使用
首先在本地管理機器上檢查看是否可用。
[root@m01 ~]# yum repoinfo as4k-http
as4k-http | 2.9 kB 00:00:00
as4k-http/primary_db | 42 kB 00:00:00
Repo-id : as4k-http
Repo-name : as4k http repository
Repo-status : enabled
Repo-revision: 1538128513
Repo-updated : Fri Sep 28 17:55:13 2018
Repo-pkgs : 45
Repo-size : 215 M
Repo-baseurl : http://10.0.0.61:2222/
Repo-expire : 21,600 second(s) (last: Mon Oct 1 15:12:22 2018)
Filter : read-only:present
Repo-filename: /etc/yum.repos.d/as4k-http.repo
repolist: 45
然后再把as4k-http.repo
文件推送到其它機器,測試使用情況。
[root@m01 ~]# scp /etc/yum.repos.d/as4k-http.repo \
root@10.0.0.9:/etc/yum.repos.d/
[root@web03 ~]# hostname -I
10.0.0.9 172.16.1.9
[root@web03 ~]# yum repoinfo as4k-http
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Repo-id : as4k-http
Repo-name : as4k http repository
Repo-status : enabled
Repo-revision: 1538128513
Repo-updated : Fri Sep 28 17:55:13 2018
Repo-pkgs : 45
Repo-size : 215 M
Repo-baseurl : http://10.0.0.61:2222/
Repo-expire : 21,600 second(s) (last: Mon Oct 1 15:17:53 2018)
Filter : read-only:present
Repo-filename: /etc/yum.repos.d/as4k-http.repo
repolist: 45
在其它機器上安裝軟件測試:
7. 對管理機器上的倉庫進行更新
管理機器倉庫上的rpm包如有增刪,需要在管理機器上重建倉庫索引信息,可按下述步驟操作
- 查看舊的軟件包總數
yum repoinfo as4k-http | grep pkgs
- 更新本地倉庫
createrepo --update /aspack/
- 清除所有緩存
yum clean all
- 查看新的軟件包總數
yum repoinfo as4k-http | grep pkgs
如果軟件包的數量增加或減少,說明倉庫更新成功。
有一個很大的問題暫未解決,上述更新操作是在管理機器上執行的,經過測試我發現管理機器上的軟件包如有變動,必須對其它客戶端機器也同樣使用相同的操作更新倉庫索引信息,該問題貌似可以通過添加gpgkey
簽名驗證來解決,但本人暫未能解決,可參考的資料如下:
http://www.narrabilis.com/mybook/repo
http://www.ruanyifeng.com/blog/2013/07/gpg.html
參考資料
搭建本地離線yum倉庫
https://www.cnblogs.com/asheng2016/p/local-yum.html
作者: 阿勝4K
出處: https://www.cnblogs.com/asheng2016/p/local-yum-http.html