搜尋
首頁系統教程Linux分析apt、yum、dnf和pkg的功能和特點

分析apt、yum、dnf和pkg的功能和特點

Jan 04, 2024 pm 08:25 PM
linuxlinux教程紅帽linux系統linux指令linux認證紅帽linuxlinux視頻

導讀 大多數現代的類別 Unix 作業系統都提供了一個中心化的機制用來搜尋和安裝軟體。軟體通常都是存放在儲存庫中,並透過套件的形式進行分發。處理包的工作稱為包管理。套件提供了作業系統的基本元件,以及共享的庫、應用程式、服務和文件。

详解apt、yum、dnf 和 pkg

#介紹

套件管理系統除了安裝軟體外,它還提供了工具來更新已經安裝的套件。套件儲存庫有助於確保你的系統中使用的程式碼是經過審查的,並且軟體的安裝版本已經得到了開發人員和套件維護人員的認可。

在配置伺服器或開發環境時,我們最好了解下套件在官方儲存庫之外的情況。某個發行版的穩定版本中的包有可能已經過時了,尤其是那些新的或快速迭代的軟體。然而,套件管理無論對於系統管理員還是開發人員來說都是至關重要的技能,而已打包的軟體對於主流 Linux 發行版來說也是一筆巨大的財富。

本指南旨在快速地介紹下在多種 Linux 發行版中查找、安裝和升級軟體包的基礎知識,並幫助您將這些內容在多個系統之間進行交叉對比。

套件管理系統:簡要概述

大多數套件系統都是圍繞著套件檔案的集合建構的。套件檔案通常是一個存檔文件,它包含已編譯的二進位檔案和軟體的其他資源,以及安裝腳本。套件檔案同時也包含有價值的元數據,包括它們的依賴項,以及安裝和運行它們所需的其他套件的清單。

雖然這些套件管理系統的功能和優點大致相同,但打包格式和工具卻因平台而異:

作業系統 格式 工具
Debian .deb apt, apt-cache, apt-get, dpkg
#Ubuntu .deb apt, apt-cache, apt-get, dpkg
#CentOS .rpm yum
Fedora .rpm dnf
FreeBSD Ports, .txz ##make, pkg

Debian 及其衍生版,如 Ubuntu、Linux Mint 和 Raspbian,它們的套件格式是 .deb。 APT 這款先進的套件管理工具提供了大多數常見的操作命令:搜尋儲存庫、安裝軟體套件及其依賴項,並管理升級。在本機系統中,我們也可以使用 dpkg 程式來安裝單一的 deb 文件,APT 指令作為底層 dpkg 的前端,有時也會直接呼叫它。

最近發布的 debian 衍生版大多數都包含了 apt 命令,它提供了一個簡潔統一的接口,可用於通常由 apt-get 和 apt-cache 命令處理的常見操作。這個命令是可選的,但使用它可以簡化一些任務。

CentOS、Fedora 和其它 Red Hat 家族成員使用 RPM 檔案。在 CentOS 中,透過 yum 來與單獨的套件檔案和儲存庫進行互動。

在最近的 Fedora 版本中,yum 已經被 dnf 取代,dnf 是它的一個現代化的分支,它保留了大部分 yum的介面。

FreeBSD 的二進位套件系統由 pkg 指令管理。 FreeBSD 還提供了 Ports 集合,這是一個存在於本地的目錄結構和工具,它允許用戶在取得原始碼後使用 Makefile 直接從原始碼編譯和安裝套件。

更新套件清單

大多數系統在本地都會有一個和遠端儲存庫對應的套件資料庫,在安裝或升級套件之前最好更新一下這個資料庫。另外,yum 和 dnf 在執行一些操作前也會自動檢查更新。當然你可以在任何時候對系統進行更新。

系統 命令
Debian / Ubuntu sudo apt-get update
sudo apt update
CentOS yum check-update
Fedora dnf check-update
FreeBSD Packages sudo pkg update
FreeBSD Ports sudo portsnap fetch update
更新已安裝的套件

在沒有套件系統的情況下,想確保機器上所有已安裝的軟體都保持在最新的狀態是一個很艱鉅的任務。你將不得不追蹤數百個不同套件的上游變更和安全警報。雖然套件管理器並不能解決升級軟體時遇到的所有問題,但它確實使你能夠使用一些命令來維護大多數系統元件。

在 FreeBSD 上,升級已安裝的 ports 可能會引入破壞性的改變,有些步驟還需要進行手動配置,所以在透過 portmaster 更新之前最好閱讀下 /usr/ports/UPDATING 的內容。

系統 命令 說明
Debian / Ubuntu sudo apt-get upgrade 只更新已安裝的套件
sudo apt-get dist-upgrade 可能會增加或刪除套件以滿足新的依賴項
sudo apt upgrade 和 apt-get upgrade 類似
sudo apt full-upgrade 和 apt-get dist-upgrade 類似
CentOS sudo yum update
Fedora sudo dnf upgrade
FreeBSD Packages sudo pkg upgrade
FreeBSD Ports less /usr/ports/UPDATING 使用 less 來查看 ports 的更新提示(使用上下遊標鍵滾動,按 q 退出)。
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a 安裝 portmaster 然後使用它來更新已安裝的 ports
搜尋某個套件

