搭建本地離線yum倉庫


環境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5

前言

我們知道yum工具是基於rpm的,其一個重要的特性就是可以自動解決依賴問題,但是yum的本質依舊是把后綴名.rpm的包下載到本地,然后按次序安裝之。但是每次執行yum install xxx,會自動安裝並且安裝完畢后把rpm包自動刪除。當我們下載比較大的服務,比如MySQL大約190M,每次都重新下載比較慢,這時我們就可以考慮,搭建本地離線yum倉庫,大致需要如下幾個步驟。

  1. 把rpm包及其相關依賴全部都下載到本地,保存好。
  2. 手動在/etc/yum.repos.d/目錄下配置本地倉庫信息。
  3. 使用createrepo命令生成repodata信息。
  4. 使用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查看會發現軟件包的數量並沒有增加,我們安裝新增的軟件包也會提示,找不到次軟件包的現象,可以按照下述步驟,更新倉庫信息。

  1. 查看舊的軟件包總數 yum repoinfo as4k | grep pkgs
  2. 更新本地倉庫 createrepo --update /aspack/
  3. 清除所有緩存 yum clean all
  4. 查看新的軟件包總數 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


免責聲明!

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



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