Linux學習篇11——Linux軟件包管理利器:RPM與YUM詳解與實戰指南,包含如何配置失效的YUM鏡像地址

引言

本文主要梳理 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。加油!

歡迎在評論區交流學習心得和遇到的問題!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90672.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90672.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90672.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3+ElementPlus實現可拖拽/吸附/搜索/收起展開的浮動菜單組件

在開發后臺管理系統時,我們經常會用到浮動菜單來快速訪問某些功能。本篇文章將分享一個基于 Vue3 ElementPlus 實現的浮動菜單組件,支持拖拽移動、邊緣吸附、二級菜單展開、菜單搜索過濾、視頻彈窗等交互效果,極大提升了用戶操作的便捷性與美…

CSS 盒子模型學習版的理解

文章目錄一、盒子模型構建流程(一句話抓關鍵)二、核心邏輯提煉三、代碼驗證四、一句話總結流程通過手繪圖示,清晰拆解 Content(內容)→ Padding(內邊距)→ Border(邊框)→…

解決線程安全的幾個方法

線程安全:線程安全問題的發現與解決-CSDN博客 Java中所使用的并發機制依賴于JVM的實現和CPU的指令。 所以了解并掌握深入Java并發編程基礎的前提知識是熟悉JVM的實現了解CPU的指令。 1.volatile簡介 在多線程并發編程中,有兩個重要的關鍵字&#xff1a…

大模型應用班-第2課 DeepSeek使用與提示詞工程課程重點 學習ollama 安裝 用deepseek-r1:1.5b 分析PDF 內容

DeepSeek使用與提示詞工程課程重點Homework:ollama 安裝 用deepseek-r1:1.5b 分析PDF 內容python 代碼建構:1.小模型 1.5b 可以在 筆記本上快速執行2.分析結果還不錯3. 重點是提示詞 prompt 的寫法一、DeepSeek模型創新與特點1. DeepSeek-V3模型特點采用…

在FreeBSD系統下使用llama-cpp運行飛槳開源大模型Ernie4.5 0.3B(失敗)

先上結論,截止到目前2025.7.25日,還不能用。也就是Ernie4.5模型無法在llama.cpp 和Ollama上進行推理,原因主要就llama是不支持Ernie4.5異構MoE架構。 不局限于FreeBSD系統,Windows也測試失敗,理論上Ubuntu下也是不行。…

OpenCV圖像梯度、邊緣檢測、輪廓繪制、凸包檢測大合集

一、圖像梯度 在圖像處理中,「梯度(Gradient)」是一個非常基礎但又極其重要的概念。它是圖像邊緣檢測、特征提取、紋理分析等眾多任務的核心。梯度的本質是在空間上描述像素灰度值變化的快慢和方向。 但我們如何在圖像中計算梯度?…