大多數發行版都提供針對套件集合的圖形化或選單驅動的工具,我們可以分類瀏覽軟體,這也是一個發現新軟體的好方法。然而,查找套件最快和最有效的方法是使用命令列工具進行搜尋。

搜尋所有的字段,包括描述#dnf search all search_stringpkg search search_string#透過名字進行搜尋pkg search -f search_string透過名字進行搜尋並返回完整的描述pkg search -D search_string搜尋描述FreeBSD Portscd /usr/ports && make search name=package透過名字進行搜尋cd /usr/ports && make search key=search_string
系統 命令 說明
Debian / Ubuntu apt-cache search search_string
apt search search_string
##CentOS yum search search_string
yum search all search_string
Fedora dnf search search_string
搜尋所有的字段,包括描述 FreeBSD Packages
搜尋評論、描述和依賴

查看某個軟體包的資訊系統命令說明Debian / Ubuntuapt-cache show packageCentOSFedoraFreeBSD PackagesFreeBSD Ports
在安裝軟體包之前,我們可以透過仔細閱讀套件的描述來獲得許多有用的信息。除了人類可讀的文字之外,這些內容通常包括像版本號這樣的元資料和包的依賴項清單。
#顯示有關包的本機快取資訊
apt show package
dpkg -s package #顯示套件的目前安裝狀態
yum info package
yum deplist package #列出套件的依賴
dnf info package
dnf repoquery --requires package 列出套件的依賴
pkg info package 顯示已安裝的套件的資訊
cd /usr/ports/category/port && cat pkg-descr### ###### ### ### ###從儲存庫安裝套件

知道套件名稱後,通常可以用一個指令來安裝它及其相依性。你也可以一次安裝多個包,只需將它們全部列出來即可。

顯示一個彩色的進度條安裝所有列出來的套件在 yum 提示是否繼續的地方直接預設 yesFedorasudo dnf install packagesudo dnf install package1 package2 ...安裝所有列出來的套件sudo dnf install -y package在 dnf 提示是否繼續的地方直接預設 yes##FreeBSD Packagessudo pkg install packagesudo pkg install package1 package2 ...安裝所有列出來的套件FreeBSD Portscd /usr/ports/category/port && sudo make install#從原始碼建置安裝一個 port
系統 命令 說明
Debian / Ubuntu sudo apt-get install package
sudo apt-get install package1 package2 ... 安裝所有列出來的套件
sudo apt-get install -y package 在 apt 提示是否繼續的地方直接預設 yes
#sudo apt install package
CentOS sudo yum install package
sudo yum install package1 package2 ...
sudo yum install -y package

從本機檔案系統安裝一個套件

對於一個給定的作業系統,有時有些軟體官方並沒有提供相應的包,那麼開發人員或供應商將需要提供包檔的下載。你通常可以透過 web 瀏覽器檢索這些套件,或透過命令列 curl 來檢索這些資訊。將套件下載到目標系統後,我們通常可以透過單一命令來安裝它。

在 Debian 衍生的系統上,dpkg 用來處理單一的套件檔案。如果一個套件有未滿足的依賴項,那麼我們可以使用 gdebi 從官方儲存庫中檢索它們。 在 CentOS 和 Fedora 系統上,yum 和 dnf 用於安裝單一的文件,並且會處理需要的依賴。 系統命令說明Debian / Ubuntusudo dpkg -i package.debsudo apt-get install -y gdebi && sudo gdebi package.deb安裝 gdebi,然後使用 gdebi 安裝 package.deb 並處理缺失的依賴CentOSsudo yum install package.rpmFedorasudo dnf install package.rpmFreeBSD Packagessudo pkg add package.txzsudo pkg add -f package.txz##即使已經安裝的套件也會重新安裝

刪除一個或多個已安裝的套件由於套件管理器知道給定的軟體包提供了哪些文件,因此如果某個軟體不再需要了,它通常可以乾淨利落地從系統中清除這些文件。 系統命令說明Debian / Ubuntusudo apt-get remove packagesudo apt remove packagesudo apt-get autoremovesudo yum remove packagesudo dnf erase packagesudo pkg delete packagesudo pkg autoremovesudo pkg delete packagecd /usr/ports/path_to_port && make deinstall
##刪除不需要的套件 CentOS
Fedora
FreeBSD Packages
刪除不需要的套件 FreeBSD Ports
卸載 port### ### ### ###apt 指令

Debian 家族發行版的管理員通常熟悉 apt-get 和 apt-cache。較少為人所知的是簡化的 apt 介面,它是專為互動式使用而設計的。

#apt search string#apt install packageapt-get remove packageapt remove packageapt-get purge package
傳統命令 等價的 apt 指令
apt-get update apt update
apt-get dist-upgrade apt full-upgrade
apt-cache search string
apt-get install package

##apt purge package

