yum實現
YUM 是一個在 Linux 系統中用於管理軟體包的工具,可以在伺服器和客戶端之間跨網路使用。在這種系統中,伺服器上通常會儲存軟體包(RPM 包)和相應的後設資料(repodata 資料夾中的內容)。
-
RPM 包:這些是實際的軟體包檔案,它們包含了應用程式、庫檔案、配置檔案等。這些包被儲存在伺服器的特定目錄中,供客戶端下載和安裝。
-
後設資料:這些資料提供了關於軟體包的詳細資訊,比如軟體包的名稱、版本、描述、依賴關係等。repodata 資料夾中的內容包括了目錄資訊、軟體包的依賴關係、軟體包的位置等。這些後設資料被客戶端用於確定需要下載哪些軟體包以及它們之間的依賴關係。
當客戶端執行 YUM 命令時,它會連線到伺服器並請求更新軟體包資訊。伺服器會提供最新的後設資料,客戶端使用這些資訊確定要安裝、更新或刪除的軟體包,並下載相應的 RPM 包。然後客戶端會安裝這些軟體包,同時處理它們之間的依賴關係,確保系統中的軟體包是正確的版本並且滿足所有依賴關係。
倉庫型別:
-
光碟的倉庫基本倉庫
-
epel擴充套件倉庫
yum配置檔案
主配置檔案
位置:/etc/yum.conf //主配置檔案
[root@localhost]#vim /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever //yum下載的RPM包的快取目錄 $basearch代表硬體架構 $releasever系統版本比如7 keepcache=0 //是否儲存快取 0代表不儲存,1代表儲存 debuglevel=2 //除錯級別瞭解即可 logfile=/var/log/yum.log // 日誌檔案位置 exactarch=1 //是否允許不同版本的rpm安裝 obsoletes=1 //update 的一個引數是否可以允許舊版本的執行 gpgcheck=1 //驗證秘鑰 plugins=1 //是否允許外掛1代表可以 installonly_limit=5 //儲存幾個核心 5代表5個 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
位置:/etc/yum.repos.d/*.repo //**yum倉庫檔案位置**
yum的repo配置檔案中可用的變數: $releasever: 當前OS的發行版的主版本號,如:8,7,6 $arch: CPU架構,如:aarch64, i586, i686,x86_64等 $basearch:系統基礎平臺;i386, x86_64 $contentdir:表示目錄,比如:centos-8,centos-7 $YUM0-$YUM9:自定義變數
可以直接在CentOS-Base.repo中修改baseurl改變yum源。
日誌檔案
位置:/etc/yum.repos.d/*.repo //**yum倉庫檔案位置**
yum命令
不加關鍵字 | 加入關鍵詞、軟體包、軟體包組 | |
---|---|---|
yum list | 顯示所有可用包 | 單個的可安裝包 |
yum info | 顯示所有可用包的資訊 | 單個具體的資訊 |
yum search | \ | 模糊查詢所有的相關資訊 |
yum provides | \ | 精確查詢,某個命令卻不知道具體的包可以用此命令查詢 |
yum grouplist | 顯示所有可用包組 | 顯示具體的包組 |
yum groupinfo | 顯示所有的包組具體資訊 | 顯示具體的包組的具體資訊 |
yum install | \ | 安裝具體軟體包 |
yum groupinstall | \ | 安裝具體軟體包組 |
yum update | 所有軟體升級 | |
yum group update | 所有包組升級 | 具體包組升級 |
yum remove | \ | 解除安裝具體軟體 |
yum groupremove | \ | 解除安裝具體包組軟體 |
yum history | 檢視當前yum操作歷史 | \ |
yum history undo | 加入序號解除安裝序號裡安裝的軟體 | \ |
yum history redo | 加入序號重新執行序號裡的操作 |
搭建yum倉庫
本地yum倉庫
掛載光碟機映象檔案
[root@localhost ~]# mount /dev/sr0 /mnt
新建.repo檔案
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mkdir bak [root@localhost yum.repos.d]# mv *.repo bak/ [root@localhost yum.repos.d]# vim local.repo [base] name=local baseurl=file:///mnt gpgcheck=0
清理快取
[root@localhost ~]# yum clean all ; yum makecache
和本地源同樣將其他的,repo檔案放到bak資料夾下。
新建ali.repo檔案
[root@localhost yum.repos.d]# vim ali.repo [ali] name=aliyun baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=0 [epel] name=epel baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/ gpgcheck=0 [update] name=update baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/ gpgcheck=0
清理快取
http方式內網環境搭建yum倉庫
服務端
- 下載http服務
yum install httpd
- 掛載光碟映象到/var/www/html/centos7/
[root@localhost html]# mkdir centos7 [root@localhost html]# mount /dev/sr0 /var/www/html/centos7/
- 重啟httpd
[root@localhost ~]# systemctl restart httpd.service
- 放通防火牆
[root@localhost ~]# firewall-cmd --permanent --add-service=http success [root@localhost ~]# firewall-cmd --reload success
- 檢視網頁
客戶端
- 配置.repo檔案
[root@hx2 ~]# cd /etc/yum.repos.d/ [root@hx2 yum.repos.d]# vim http.repo [http] name=http baseurl=http://192.168.146.150/centos7 gpgcheck=0
- 清理快取
ftp方式內網環境搭建yum倉庫
客戶端和伺服器和http的搭建方式幾乎一樣,只要在服務端開啟ftp服務,改變yum源位置;在客戶端開啟ftp服務,改變.repo中baseurl即可。
服務端
- 安裝vsftpd
[root@localhost ~]# yum install vsftpd.x86_64 -y
- 開啟vsftpd
[root@localhost ~]# systemctl status vsftpd.
- 放通防火牆和selinux
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp success [root@localhost ~]# firewall-cmd --reload success [root@localhost ~]# setenforce 0
- 掛載光碟檔案到ftp目錄下
[root@localhost ~]# mkdir /var/ftp/centos7 [root@localhost ~]# mount /dev/sr0 /var/ftp/centos7/
客戶端
- 安裝ftp
[root@localhost ~]# yum install ftp
- 放通防火牆和selinux
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# setenforce 0
- ftp登入服務端成功
- 搭建yum倉庫ftp.repo
[root@localhost yum.repos.d]# vim ftp.repo [ftp] name=ftp baseurl=ftp://192.168.146.146/centos7 gpgcheck=0
- 清理快取
[root@localhost yum.repos.d]# yum clean all ; yum makecache