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 //測試能否安裝成功
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 映象檔案 資料夾 //掛載映象到指定資料夾