雖然 apt 通常是一個特定操作的快捷方式,但它並不能完全取代傳統的工具,它的介面可能會隨著版本的不同而變化,以提高可用性。如果你在腳本或 shell 管道中使用套件管理指令,那麼最好還是堅持使用 apt-get 和 apt-cache。

取得協助除了基於 web 的文檔,請記住我們可以透過 shell 從 Unix 手冊頁(通常稱為 man 頁面)中獲得大多數的命令。例如閱讀某頁,可以使用 man:系統命令說明Debian / Ubuntuman apt-get更新本機套件資料庫以及與套件一起工作man apt-cache在本地的套件資料庫中搜尋man dpkg和單獨的套件檔案一起工作以及能查詢已安裝的套件man apt透過更簡潔,使用者友善的介面進行最基本的操作CentOSman yumFedoraman dnfFreeBSD Packagesman pkg和預先編譯的二進位套件一起工作FreeBSD Portsman ports
在 man 中,你可以用箭頭鍵導航。按 / 搜尋頁面內的文本,使用 q 退出。

和 Ports 集合一起工作 ### ### ### ### ###

以上是分析apt、yum、dnf和pkg的功能和特點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Linux就该这么学。如有侵權,請聯絡admin@php.cn刪除
Linux與Windows的典型用例是什麼?Linux與Windows的典型用例是什麼?May 03, 2025 am 12:01 AM

LinuxIsideAlforCustomization,開發和ServerManagement,WhileWindowSexcelSineAsofuse,SoftWareCompatibility andgaming.linuxoffershighighighighignfigurabilityfordefordeerserersandserserservervevendingservervevelicersandervervevelopservervevelopservervevelopsetups,whereaswindowspprovidesaprovidesauser-frovideslyinlyintellyintlyintellyinterfrignlyInterFaroffacorDofroardOaforportort

Linux和Windows之間的用戶帳戶管理有什麼區別?Linux和Windows之間的用戶帳戶管理有什麼區別?May 02, 2025 am 12:02 AM

Linux和Windows在用戶賬戶管理上的主要區別在於權限模型和管理工具。 Linux使用基於Unix的權限模型和命令行工具(如useradd、usermod、userdel),而Windows採用自己的安全模型和圖形用戶界面(GUI)管理工具。

Linux的命令行環境如何使其比Windows更安全?Linux的命令行環境如何使其比Windows更安全?May 01, 2025 am 12:03 AM

Linux'scommandlinecanbemoresecurethanWindowsifmanagedcorrectly,butrequiresmoreuserknowledge.1)Linux'sopen-sourcenatureallowsforquicksecurityupdates.2)Misconfigurationcanleadtovulnerabilities.Windows'commandlineismorecontrolledbutlesscustomizable,with

如何在Linux中自動製作USB驅動器安裝如何在Linux中自動製作USB驅動器安裝Apr 30, 2025 am 10:04 AM

本指南說明瞭如何在Linux的啟動下自動安裝USB驅動器,從而節省了時間和精力。 步驟1:確定您的USB驅動器 使用LSBLK命令列出所有塊設備。 您的USB驅動器可能會標記為 /dev /sdb1, /dev /sdc1等

2025年,最佳Linux,Windows和Mac的最佳跨平台應用程序2025年,最佳Linux,Windows和Mac的最佳跨平台應用程序Apr 30, 2025 am 09:57 AM

跨平台應用程序已徹底改變了軟件開發,從而在Linux,Windows和MacOS等操作系統上實現了無縫功能。 這消除了根據您的設備切換應用程序的需求,提供一致的體驗

2025年AI和機器學習的最佳Linux工具2025年AI和機器學習的最佳Linux工具Apr 30, 2025 am 09:44 AM

人工智能(AI)正在迅速改變許多部門,從醫療保健和金融到藝術和音樂等創意領域。 Linux具有開源性,適應性和性能功能,已成為首要的Platfo

5最佳輕巧的Linux發行版,不帶GUI5最佳輕巧的Linux發行版,不帶GUIApr 30, 2025 am 09:38 AM

尋找沒有圖形用戶界面(GUI)的快速,最小和高效的Linux分佈? 輕巧,無GUI-Linux發行版非常適合較舊的硬件或服務器和嵌入式系統(例如服務器和嵌入式系統)。他們消耗較少的res

如何在Redhat發行中安裝葡萄酒10.0如何在Redhat發行中安裝葡萄酒10.0Apr 30, 2025 am 09:32 AM

Wine 10.0穩定版發布:在Linux上運行Windows應用更上一層樓 Wine,這款開源免費的應用程序,讓Linux用戶能夠在Unix/Linux類操作系統上運行Windows軟件和遊戲,迎來了10.0穩定版的發布!此版本已提供源代碼和二進制包下載,支持Linux、Windows和Mac等多種發行版。 這一版本凝聚了一年的辛勤工作和超過8600項改進,帶來了諸多令人興奮的提升。主要亮點包括: 增強對藍牙設備的支持。 提升對HID輸入設備的支持。 優化了32位和64位應用程序的運行性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器