YUM倉庫
一、YUM倉庫簡介
1.1yum簡介
yum是一個基於RPM包(是Red-Hat Package Manager紅帽軟件包管理器的縮寫)構建的軟件更新機制,能夠自動解決軟件包之間的依賴關係。解決了日常工作中的大量查找安裝依賴包的時間。為什麼會有依賴關係的發生 因為linux本身就是以系統簡潔為自身優勢,所以在安裝操作系統的時候並沒有將所有的庫文件以及編譯軟件包進行安裝,所以在linux操作系統上進行軟件安裝的時候會出現軟件包依賴的情況。yum由倉庫和客戶端組成,也就是整個yum由兩部分組成,所以yum可以存放在兩台服務器上。也可以存放在一台服務器上。可以有官方來提供服務,也可以由第三方來提供,比如國內的阿里雲,搜狐雲,還有一些非盈利組織比如學校等。官方的源一般在國外,下載速度肯定有限,手動更改成國內的雲可以大幅提升下載速度。
YUM 的前身是YUP(Yellow dog Updater,Yellow dog Linux 的軟件更新器),最初由 TSS 公司(Terra Soft Solutions,INC.)使用 Python 語言開發而成,後來由杜克大學(Duck University)的 Linux 開發隊伍進行改進,命名為 YUM(Yellow dog Updater,Modified)。 要成功使用 YUM 機制來更新系統和軟件,需要有一個包含各種 rpm 安裝包文件及其依 賴軟件的軟件倉庫(repository),提供軟件倉庫的服務器也稱為「源」服務器。在客戶機中只 要正確指定軟件倉庫的地址等信息,就可以通過對應的「源」服務器來安裝或更新軟件。
1.2yum實現過程
先在yum服務器上創建 yum repository(倉庫),在倉庫中事先存儲了眾多rpm包,以及包的相關的元數據文件(放置於特定目錄repodata下),當yum客戶端利用yum/dnf工具進行安裝時包時,會自動下載repodata中的元數據,查詢遠數據是否存在相關的包及依賴關係,自動從倉庫中找到相關包下載並安裝。
yum需要依賴於環境,依賴於服務端和客戶端,允許跨網絡。
(1)服務端需要的兩個文件:
- RPM包(Packages文件夾中)
- 元數據(repodata文件夾:目錄(軟件的目錄),軟件的依賴關係,軟件的位置)
(2)客戶端的配置文件中 :
- baseurl=地址一定要寫到這兩個文件夾repodata和packages的上級目錄
- 最終形成兩個文件夾Packages (包文件夾一般取名packages)和repodata(元數據文件夾)
(3)倉庫類型:
- 光盤的倉庫基本倉庫:比較常用的
- epel擴展倉庫:比較新
1.3如何實現安裝服務
二、YUM配置文件及命令
2.1yum配置文件
(1)主配置文件
1 [root@server ~]#cat /etc/yum.conf
(2)默認的yum倉庫 是centos官方的yum源,需要聯網才可以使用
[root@server ~]#ls /etc/yum.repos.d/
2.2yum命令詳解
(1)yum命令
(2)查詢,升級,下載
1 yum list [軟件名]:顯示可用的安裝包,如不加軟件名是顯示所有的可用包,由於軟件過多不做例子。 2 yum info [軟件名]:顯示安裝包詳細信息,如不加軟件名是顯示所有包的詳細信息。 3 yum search [軟件名]:根據關鍵字查找軟件安裝包,相當於你只知道這個包里的某個關鍵字會全部給你匹配出來 4 yum grouplist [包組名]:安裝包組的查詢不加包組名就是顯示所有 5 yum groupinfo [包組名]:不加包組名顯示全部 6 yum install [軟件名]:安裝軟件包 7 yum update:更新包組,可以單個也可以全部後面加具體包組名稱就是單個更新,不加就是全部更新。 8 yum remove [軟件名]:卸載已安裝的軟件必須加軟件名 9 yum history:查看歷史的使用記錄 10 yum history undo [數字]:進行卸載,這樣對比remove好處是可以將所有的依賴都刪除 11 yum history redo [數字]:重新安裝一遍
三、搭建倉庫的方式
3.1搭建本地yum
1 [root@server ~]#mount /dev/sr0 /mnt/ 2 [root@server ~]#cd /etc/yum.repos.d/ 3 [root@server /etc/yum.repos.d]#mkdir bak 4 [root@server /etc/yum.repos.d]#mv *.repo bak/ 5 [root@server /etc/yum.repos.d]#vim local.repo 6 [local] 7 name=local 8 baseurl=file:///mnt 9 enabled=1 10 gpgcheck=0 11 [root@server /etc/yum.repos.d]#yum clean all && yum makecache
3.2http方式搭建雲倉庫
1 實驗環境:CentOS7-1和CentOS7-2 2 實驗目的:搭建http本地倉庫 3 服務端: 4 [root@server ~]#yum install -y httpd 5 [root@server ~]#systemctl start httpd 6 [root@server ~]#ss -ntpa |grep ":80" 7 [root@server ~]#cd /var/www/html #放你想共享給被人的文件 8 [root@server /var/www/html]#mkdir centos7 9 [root@server /var/www/html]#mount /dev/sr0 centos7/ 10 [root@server /var/www/html]#df -Th 11 [root@server /var/www/html]#vim index.html 12 "你真棒,你真是個小天才!" 13 測試服務端環境:瀏覽器訪問192.168.10.10/index.html 14 15 客戶端: 16 [root@client ~]#curl 192.168.10.10 #測試 17 [root@client ~]#cd /etc/yum.repos.d 18 [root@client /etc/yum.repos.d]#mkdir bak 19 [root@client /etc/yum.repos.d]#mv *.repo bak 20 [root@client /etc/yum.repos.d]#ls 21 [root@client /etc/yum.repos.d]#vim http.repo 22 [http] 23 name=http 24 baseurl=http://192.168.10.10/centos7 25 gpgcheck=0 26 [root@client /etc/yum.repos.d]#yum clean all && yum makecache 27 [root@client /etc/yum.repos.d]#yum -y install tree
服務端:
客戶端:
3.3ftp方式搭建雲倉庫
1 實驗環境:CentOS7-1和CentOS7-2 2 實驗目的:搭建ftp本地倉庫 3 服務端: 4 [root@server ~]#yum -y install vsftpd.x86_64 5 [root@server ~]#systemctl start vsftpd 6 [root@server ~]#ss -ntpa |grep vsftpd 7 [root@server ~]#cd /var/ftp #放你想共享給被人的文件 8 [root@server /var/ftp]#mkdir centos7/ 9 [root@server /var/ftp]#mount /dev/sr0 centos7/ 10 [root@server /var/ftp]#df -Th 11 12 客戶端: 13 [root@client ~]#yum -y install ftp #測試 14 [root@client ~]#cd /etc/yum.repos.d 15 [root@client /etc/yum.repos.d]#mkdir bak 16 [root@client /etc/yum.repos.d]#mv *.repo bak 17 [root@client /etc/yum.repos.d]#ls 18 [root@client /etc/yum.repos.d]#vim ftp.repo 19 [ftp] 20 name=ftp 21 baseurl=ftp://192.168.10.10/centos7 22 gpgcheck=0 23 [root@client /etc/yum.repos.d]#yum clean all && yum makecache 24 [root@client /etc/yum.repos.d]#yum -y install tree
服務端:
客戶端: