【轉載】使用 Yum、RPM、Apt、Dpkg、Aptitude 和 Zypper 進行 Linux 包管理 – 第 9 部分

来源:https://www.cnblogs.com/mjcaoo/archive/2023/10/03/17739820.html
-Advertisement-
Play Games

在 Linux 的早期,程式僅作為源代碼以及所需的手冊頁、必要的配置文件等分發。如今,大多數 Linux 發行商預設使用預先構建的程式或稱為軟體包的程式集,將其提供給準備在該發行版上安裝的用戶。然而,Linux 的奇跡之一仍然是可以獲得要研究、改進和編譯的程式的源代碼。 ...


原文鏈接:https://www.tecmint.com/linux-package-management/

去年 8 月(原文時間:2018-09-19),Linux 基金會宣佈了 LFCS 認證(Linux 基金會認證系統管理員),這對世界各地的系統管理員來說是一個絕佳的機會,可以通過基於性能的考試來證明他們有能力在 Linux 系統的整體操作支持方面取得成功。經過 Linux 基金會認證的系統管理員擁有專業知識,可確保有效的系統支持、一級故障排除和監控,包括最終在需要時將問題升級給工程支持團隊。

本文是 10 個教程長系列的第 9 部分,今天在本文中我們將指導大家瞭解 LFCS 認證考試所需的 Linux 包管理。

Package Management(包管理)

簡而言之,包管理是一種在系統上安裝和維護(包括更新和可能刪除)軟體的方法。

在 Linux 的早期,程式僅作為源代碼以及所需的手冊頁、必要的配置文件等分發。如今,大多數 Linux 發行商預設使用預先構建的程式或稱為軟體包的程式集,將其提供給準備在該發行版上安裝的用戶。然而,Linux 的奇跡之一仍然是可以獲得要研究、改進和編譯的程式的源代碼。

How package management systems work(包管理系統如何工作)

如果某個包需要某個資源(例如共用庫)或另一個包,則稱其具有依賴性。所有現代包管理系統都提供某種依賴性解析方法,以確保全裝包時,也會安裝其所有依賴項。

Packaging Systems(包管理系統)

現代 Linux 系統上安裝的幾乎所有軟體都可以在 Internet 上找到。它可以由發行版供應商通過中央存儲庫提供(其中可以包含數千個包,每個包都是專門為發行版構建、測試和維護的),也可以以源代碼形式提供,可以手動下載和安裝。

由於不同的發行版系列使用不同的軟體包系統(Debian:.deb / CentOS:.rpm / openSUSE:專為 openSUSE 構建的 .rpm),因此用於一種發行版的軟體包將與另一種發行版不相容。然而,大多數發行版可能屬於 LFCS 認證涵蓋的三個發行版系列之一。

High and low-level package tools(高級和低級包工具)

為了有效地執行包管理任務,需要知道將有兩種類型的可用實用程式:低級工具(在後端處理包文件的實際安裝、升級和刪除)和高級工具(負責確保執行依賴性解析和元數據搜索(“關於數據的數據”)任務)。

發行版 低級工具 高級工具
Debian 及其衍生品 dpkg apt-get/aptitude
CentOS rpm yum
openSUSE rpm zypper

dpkg 是基於 Debian 系統的低級包管理器。它可以安裝、刪除、提供有關和構建 *.deb 包的信息,但無法自動下載和安裝其相應的依賴項。

apt-get 是 Debian 及其衍生版本的高級包管理器,提供了一種使用命令行從多個源檢索和安裝包(包括依賴項解析)的簡單方法。與 dpkg 不同,apt-get 不直接使用 *.deb 文件,而是使用包的正確名稱。

aptitude 是基於 Debian 系統的另一個高級包管理器,可用於以快速、簡單的方式執行管理任務(安裝、升級和刪除包,還自動處理依賴項解析)。它提供了與 apt-get 相同的功能以及其他功能,例如提供對包的多個版本的訪問。

rpm 是符合 Linux Standard Base (LSB) 的發行版使用的包管理系統,用於低級別的包處理。就像 dpkg 一樣,它可以查詢、安裝、驗證、升級和刪除軟體包,並且更常被基於 Fedora 的發行版使用,例如 RHEL 和 CentOS。

yum 向基於 RPM 的系統添加了自動更新和包管理以及依賴項管理的功能。作為一個高級工具,如 apt-get 或 aptitude,yum 與存儲庫一起使用。

Common Usage of Low-Level Tools(低級工具的常見用法)

使用低級工具執行的最常見任務如下:

  1. 從編譯的(*.deb 或 *.rpm)文件安裝軟體包

這種安裝方法的缺點是不提供依賴關係解析。當發行版存儲庫中沒有此類軟體包,因此無法通過高級工具下載和安裝時,我們很可能會選擇從已編譯的文件安裝此類軟體包。由於低級工具不執行依賴關係解析,因此如果我們嘗試安裝具有未滿足依賴關係的包,它們將退出並出現錯誤。

# dpkg -i file.deb 		[Debian and derivative]
# rpm -i file.rpm 		[CentOS / openSUSE]

註意:請勿嘗試在 CentOS 上安裝為 openSUSE 構建的 *.rpm 文件,反之亦然!

  1. 從編譯文件升級包

同樣,只有當中央存儲庫中沒有已安裝的軟體包時,我們才會手動升級該軟體包。

# dpkg -i file.deb 		[Debian and derivative]
# rpm -U file.rpm 		[CentOS / openSUSE]
  1. 列出已安裝的軟體包

當我們第一次接觸已經運行的系統時,很可能想知道安裝了哪些軟體包。

# dpkg -l 		[Debian and derivative]
# rpm -qa 		[CentOS / openSUSE]

如果想知道是否安裝了特定的軟體包,可以將上述命令的輸出通過管道傳輸到 grep,如在 Linux 中操作文件 - 本系列的第 1 部分中所述。假設我們需要驗證 Ubuntu 系統上是否安裝了 mysql-common 軟體包。

# dpkg -l | grep mysql-common

另一種確定軟體包是否已安裝的方法。

# dpkg --status package_name 		[Debian and derivative]
# rpm -q package_name 			[CentOS / openSUSE]

例如,讓我們看看我們的系統上是否安裝了 sysdig 軟體包。

# rpm -qa | grep sysdig

  1. 找出哪個包安裝了某個文件
# dpkg --search file_name
# rpm -qf file_name

例如,哪個軟體包安裝了pw_dict.hwm?

# rpm -qf /usr/share/cracklib/pw_dict.hwm

Common Usage of High-Level Tools(高級工具的常見用法)

使用高級工具執行的最常見任務如下。

  1. 搜索包

aptitude update 將更新可用包的列表,並且 aptitude search 將執行對 package_name 的實際搜索。

# aptitude update && aptitude search package_name

在 search all 選項中,yum 不僅會在包名稱中搜索 package_name,還會在包描述中搜索 package_name。

# yum search package_name
# yum search all package_name
# yum whatprovides "*/package_name"

假設我們需要一個名為 sysdig 的文件。要知道我們必須安裝的包,讓我們運行一下。

# yum whatprovides "*/sysdig"

whatprovides 告訴 yum 搜索將提供與上述正則表達式匹配的文件的包。

# zypper refresh && zypper search package_name		[On openSUSE]
  1. 從存儲庫安裝包

安裝軟體包時,在軟體包管理器解決所有依賴關係後,系統可能會提示確認安裝。請註意,運行更新或刷新(根據所使用的包管理器)並不是絕對必要的,但出於安全和依賴性原因,使已安裝的包保持最新是一個很好的系統管理實踐。

# aptitude update && aptitude install package_name 		[Debian and derivatives]
# yum update && yum install package_name 			[CentOS]
# zypper refresh && zypper install package_name 		[openSUSE]
  1. 刪除包

