概述
YUM 主要用於自動安裝、升級 rpm 軟件包,它能自動查找並解決 rpm 包之間的依賴關系。要功的使用 YUM 工具安裝更新軟件或系統,就需要有一個包含各種 rpm 軟件包的 repository(件倉庫),這個軟件倉庫我們習慣稱為 yum 源。網絡上有大量的 yum 源,但由於受到網絡環的限制,導致軟件安裝耗時過長甚至失敗。特別是當有大量服務器大量軟件包需要安裝時,慢的進度條令人難以忍受。因此我們在優化系統時,都會更換國內的源。相比較而言,本地 YUM 源服務器最大優點是局域網的快速網絡連接和穩定性。有了局域網中YUM 源服務器,即便在 Internet 連接中斷的情況下,也不會影響其他 YUM 客戶端的軟件安裝升級。
1.YUM是什么?
YUM(Yellow Dog Updater Modified)為多個 Linux 發行版的軟件包管理器,例如 Redhad RHEL、CentOS & Fedora。YUM 主要用於自動安裝,升級 rpm 軟件包,他能自動查找並解決 rpm 包的依賴關系,YUM 自動下載 YUM 包並安裝,類似軟件管家的一鍵安裝功能。
2.YUM源是什么
(1)要成功的使用 YUM 工具安裝更新軟件或系統,就需要有一個包含各種 rpm 軟件包的repository(軟件倉庫),這個軟件倉庫我們習慣稱為 yum 源,
(2)網絡上有大量的 yum 源,但由於受到網絡環境的限制,導致軟件安裝耗時過長甚至失敗,特別是當有大量服務器大量軟件包需要安裝時,緩慢的進度條令人難以忍受,因此我們在優化系統時,都會更換國內的源
(3)相比較而言,本地 YUM 源服務器最大優點是局域網的快速網絡連接和穩定性,有了局域網中的 YUM 源服務器,即便在 Internel 連接中斷的情況下,也不會影響其他 YUM 客戶端的軟件安裝和升級。
搭建內網中的YUM源
系統:CentOS6.5
YUM 源配置文件的存放路徑
[root@aery ~]# cd /etc/yum.repos.d/ [root@aery yum.repos.d]# ls CentOS-Base.repo CentOS-Base.repo.bak CentOS-Media.repo CentOS-Debuginfo.repo CentOS-Vault.repo
對比修改后的 YUM 源與原 YUM 配置文件的區別
[root@aery yum.repos.d]# vimdiff CentOS-Base.repo CentOS-Base.repo.bak
服務端配置
1. 創建目錄用來做YUM倉庫使用
[root@aery ~]# mkdir /yum_source
[root@aery ~]# cd /yum_source/ [root@aery yum_source]# # 上傳 rpm 包到此目錄,此目錄下面還可以包括文件夾 獲取 rpm 軟件包的幾種方法 (1) 開啟 YUM 緩存 (2) yumdownloader pcre-devel openssl-devel # 只下載軟件不安裝,作為忘記開啟YUM 緩存的補救手段
我們這里使用系統光盤中的RPM包作為我們YUM倉庫的YUM源文件
[root@aery yum_source]# mount /dev/cdrom /mnt/ //掛載系統光盤 [root@aery yum_source]# cp /mnt/Packages/* /yum_source/ //將光盤下的所有rpm包拷貝到我們創建的YUM倉庫的目錄下
2. 安裝 createrepo 軟件,用於生成 yum 倉庫數據庫的軟件
[root@aery ~]# yum -y install createrepo //安裝createrepo(YUM倉庫軟件)軟件 [root@aery ~]# rpm -q createrepo //檢查軟件是否安裝
3. 初始化 repodata 索引文件(每次發布新的內容都需要更新)
更多createrepo命令的使用參考:http://linux.51yip.com/search/createrepo
[root@aery ~]# createrepo -pdo /yum_source/ /yum_source/ //初始化 Spawning worker 0 with 3995 pkgs ...... //部分內容省略 Sqlite DBs complete [root@aery ~]# createrepo --update /yum_source/ //每加入一個rpm包就要更新一次
4. 使用 python 命令開啟 80 端口,(要求在 rpm 的路徑下執行此命令,)此命令的功能就是通過瀏覽器把內容發布出去
[root@aery ~]# cd /yum_source/ [root@aery yum_source]# python -m SimpleHTTPServer 80 &> /dev/null & [1] 3729
5. 提供 web 服務查看 80 端口是否開啟
[root@aery yum_source]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 3729 root 3u IPv4 29903 0t0 TCP *:http (LISTEN)
打開瀏覽器測試
客戶端配置
[root@aery ~]# curl -I 192.168.1.105 //檢查 YUM 發布的頁面客戶端是否可以訪問 HTTP/1.0 200 OK Server: SimpleHTTP/0.6 Python/2.6.6 Date: Sat, 23 Sep 2017 09:51:43 GMT Content-type: text/html; charset=UTF-8 Content-Length: 376140 [root@aery ~]# cd /etc/yum.repos.d/ //切換到 yum 配置文件 [root@aery yum.repos.d]# mkdir bak //創建一個存放暫時不用的yum源配置文件目錄 [root@aery yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo bak/ //將暫時不用的yum源配置文件移動到其他目錄 [root@aery yum.repos.d]# > CentOS-Base.repo //清空 yum 配置文件 [root@aery yum.repos.d]# vim CentOS-Base.repo //編輯 YUM 配置文件 [inside] name=inside yum source baseurl=http://192.168.1.105 enabled=1 gpgcheck=0 [root@aery yum.repos.d]# yum clean all //需要先清除 yum 以前的緩存 Loaded plugins: fastestmirror, refresh-packagekit, security Cleaning repos: inside Cleaning up Everything [root@aery yum.repos.d]# yum makecache //更新 YUM 緩存
安裝DNS服務測試
[root@aery ~]# yum -y install bind Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6 will be installed --> Finished Dependency Resolution
...... //部分內容省略