Linux網路-Yum倉庫

leikj發表於2024-05-05

Yum倉庫

1.yum概述

Yum (Yellow dog Updater, Modified) 是一個基於rpm包構建的軟體更新機制,能夠自動解決軟體包之間的依賴關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。節省了日常工作中的大量查詢安裝依賴包的時間。

2.yum工作原理

yum依賴於環境,依賴於服務端和客戶端,允許跨網路。

yum實現過程:
先在yum伺服器上建立 yum repository(倉庫),在倉庫中事先儲存了眾多rpm包,以及包的相關的後設資料檔案(放置於特定目錄repodata下),當yum客戶端利用yum/dnf工具進行安裝時包時,會自動下載repodata中的後設資料,查詢遠資料是否存在相關的包及依賴關係,自動從倉庫中找到相關包下載並安裝

實現安裝服務

yum配置檔案

1.主配置檔案

主配置檔案位置:/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                              //除錯級別(0-10),預設為2
logfile=/var/log/yum.log                  // 日誌檔案位置
exactarch=1                               //是否允許不同版本的rpm安裝
obsoletes=1                               //update的一個引數,是否可以允許舊版本的執行
gpgcheck=1                                //是否驗證GPG金鑰,1表示驗證
plugins=1                                 //是否允許外掛,1代表允許
installonly_limit=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

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:自定義變數

2.倉庫配置檔案
yum倉庫配置檔案位置:/etc/yum.repos.d/*.repo

Yum客戶端配置檔案通常位於 /etc/yum.repos.d/ 目錄中,副檔名為 .repo 。這些檔案定義了Yum如何連線到軟體倉庫並下載軟體包。

點選檢視程式碼
系統內預設的yum倉庫,是centos官方的yum源(國外源),需要連通外網才可以使用。
[root@localhost ~]#  ls /etc/yum.repos.d
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo

yum倉庫配置檔案格式:

點選檢視程式碼
客戶端配置檔案兩個要求 : 
①必須在 /etc/yum.repos.d/ 這個目錄下
②配置檔案必須以 *.repo 結尾

[root@localhost yum.repos.d]# vim lkk.repo    
 [lkk]                       //倉庫的描述
 name=lkk                    //設定名稱
 baseurl=file:///mnt        //設定連結地址,file://是本地源的固定格式
 gpgcheck=0                  //是否驗證公鑰,0表示無需驗證 
 enabled=1                   //開啟此yum源
 
yum倉庫配置檔案中baseurl的幾種形式:
1. 本地源 : 本地目錄   file://        
2. FTP源 : FTP服務    ftp://
3. 網路源 : http://  或  https://

日誌檔案

日誌檔案位置:/var/log/yum.log

常用Yum命令

1.查詢
1.1 yum list [軟體名]
顯示可用的安裝包,如不加軟體名是顯示所有的可用包。

點選檢視程式碼
[root@localhost ~]#  yum list                 //顯示所有可用的安裝包

[root@localhost ~]#  yum list |grep httpd     //顯示包含httpd的可用軟體包
httpd.x86_64                                2.4.6-99.el7.centos.1      updates  
httpd-devel.x86_64                          2.4.6-99.el7.centos.1      updates  
httpd-manual.noarch                         2.4.6-99.el7.centos.1      updates  
httpd-tools.x86_64                          2.4.6-99.el7.centos.1      updates  
keycloak-httpd-client-install.noarch        0.8-1.el7                  base     
libmicrohttpd.i686                          0.9.33-2.el7               base     
libmicrohttpd.x86_64                        0.9.33-2.el7               base     
libmicrohttpd-devel.i686                    0.9.33-2.el7               base     
libmicrohttpd-devel.x86_64                  0.9.33-2.el7               base     
libmicrohttpd-doc.noarch                    0.9.33-2.el7               base     
python2-keycloak-httpd-client-install.noarch

1.2 yum info [軟體名]
顯示安裝包詳細資訊,如不加軟體名是顯示所有包的詳細資訊。

點選檢視程式碼
[root@localhost ~]#  yum info         //顯示所有安裝包的詳細資訊

[root@localhost ~]#  yum info httpd   //顯示安裝包httpd的詳細資訊
已載入外掛:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
可安裝的軟體包
名稱    :httpd
架構    :x86_64
版本    :2.4.6
釋出    :99.el7.centos.1
大小    :2.7 M
源    :updates/7/x86_64
簡介    : Apache HTTP Server
網址    :http://httpd.apache.org/
協議    : ASL 2.0
描述    : The Apache HTTP Server is a powerful, efficient, and extensible
         : web server.

1.3 yum search <關鍵詞>
根據關鍵字查詢軟體安裝包的名字,相當於你只知道這個包裡的某個關鍵字會全部給你匹配出來。(模糊查詢)

點選檢視程式碼
[root@localhost ~]#  yum search ftp     //查詢包含ftp關鍵字的安裝包
已載入外掛:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
========================================================================== N/S matched: ftp ==========================================================================
ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
lftp-scripts.noarch : Scripts for lftp
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
vsftpd.x86_64 : Very Secure Ftp Daemon
vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon
curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)
lftp.i686 : A sophisticated file transfer program
lftp.x86_64 : A sophisticated file transfer program
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols

1.4 yum provides <關鍵詞>
你知道某個命令卻不知道具體的包可以用此命令查詢。(精確查詢)

點選檢視程式碼
[root@localhost ~]#  yum provides ftp    //安裝好軟體後,知道軟體主程式ftp,卻不知道安裝包的名字,可以使用此命令
已載入外掛:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
ftp-0.17-67.el7.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
源    :base

[root@localhost ~]#yum provides  */mime.types  //找一些檔案,不寫路徑查詢不到


1.5 yum grouplist [包組名]
安裝包組的查詢,不加包組名就是顯示所有。

1.6 yum groupinfo [包組名]
顯示所有的包組具體資訊,不加包組名顯示全部。

2.Yum安裝升級

2.1 yum install [軟體名]
安裝軟體包。
2.2 yum update [軟體名]
軟體升級,不加軟體名就是所有軟體升級,需要有更新源。
2.3 yum groupinstall <包組名>
安裝包組。
2.4 yum groupupdate <包組名>
更新包組,可以單個也可以全部。後面加具體包組名稱就是單個更新,不加就是全部更新。
但是首先你要有更新的包組庫否則也無法更新。

3.軟體解除安裝

3.1 yum remove <軟體名>
解除安裝已安裝的軟體必須加軟體名。

3.2 yum groupremove <包組名>
解除安裝包組。

3.3 yum history
檢視歷史的使用記錄。

點選檢視程式碼
[root@localhost ~]#  yum history     //檢視歷史的使用記錄
已載入外掛:fastestmirror, langpacks
ID     | 登入使用者                 | 日期和時間       | 操作           | 變更數 
-------------------------------------------------------------------------------
     5 | root <root>              | 2024-04-27 12:47 | I, U           |    5   
     4 | root <root>              | 2024-04-25 16:54 | I, U           |    5   
     3 | root <root>              | 2024-04-14 09:54 | Update         |    1   
     2 | root <root>              | 2024-04-14 09:21 | Install        |    1   
     1 | 系統 <空>                | 2024-03-27 02:20 | Install        | 1372   
history list

  • 可以使用 yum history undo 序號 進行解除安裝,這樣對比remove好處是可以將所有的依賴都刪除,完整解除安裝整個軟體包,沒有殘留。

  • 如果後悔解除安裝可以使用 yum history redo 序號 重新安裝一遍。

搭建yum倉庫的方式

共享軟體包的兩種方式:

  • 網頁的方式 : HTTP服務
  • 檔案傳輸協議實現 :FTP服務

1.http網頁方式搭建雲倉庫

搭建步驟:

1.服務端安裝httpd服務程式;再切換到 /var/www/html/ (存放客戶訪問的檔案)目錄,新建子目錄centos7,並將光碟機掛載到centos7目錄下;然後啟動httpd服務。
2.客戶端切換到 /etc/yum.repos.d/ 目錄,新建資料夾bak,將預設的yum倉庫檔案移動到該目錄下,編寫新的倉庫檔案;然後清理yum快取,重新建立後設資料。
3.測試使用yum能否成功安裝軟體包。

點選檢視程式碼
`服務端`
[root@localhost ~]#  systemctl stop firewalld              //關閉防火牆
[root@localhost ~]#  setenforce 0                          //關閉selinux防火牆

[root@localhost ~]#  yum install httpd -y                  //安裝http服務程式
[root@localhost ~]#  mkdir /var/www/html/centos7           //在/var/www/html/下建一個centos7資料夾
[root@localhost ~]#  mount /dev/sr0 /var/www/html/centos7  //掛載提供安裝包和元資訊
mount: /dev/sr0 防寫,將以只讀方式掛載
[root@localhost ~]#  systemctl start httpd                 //開啟服務


`客戶端`
[root@node2 ~]#  systemctl stop firewalld              //關閉防火牆
[root@node2 ~]#  setenforce 0                          //關閉selinux防火牆

[root@node2 ~]#  cd /etc/yum.repos.d/             //切換到指定目錄,寫配置檔案
[root@node2 yum.repos.d]#  mkdir bak              //新建資料夾
[root@node2 yum.repos.d]#  mv *.repo bak          //將預設的倉庫檔案移動到該資料夾下
[root@node2 yum.repos.d]#  vim httpd.repo         //編寫新的倉庫檔案
  [httpd]
  name=http
  baseurl=http://172.16.235.55/centos7
  gpgcheck=0
[root@node2 yum.repos.d]#  yum clean all          //清除快取
[root@node2 yum.repos.d]#  yum makecache          //下載元資訊

[root@node2 yum.repos.d]# yum install tree -y     //測試能否安裝成功

![](https://img2024.cnblogs.com/blog/3396297/202405/3396297-20240505011507991-1732027506.jpg)

2.ftp方式搭建雲倉庫

tp 檔案共享伺服器
搭建步驟:

1.服務端安裝vsftpd服務程式;再切換到 /var/ftp/ 目錄下新建一個子目錄centos7,並將光碟機掛載到該目錄下;然後開啟vsftpd服務。
2.客戶端安裝ftp程式,測試ftp服務是否正常;然後編寫yum倉庫檔案,清理yum快取,重新建立後設資料。
3.測試使用yum能否成功安裝軟體包。

點選檢視程式碼
`服務端`
[root@localhost ~]#  systemctl stop firewalld
[root@localhost ~]#  setenforce 0

[root@localhost ~]#  yum install vsftpd -y                //安裝vsftpd服務程式
[root@localhost ~]#  cd /var/ftp                          //切換到/var/ftp/目錄
[root@localhost ftp]#  mkdir centos7                      //建立centos7目錄
[root@localhost ftp]#  mount /dev/sr0 /var/ftp/centos7/   //將光碟機掛載到centos7目錄下
[root@localhost ftp]#  systemctl start vsftpd             //開啟服務


`客戶端`
[root@node2 ~]#  systemctl stop firewalld
[root@node2 ~]#  setenforce 0
[root@node2 ~]#  yum install ftp -y
[root@node2 ~]#  ftp 172.16.235.55              //使用ftp測試能否正常訪問服務端

[root@node2 ~]#  cd /etc/yum.repos.d/           //切換到指定目錄,寫配置檔案
[root@node2 yum.repos.d]#  mkdir bak            //新建資料夾
[root@node2 yum.repos.d]#  mv *.repo bak        //將預設的倉庫檔案移動到該資料夾下
[root@node2 yum.repos.d]#  vim ftp.repo         //編寫新的倉庫檔案
  [ftp]
  name=ftp
  baseurl=ftp://172.16.235.55/centos7
  gpgcheck=0
[root@node2 yum.repos.d]#  yum clean all          //清除快取
[root@node2 yum.repos.d]#  yum makecache          //下載元資訊 

[root@node2 yum.repos.d]# yum install tree -y     //測試能否安裝成功


3.搭建阿里雲倉庫(http方式外網環境)

預設的倉庫檔案是國外雲倉庫,速度比較慢,可以使用阿里雲倉庫代替。

點選檢視程式碼
1. 切換到 /etc/yum.repo.d/目錄,將自帶的倉庫檔案移走;
[root@localhost ~]# cd /etc/yum.repos.d/      //切換至/etc/yum.repos.d/目錄
[root@localhost yum.repos.d]# mkdir bak       //新建bak資料夾
[root@localhost yum.repos.d]# mv *.repo bak   //將yum倉庫中以.repo結尾的檔案移動到bak中

2. 新建阿里雲倉庫;
[root@localhost yum.repos.d]# vim ali.repo
 [ali]
 name=aliyun
 #baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/         //開啟哪個版本都可以正常使用,這邊主要解釋變數的作用
 baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/    
 gpgcheck=0
 
 [epel]                                                          //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

3. 清理快取並安裝軟體。
[root@localhost yum.repos.d]# yum clean all    //清理yum快取
[root@localhost yum.repos.d]# yum makecache    //重新建立後設資料
[root@localhost yum.repos.d]# yum install tree -y    //yum安裝tree測試是否成功

工作環境

1.自建後設資料

點選檢視程式碼
[root@localhost ~]#  mount /dev/sr0 /mnt/
[root@localhost ~]# cp  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm   /data/
[root@localhost ~]# cd /data/
[root@localhost data]# mkdir -p  shu/package
[root@localhost data]# mv tree-1.6.0-10.el7.x86_64.rpm  shu/package/

[root@localhost data]# createrepo shu/
[root@localhost data]# cd shu/
[root@localhost shu]#  ls
package  repodata
[root@localhost shu]# 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 shu.repo
  [shu]
  name=shu
  baseurl=file:///data/shu
  gpgcheck=0

[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
[root@localhost yum.repos.d]# yum install tree -y

本地epel源

點選檢視程式碼
沒有外網  又想使用這個epel源      

[root@localhost ~]#yum install epel-release     //安裝epel源 ,生成epel倉庫檔案
[root@localhost ~]# reposync -r epel -p /root/  //下載同步epel源  根據epel倉庫檔案去找目錄

[root@localhost ~]# yum -y install createrepo   //安裝建立後設資料命令
[root@localhost ~]# createrepo -v /root/epel    //建立後設資料  軟體目錄  依賴關係  
[root@localhost ~]# ls
anaconda-ks.cfg  epel
[root@localhost ~]# cd epel/
[root@localhost epel]# ls      //檢視後設資料


mkisofs -r -o  /root/自定義.iso  /data/centos7/epel //製作成映象
mount -o loop  映象檔案  資料夾                      //掛載映象到指定資料夾

相關文章