GitHub 趨勢日報 (2025年07月25日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖1814Resume-Matcher985neko714Qwen3-Coder622OpenBB542BillionMail486hrms219hyper…

編程語言Java——核心技術篇(五)IO流:數據洪流中的航道設計

🌟 你好,我是 勵志成為糕手 ! 🌌 在代碼的宇宙中,我是那個追逐優雅與性能的星際旅人。 ? 每一行代碼都是我種下的星光,在邏輯的土壤里生長成璀璨的銀河; 🛠? 每一個算法都是我繪制…

基于FPGA的16QAM軟解調+卷積編碼Viterbi譯碼通信系統,包含幀同步,信道,誤碼統計,可設置SNR

目錄 1.引言 2.算法仿真效果 3.算法涉及理論知識概要 3.1 16QAM調制軟解調原理 3.2 幀同步 3.3 卷積編碼,維特比譯碼 4.Verilog程序接口 5.參考文獻 6.完整算法代碼文件獲得 1.引言 基于FPGA的16QAM軟解調卷積編碼Viterbi譯碼通信系統開發,包含幀同步,高斯…

Python數據分析基礎(二)

一、Numpy 常用函數分類概覽函數類別常用函數基本數學函數np.sum(x)、np.sqrt(x)、np.exp(x)、np.log(x)、np.sin(x)、np.abs(x)、np.power(a, b)、np.round(x, n) 等統計函數np.mean(x)、np.median(x)、np.std(x)、np.var(x)、np.min(x)、np.max(x)、np.percentile(x, q) 等比…

Colab中如何臨時使用udocker(以MinIO為例)

本文主要是想記錄一下自己在Colab中用udocker啟動一個MinIO的容器的過程。 1. 命令行配置環境 由于目前沒有用到GPU,所以我選擇的是CPU的環境。(內存12G)然后就可以在命令行里安裝udocker了,并配置minio的環境 # 由于minio需要做兩個端口映射&#xff0c…

rt-thread 5.2.1 基于at-start-f437開發過程記錄

基于rt-thread 5.2.1 bsp/at/at32f437-start進行開發,記錄詳細過程,包括中間遇到的各種坑。 at32f437-start原理圖 自己設計的電路板主要換了一塊小封裝的同系列芯片, 目標是移植opENer。 1. 開發環境 env長時間不用,有點忘了。這次新下載…

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家,覺得好請收藏。點擊跳轉到網站。 摘要 本文詳細介紹了基于Python的EMCCD相機&#xff0…

前綴和-560.和為k的子數組-力扣(LeetCode)

一、題目解析1.子數組是數組中元素的連續非空序列2.nums[i]范圍為[-1000,1000],存在負數3.由于2的題目條件,該題不能用雙指針算法,不具備單調性 二、算法原理解法1:暴力解法->枚舉 O(N^2)固定一個值,向后枚舉數組和…

解決企業微信收集表沒有圖片、文件組件,不能收集圖片的問題

問題: 企業微信里面的收集表功能,有一個圖片收集的收集表,但是插入的組件沒有收集圖片的組件? 原因: 大概率是微盤未啟用 解決方法: 1、登陸企業微信管理后臺 企業微信 2、訪問微盤頁面,…

認識單片機

《認識單片機》課程內容 一、課程導入 在我們的日常生活中,有很多看似普通卻充滿智慧的小物件。比如家里的智能電飯煲,它能精準地控制煮飯的時間和溫度,讓米飯煮得香噴噴的;還有樓道里的聲控燈,當有人走過發出聲音時&a…

數據結構(2)順序表算法題

一、移除元素1、題目描述2、算法分析 思路1:查找val值對應的下標pos,執行刪除pos位置數據的操作。該方法時間復雜度為O(n^2),因此不建議使用。思路2:創建新數組(空間大小與原數組一致&#xff0…

汽車電子架構

本文試圖從Analog Devices官網中的汽車解決方案視角帶讀者構建起汽車電子的總體架構圖,為國內熱愛和從事汽車電子行業的伙伴們貢獻一份力量。 一 、汽車電子架構總覽 整個汽車電子包括四個部分:車身電子(Body Electronics)、座艙與…

pycharm 2025 專業版下載安裝教程【附安裝包】

安裝之前,請確保已經關閉所有安全軟件(如殺毒軟件、防火墻等)安裝包 👇鏈接:https://pan.xunlei.com/s/VOU-5_L1KOH5j3zDaaCh-Z28A1# 提取碼:6bjy下載 PyCharm2025專業版 安裝包 并 進行解壓運行 pycharm-2…

在 Java 世界里讓對象“旅行”:序列化與反序列化

Java 生態里關于 JSON 的序列化與反序列化(以下簡稱“序列化”)是一個久經考驗的話題,卻常因框架繁多、配置瑣碎而讓初學者望而卻步。本文將圍繞一段極簡的 JsonUtils 工具類展開,以 FastJSON 與 Jackson 兩大主流實現為例&#x…