選項“刪除”將卸載軟體包,但保留配置文件完整,而“清除”將從系統中刪除該程式的所有痕跡。

# aptitude remove / purge package_name
# yum erase package_name
---Notice the minus sign in front of the package that will be uninstalled, openSUSE ---

# zypper remove -package_name 

預設情況下,大多數(如果不是全部)包管理器都會提示您是否確定要在實際執行卸載之前繼續卸載。請仔細閱讀屏幕上的信息,以免遇到不必要的麻煩!

  1. 顯示包的信息

以下命令將顯示有關birthday package的信息。

# aptitude show birthday 
# yum info birthday
# zypper info birthday

Summary(概括)

作為系統管理員,包管理是你無法忽視的事情。您應該準備好隨時使用本文中描述的工具。希望您發現它對您準備 LFCS 考試和日常任務很有幫助。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WebSocket是一種在單個TCP連接上進行全雙工通信的協議。WebSocket使得客戶端和伺服器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在WebSocket API中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,併進行雙向數據傳輸。 ...
  • @Styles和@Extend僅僅應用於靜態頁面的樣式復用,stateStyles可以依據組件的內部狀態的不同,快速設置不同樣式。這就是我們本章要介紹的內容stateStyles(又稱為:多態樣式)。 概述 stateStyles是屬性方法,可以根據UI內部狀態來設置樣式,類似於css偽類,但語法不 ...
  • Sentinel 簡介 Sentinel 是阿裡中間件團隊開源的,面向分散式服務架構的高可用流量防護組件,主要以流量為切入點,從限流、流量整形、熔斷降級、系統負載保護、熱點防護等多個維度來幫助開發者保障微服務的穩定性 Sentinel 提供了兩個服務組件: Sentinel 用來實現微服務系統中服務 ...
  • 開心一刻 昨晚,老婆輔導女兒寫作業 有一道形容媽媽的題,女兒寫下了:我媽媽像一個暴躁的老虎 老婆拿起題冊輕輕敲了下女兒,生氣到:有這麼形容你媽的嗎 女兒:你看你現在 老婆:我有那麼暴躁嗎,你就不能說我媽媽像一個公主,溫柔大方漂亮? 女兒:題目讓我造句,沒讓我造謠! 我:哈哈哈哈! 郵件發送 基於 J ...
  • 在Go語言中,結構體是核心的數據組織工具,提供了靈活的手段來處理複雜數據。本文深入探討了結構體的定義、類型、字面量表示和使用方法,旨在為讀者呈現Go結構體的全面視角。通過結構體,開發者可以實現更加模塊化、高效的代碼設計。這篇文章旨在為您提供關於結構體的深入理解,助您更好地利用Go語言的強大功能。 關 ...
  • 堆疊面積圖和麵積圖都是用於展示數據隨時間變化趨勢的統計圖表,但它們的特點有所不同。面積圖的特點在於它能夠直觀地展示數量之間的關係,而且不需要標註數據點,可以輕鬆地觀察數據的變化趨勢。而堆疊面積圖則更適合展示多個數據系列之間的變化趨勢,它們一層層的堆疊起來,每個數據系列的起始點是上一個數據系列的結束點 ...
  • 進行SSM(Spring+SpringMVC+MyBatis)集成的主要原因是為了提高開發效率和代碼可維護性。SSM是一套非常流行的Java Web開發框架,它集成了Spring框架、SpringMVC框架和MyBatis框架,各自發揮優勢,形成了一個完整的開發框架。 ...
  • 在Windows平臺下創建多線程有兩種方式,讀者可以使用`CreateThread`函數,或者使用`beginthreadex`函數均可,兩者雖然都可以用於創建多線程環境,但還是存在一些差異的,首先`CreateThread`函數它是`Win32 API`的一部分,而`_beginthreadex`... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...