引言
本文主要梳理 Linux 系統中的軟件包的概念,同時介紹RPM與YUM兩大核心管理工具的常用指令、區別聯系以及實戰技巧等。本文作為作者學習Linux系統的第11篇文章,依舊旨在總結當前的學習內容,同時鞏固知識以便日后的學習復習回顧。如有說的不對的地方,還請大佬指正!!
目錄
引言
1. Linux系統中的軟件包?
1.1 什么是軟件包
1.2 軟件包的格式與命名規則
?1.3?軟件包的依賴問題
2.?RPM:基礎軟件包管理工具
2.1 查詢 RPM 包/軟件信息
2.2 安裝 RPM 包
?2.3 卸載 RPM 包
3.?YUM:高級軟件倉庫管理工具
3.1 YUM 軟件倉庫配置
3.1 YUM 安裝軟件
3.2 YUM 更新軟件
3.3 YUM 查詢倉庫軟件
1. Linux系統中的軟件包?
1.1 什么是軟件包
簡單來說就是已經將軟件的二進制文件、配置文件、手冊頁等 "打包" 好的文件,方便在Linux系統中進行安裝、卸載、管理等。一開始我以為是類似于Windows系統的軟件安裝包或者是壓縮文件,但其實并不是,就是一個軟件,而是類似于Windows的 .exe 文件,被整合成一個package的形式。
軟件包的格式有所差異,如 RedHat 系用 rpm,Debian 系用 deb,但是整體使用 rpm 為多,本篇也以 rpm 進行介紹。
1.2 軟件包的格式與命名規則
以 rpm 為例,軟件包的基本格式為
軟件名-版本號-發布次數.硬件平臺.rpm
實例:
tree-1.8.0-1.el8.x86_64.rpm
-
tree
:軟件名稱 -
1.8.0
:主版本號.次版本號.修訂號 -
1
:發布次數 (同一個版本源碼打了第幾次包) -
el8
:適用于 Enterprise Linux 8 (CentOS 8/RHEL 8) -
x86_64
:硬件平臺 (64位 Intel/AMD CPU)
?1.3?軟件包的依賴問題
Linux系統的軟件包的一個核心問題就是很多軟件需要相互之間進行依賴才能夠運行。
也就是說當我要運行或者是安裝A軟件時,必須先安裝B和C軟件。或者是我要卸載A軟件時,B軟件是依賴A軟件的,如果卸載了A軟件,B軟件也使用不了。
軟件包來源分散,需要用戶自己尋找。
2.?RPM:基礎軟件包管理工具
RPM的作用是對單個以 .rpm 結尾的軟件包文件進行基本的安裝、查詢、卸載、驗證等操作,不能自動解決依賴關系
2.1 查詢 RPM 包/軟件信息
查詢已安裝的軟件包:
-
rpm -qa
:查詢所有已安裝的rpm包 (q = query, a = all) -
rpm -q [軟件名]
:查詢指定軟件是否安裝 (e.g.?rpm -q tree
) -
rpm -qi [軟件名]
:查詢指定軟件的詳細信息?(i = information) - 版本,發行號,安裝時間,描述等。 -
rpm -ql [軟件名]
:查詢指定軟件安裝的文件列表?(l = list) - 非常重要!知道軟件裝了什么文件,裝在哪里。 -
rpm -qc [軟件名]
:查詢指定軟件的配置文件?(c = config files) - 通常都在?/etc
?下。 -
rpm -qd [軟件名]
:查詢指定軟件的文檔文件?(d = documentation) - man pages, README等。 -
rpm -qf [文件名]
:查詢某個文件是哪個軟件包安裝的 (f = file) - 非常有用! -
rpm -qR [軟件名]
:查詢指定軟件的依賴?(R = requires) - 看這個軟件運行需要什么。
查詢未安裝的軟件包就在以上相關命令的 q 后面加上 p ,并指定 .rpm 文件路徑代替軟件名。
以 firefox 這個軟件為例,我們詳細介紹一些查詢軟件信息的相關指令
我們可以通過 rpm -qa + grep 查詢是否存在某一個要查詢的軟件包
?如果我們想知道firefox這個軟件包的文件列表,下載了什么文件,我們也可以通過 rpm -ql 查看
如果我們想知道某款軟件包我們是否下載,也可以通過 rpm -q 查看?
如果我們想知道某個軟件包的詳細信息,也可以通過 rpm -qi 查看
2.2 安裝 RPM 包
安裝一個 RPM 軟件包的 基本指令是
rpm -ivh [包全名]
這里的 ivh 解析:
-
-i
:安裝 (install) -
-v
:顯示詳細信息 (verbose) -
-h
:顯示安裝進度條 (hash)
安裝指令的相關選項
-
--nodeps
:強制安裝,忽略依賴。?(危險!可能導致軟件無法運行,僅在明確知道后果時使用) -
--force
:強制覆蓋安裝。?(常用于替換現有文件或損壞的包,也需謹慎)
?2.3 卸載 RPM 包
卸載軟件包的基本指令是
rpm -e [軟件名]
這里的 -e 的意思是 erase ,常用選項是?--nodeps
:強制卸載,忽略依賴。?(危險!可能破壞依賴此軟件的其他程序)
我們以卸載與重新安裝 firefox 火狐瀏覽器為例介紹兩種指令的使用。
我們先在系統終端檢查時候安裝了 firefox 這個軟件包
可以看到我們是已經安裝好的,接下來我們對火狐瀏覽器進行卸載。
rpm -e firefox # 對火狐瀏覽器進行卸載
?
可以看到發出了很多警告,但是沒有關系,我們在應用程序上檢查是否存在
可以看到,firefox瀏覽器已經被我們卸載。
那么我們需要重新安裝firefox瀏覽器,那么必須要有firefox的軟件安裝包,可以再CentOS光盤上找到。我們點開桌面光盤,打開 Package。
里面又各種軟件安裝包,我們對firefox進行搜索。
將該文件復制到 我們系統的 /opt 目錄下。
?可以看到,我們成功將安裝包復制到該目錄下。我們在終端中輸入安裝指令。
rpm -ivh /opt/firefox-68.10.0-1.el7.centos.x86_64.rpm
?
可以看到已經正常安裝了,那么我們再次檢查一遍,firefox瀏覽器是否存在。
?可以看到,已經安裝完畢。
3.?YUM:高級軟件倉庫管理工具
其核心作用是基于 RPM 軟件包,通過軟件倉庫?(Repository)?的概念進行自動下載、安裝軟件,自動解決依賴關系。就好像是我們經常用到的應用商城。
而什么是軟件倉庫呢??是一個集中存放大量 RPM 軟件包及其依賴關系的服務器目錄。
配置文件位于?/etc/yum.repos.d/
?目錄下,以?.repo
?結尾。
注意!!!! CentOS7官方已經停止對于YUM倉庫的維護服務,我們系統所配置的鏡像地址,所以我們現在使用yum就必須自己配置鏡像地址。
下面給出教程
3.1 YUM 軟件倉庫配置
當我們使用yum相關命令時,會觸發一下報錯
Could not resolve host: mirrorlist.centos.org; 404 Not Found
我們以安裝 tree 指令為例,tree指令的功能是以樹的形式查看當前目錄的目錄結構。
?可以看到我們不能使用yum命令,也不能下載安裝tree指令。此時運行
yum install tree
會因無法連接倉庫而失敗。
首先我們需要注銷失效的鏡像地址,打開終端輸入以下指令
# 1. 注釋失效鏡像地址
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
接下來,將可以原有的倉庫替換成可用倉庫。
# 2. 替換為可用倉庫(vault.centos.org或國內鏡像)
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
?
?然后更新緩存,注意!這個過程很漫長,需要耐心等待。
# 3. 更新緩存
sudo yum clean all
sudo yum makecache
?
接下來我們就可以重新使用yum指令安裝軟件倉庫內的各種軟件包。
以安裝tree指令為例
# 4. 安裝tree
sudo yum install tree
當我們安裝這個指令時,會讓我們輸入y/n是否下載
?我們輸入 y 即可下載完成
3.1 YUM 安裝軟件
-
yum install [軟件名]
:從倉庫安裝最新版本的指定軟件及其所有依賴。 -
yum install [軟件名]-[版本號]
:安裝指定版本的軟件 (如果倉庫有)。
3.2 YUM 更新軟件
-
yum update [軟件名]
:更新指定的軟件到倉庫中的最新版本(及其依賴)。 -
yum update
:更新系統中所有可以通過倉庫升級的軟件包(包括系統內核)。
3.3 YUM 查詢倉庫軟件
-
yum list
:列出倉庫中所有可用的軟件包 (包括已安裝和未安裝)。 -
yum list installed
:列出所有已安裝的軟件包。 -
yum list available
:列出倉庫中可用但尚未安裝的軟件包。 -
yum list updates
:列出所有可用的更新。 -
yum list [軟件名]
?/?yum list [部分軟件名]*
:搜索匹配的包。 -
yum info [軟件名]
:顯示軟件包的詳細信息?(類似?rpm -qi
,但信息來自倉庫元數據)。 yum search [關鍵詞]
:在軟件包描述、名稱中搜索包含關鍵詞的包。
與 RPM 單個軟件包不同的是,YUM 可以自動解決軟件包之間的依賴關系,但是還是需要自己手動配置好軟件倉庫,是日常工作的首選。
希望這篇總結能幫你梳理清楚 Linux 軟件包管理的核心脈絡!結合這個總結多加練習,你一定能熟練掌握 RPM 和 YUM。加油!
歡迎在評論區交流學習心得和遇到的問題!