環境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5
前言
我們知道yum工具是基於rpm的,其一個重要的特性就是可以自動解決依賴問題,但是yum的本質依舊是把后綴名.rpm
的包下載到本地,然后按次序安裝之。但是每次執行yum install xxx
,會自動安裝並且安裝完畢后把rpm包自動刪除。當我們下載比較大的服務,比如MySQL大約190M,每次都重新下載比較慢,這時我們就可以考慮,搭建本地離線yum倉庫,大致需要如下幾個步驟。
- 把rpm包及其相關依賴全部都下載到本地,保存好。
- 手動在
/etc/yum.repos.d/
目錄下配置本地倉庫信息。 - 使用createrepo命令生成repodata信息。
- 使用
yum repoinfo
檢查確認。
把rpm包下載到本地
yum install --downloadonly --downloaddir=/aspack/ \
mysql-community-server
看到了嗎,就是如此簡單,上述命令即可把mysql-community-server
對應的所有rpm包及其依賴下載到/aspack/
目錄里,也就是說yum本地安裝mysql需要的所有文件我們都准備好了。
需要安裝其它包,則替換成別的包名即可
執行上述命令本機不會安裝mysql,本機初始處於沒有安裝任何mysql相關包的狀態
下圖是我用此方法,下載的一些rpm包:
配置本地yum倉庫信息
# vim /etc/yum.repos.d/as4k.repo
[as4k]
name=as4k local repository
baseurl=file:///aspack
gpgcheck=0
enabled=1
可以看到.repo
配置文件,也是如此簡單:
as4k
是本地倉庫名,可任意起名,但是注意不能與已有的倉庫名重復。name
后面是注釋信息,隨意書寫。baseurl
這后面就是填寫本地倉庫路徑了,file://
表示使用本地文件協議,后面的/aspack
本地rpm包存放路徑。gpgcheck=0
這是和驗證包的安全信息的,最好設置成0,表示關閉安全驗證,否則還需要准備安全驗證文件,麻煩一堆一堆的。enabled=0
,表示啟用本倉庫,0啟用,1關閉。
更多詳細配置信息,請參考man yum.conf
生成repodata信息
直覺上好像我們完成上述兩個步驟就可使用本地yum倉庫了,然后並不行。如果我們現在就直接使用本地倉庫安裝一個包,會報如下錯誤:
錯誤有一大堆,總而言之就是本地倉庫不行,還不能用。關鍵提示就是上圖紅色的部分,告訴我們找不到/aspack/repodata/repomd.xml
這個文件,當然找不到了,到目前位置我們的本地倉庫里除了鮮紅的rpm包之外什么都沒有,repomd.xml
這個文件簡單來說就是存放本地倉庫rpm包的索引信息,具體用法不是我們關心的重點,可以使用createrepo
直接生成。
假如我們本地倉庫沒有配置好,不僅本地倉庫無法使用,整個yum安裝工具都會一直報錯,此時我們把本地yum配置文件改名或暫時刪除即可
createrepo命令默認系統沒有,需要我們額外安裝:
# yum install createrepo -y
安裝完畢之后,直接使用:
# createrepo /aspack/
這時會發現本地倉庫repodata相關信息已經生成完畢:
檢查以及使用
使用下述命令可以看到本地倉庫基本信息:
# yum repoinfo as4k
Repo-id : as4k
Repo-name : as4k local repository
Repo-status : enabled
Repo-revision: 1537699080
Repo-updated : Sun Sep 23 18:38:01 2018
Repo-pkgs : 41
Repo-size : 214 M
Repo-baseurl : file:///aspack/
Repo-expire : 21,600 second(s) (last: Sun Sep 23 18:41:05 2018)
Filter : read-only:present
Repo-filename: /etc/yum.repos.d/as4k.repo
repolist: 41
安裝MySQL5.7測試:
# yum install mysql-community-server
可以看到使用起來,與線上倉庫區別不大。創建好的本地倉庫可直接scp復制到其它機器使用,yum配置文件及rpm倉庫直接復制過去即可,無需再創建一遍repodata信息。
對本地倉庫進行更新
下載一個新的rpm軟件包到本地倉庫,此時我們使用yum repoinfo as4k
查看會發現軟件包的數量並沒有增加,我們安裝新增的軟件包也會提示,找不到次軟件包的現象,可以按照下述步驟,更新倉庫信息。
- 查看舊的軟件包總數
yum repoinfo as4k | grep pkgs
- 更新本地倉庫
createrepo --update /aspack/
- 清除所有緩存
yum clean all
- 查看新的軟件包總數
yum repoinfo as4k | grep pkgs
如果軟件包的數量增加,說明倉庫更新成功。
參考資料
http://blog.51cto.com/hashlinux/1661474
http://blog.sina.com.cn/s/blog_130affe1d0102vy01.html
修改記錄
2018年9月24日 增加對本地倉庫進行更新部分。
作者: 阿勝4K
出處: https://www.cnblogs.com/asheng2016/p/local-yum.html