一、基礎知識
1、軟件包分類
- 源碼包(Source Package):包含軟件的源代碼文件、編譯指令和配置文件。需要用戶自行編譯安裝,過程相對復雜,但靈活性高,可以定制安裝選項。文件格式通常為.tar.gz、.tar.bz2等壓縮格式。軟件運行所有的文件都會在同一個包文件里面
- 二進制包(Binary Package):包含已經編譯好的可執行文件、庫文件、配置文件、幫助文件等,用戶可以直接安裝使用。常見的二進制包格式有RPM包(Red Hat Package Manager)、DEB包(Debian Package)等。rpm包主要在Red Hat、Fedora、CentOS等Linux發行版中使用。包名通常包含軟件名稱、版本號、發布號、適用的Linux發行版標識和架構標識等信息。deb包主要在Debian、Ubuntu等Linux發行版中使用。軟件運行所有的文件分別放到相互依賴的多個包文件里面。
2、RedHat/CentOS 系列包管理工具
- yum:CentOS和Red Hat Enterprise Linux(RHEL)等發行版中的軟件包管理工具,同樣支持自動處理依賴關系和軟件包的搜索、安裝、升級等操作。
- dnf:Fedora等發行版中的新一代軟件包管理工具,旨在替代yum,提供更快的軟件包安裝速度和更豐富的功能。
- rpm:負責rpm包的安裝、查詢、升級、卸載、驗證等操作,僅處理單個rpm包,不自動處理依賴關系 ,依賴缺失會產生報錯。
3、Ubuntu/Debian系列包管理工具
- apt:用于Debian及其衍生版如Ubuntu中的軟件包管理,能夠自動處理依賴關系,并提供豐富的軟件包倉庫。
- dpkg:底層包管理工具,直接操作 deb 包,可以安裝,刪除和構建軟件包,但無法自動下載和安裝軟件包或其依賴項。
二、yum基礎知識及使用
1、基礎知識
- yum 最初是為基于 RPM 的 Linux 發行版(如 Fedora、CentOS、RHEL 等)設計的。它起源于 Yellowdog Linux 發行版,后來經過修改和擴展,成為許多主流 Linux 發行版中不可或缺的一部分。
- dnf 是 Fedora 項目開發的一個新的包管理器,相較于 yum ,dns?提供了更加快速和靈活的包管理體驗。它支持并行下載和安裝軟件包,從而減少了總體等待時間。此外還提供了更加豐富的命令行選項和輸出格式,使得用戶可以更輕松地獲取所需的信息,已經成為 Fedora 和一些其他基于 RPM 的 Linux 發行版的默認包管理器。而且 dnf 還保留了和 yum 的兼容性,配置也是通用的,所以在 Rocky linux9 里面,他們的操作基本上是一樣的。
2、工作原理
yum、dnf 均基于 c/s 模式,服務端存放 rpm 包和包的元數據庫,客戶端訪問 yum 服務端進行查詢和安裝。先在 yum 服務器上創建 yum repository(倉庫),在倉庫中事先存儲了眾多 rpm 包,以及包的相關的元數據文件(放置于特定目錄 repodata 下),當 yum 客戶端利用 yum/dnf 工具進行安裝包時,會自動下載 repodata 中的元數據,查詢元數據是否存在相關的包及依賴關系,自動從倉庫中找到相關包下載并安裝。
3、客戶端環境配置
yum 客戶端配置文件
- /etc/yum.conf:為所有倉庫提供公共配置
- /etc/yum.repos.d/*.repo:為每個倉庫的提供配置文件
基礎命令
#查看幫助
man 5 yum.conf#獲取軟件源信息
yum makecache#清理軟件源信息
yum clean all#查看倉庫的信息
yum repolist#查看倉庫的更多信息
yum repolist -v
4、配置解析
全局配置:/etc/yum.conf
#安裝包前要做包的合法和完整性校驗
gpgcheck=1#同時可以安裝3個包,最小值為2,如設為0或1,為不限制
installonly_limit=3#刪除包時,是否將不再使用的包刪除
clean_requirements_on_remove=True#升級時,自動選擇安裝最新版,即使缺少包的依賴
best=True#跳過不可用的
skip_if_unavailable=False
repo倉庫配置:/etc/yum.repos.d/*.repo
[baseos]#倉庫名稱
name=Rocky Linux $releasever - BaseOS#倉庫地址列表,多個baseurl指向的地址
#mirrorlist=https://mirrors.rockylinux.org/mirrorlistarch=$basearch&repo=BaseOS-$releasever$rltype#倉庫地址
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/#是否對包進行校驗,默認值為1
gpgcheck=1#是否啟用,默認值為1,啟用
enabled=1#rocky-9中新增配置,默認值false,附加在mirrorlist之后,便于倉庫收集客戶端信息
countme=1#rocky-9中新增配置,metadata 過期時間
metadata_expire=6h#校驗key的地址
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
baseurl 有多種寫法,支持多種協議
baseurl=file:///cdrom/Centos-7.6/
baseurl=https://mirrors.aliyun.com/rockylinux/9.6/AppStream/x86_64/os/
baseurl=http://mirrors.aliyun.com/rockylinux/9.6/AppStream/x86_64/os/
baseurl=ftp://10.0.0.15/
5、配置yum源
#更新yum源
yum makecache#查看yum源
yum repolist查看yum源信息
yum repolist -v查看指定yum源信息
yum repolist --repoid=aliyun -v
6、國內yum源地址(RockyLinux)
- 阿里云:https://mirrors.aliyun.com/rockylinux/
- 中國科學技術大學:http://mirrors.ustc.edu.cn/rocky/
- 南京大學:https://mirrors.nju.edu.cn/rocky/
- 上海交通大學:https://mirrors.sjtug.sjtu.edu.cn/rocky/
- 東軟信息學院:http://mirrors.neusoft.edu.cn/rocky/
7、鏡像掛載+配置本地yum源
掛載本地鏡像文件
#新建目錄 /mnt/cdrom 用于掛載鏡像
mkdir -p /mnt/cdrom#上傳 CentOS-7-x86_64-Minimal-2009.iso 文件到服務器 /mnt 目錄下
#掛載鏡像
mount -o loop /mnt/Rocky-9.4-x86_64-dvd.iso /mnt/cdrom# 取消掛載
umount /mnt/cdrom
注:在 Linux 中掛載 iso 鏡像后,掛載點的磁盤使用率顯示100%是正常現象,無需處理。原因是:iso 鏡像文件的本質是一個完整的光盤文件系統鏡像,包含了所有文件的打包數據,且文件系統大小是固定的(即為鏡像文件的大小)。當掛載 iso 時,操作系統會將其識別為一個“只讀的虛擬磁盤”,總量就是 iso 文件的大小,且內部沒有空閑空間(所有空間都被鏡像內容占滿)。iso 鏡像的設計目的就是“讀取內容”(如安裝操作系統,提取文件等),而非“寫入數據”,所以也無需空閑空間。因此 df -h 等命令會顯示該掛載點的磁盤使用率為100%。
配置本地yum源
[cdrom-appstream]
name=cdrom appstream
baseurl=file:///mnt/cdrom/AppStream
gpgcheck=0[cdrom-baseos]
name=cdrom baseos
baseurl=file:///mnt/cdrom/BaseOS/
gpgcheck=0
清除緩存信息并更新yum源
#清除yum源緩存
yum clean all
8、yum常用命令
命令格式:
yum [options] COMMAND
常用子命令:
- autoremove:卸載包,同時卸載依賴
- clean:清除本地緩存
- install:包安裝
- list:列出所有包
- makecache:重建緩存
- search:包搜索,包括包名和描述
一般子命令:
- check-update:檢查可用更新
- downgrade:包降級
- group:包組相關
- help:顯示幫助信息
- history:顯示history
- info:顯示包相關信息
- reinstall:重裝
- remove:卸載
- repolist:顯示或解析repo源
- search:包搜索,包括包名和描述
常用選項:
- -y:自動回答為 yes
一般選項:
- -c file:指定配置文件,默認使用/etc/yum.conf
- -v:顯示詳細信息
- -b:嘗試在可用包中尋找最匹配的版本
- --nogpgcheck:不進行包校驗
- --repo repoid:指定repo源
- --enablerepo repoid:臨時啟用repo源,可用通配符
- --disablerepo repoid:臨時禁用repo源,可用通配符
- --nodocs:不安裝文檔
- --skip-broken:跳過有問題的包
- --enable:啟用源,配合 configmanager
- --disable:禁用源,配合 configmanager
- -x package:排除指定包,可用通配符
- --downloadonly:只下載,不安裝
9、應用示例
#默認顯示所有啟用的yum源
yum repolist #顯示啟用的yum源
yum repolist --enable#顯示禁用的yum源
yum repolist --disabled#查看所有軟件
yum list#查看所有可更新的包
yum list --updates#查看所有以 t 開頭的包,包括己安裝的和可安裝的
yum list --all t*#查看所有可用的包
yum list --available#查看指定軟件可用的包
yum list --available telnet#查看所有已安裝軟件
yum list --installed#查看指定的已安裝軟件
yum list --installed telnet#查看軟件
yum list telnet#指定源查看軟件
yum list --repo=aliyun telnet#交互方式安裝軟件 - 需要輸入 y 確認
yum install yum install httpd#直接安裝軟件 - 無需詢問
yum install -y telnet#不安裝軟件,僅下載軟件
yum install telnet --downloadonly --downloaddir=/tmp/#使用本地rpm文件安裝
yum localinstall nginx-1.20.1-16.el9_4.1.x86_64.rpm#卸載單個軟件
yum remove telnet#卸載多個軟件
yum remove telnet httpd#升級指定包
yum update telnet#根據名字檢索軟件
yum search telnet#查看指定包所依賴的庫和程序
yum deplist nginx#查看yum歷史命令
yum history#查看跟指定軟件相關的歷史命令
yum history telnet