自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux包管理基礎(chǔ):apt、yum、dnf和pkg

系統(tǒng) Linux
本指南旨在快速地介紹下在多種 Linux 發(fā)行版中查找、安裝和升級軟件包的基礎(chǔ)知識,并幫助您將這些內(nèi)容在多個(gè)系統(tǒng)之間進(jìn)行交叉對比。

[[200330]]

介紹

大多數(shù)現(xiàn)代的類 Unix 操作系統(tǒng)都提供了一種中心化的機(jī)制用來搜索和安裝軟件。軟件通常都是存放在存儲庫中,并通過包的形式進(jìn)行分發(fā)。處理包的工作被稱為包管理。包提供了操作系統(tǒng)的基本組件,以及共享的庫、應(yīng)用程序、服務(wù)和文檔。

包管理系統(tǒng)除了安裝軟件外,它還提供了工具來更新已經(jīng)安裝的包。包存儲庫有助于確保你的系統(tǒng)中使用的代碼是經(jīng)過審查的,并且軟件的安裝版本已經(jīng)得到了開發(fā)人員和包維護(hù)人員的認(rèn)可。

在配置服務(wù)器或開發(fā)環(huán)境時(shí),我們***了解下包在官方存儲庫之外的情況。某個(gè)發(fā)行版的穩(wěn)定版本中的包有可能已經(jīng)過時(shí)了,尤其是那些新的或者快速迭代的軟件。然而,包管理無論對于系統(tǒng)管理員還是開發(fā)人員來說都是至關(guān)重要的技能,而已打包的軟件對于主流 Linux 發(fā)行版來說也是一筆巨大的財(cái)富。

本指南旨在快速地介紹下在多種 Linux 發(fā)行版中查找、安裝和升級軟件包的基礎(chǔ)知識,并幫助您將這些內(nèi)容在多個(gè)系統(tǒng)之間進(jìn)行交叉對比。

包管理系統(tǒng):簡要概述

大多數(shù)包系統(tǒng)都是圍繞包文件的集合構(gòu)建的。包文件通常是一個(gè)存檔文件,它包含已編譯的二進(jìn)制文件和軟件的其他資源,以及安裝腳本。包文件同時(shí)也包含有價(jià)值的元數(shù)據(jù),包括它們的依賴項(xiàng),以及安裝和運(yùn)行它們所需的其他包的列表。

雖然這些包管理系統(tǒng)的功能和優(yōu)點(diǎn)大致相同,但打包格式和工具卻因平臺而異:

操作系統(tǒng) 格式 工具
Debian .deb aptapt-cacheapt-getdpkg
Ubuntu .deb aptapt-cacheapt-getdpkg
CentOS .rpm yum
Fedora .rpm dnf
FreeBSD Ports, .txz makepkg

Debian 及其衍生版,如 Ubuntu、Linux Mint 和 Raspbian,它們的包格式是 .deb。APT 這款先進(jìn)的包管理工具提供了大多數(shù)常見的操作命令:搜索存儲庫、安裝軟件包及其依賴項(xiàng),并管理升級。在本地系統(tǒng)中,我們還可以使用 dpkg 程序來安裝單個(gè)的 deb 文件,APT 命令作為底層 dpkg 的前端,有時(shí)也會直接調(diào)用它。

最近發(fā)布的 debian 衍生版大多數(shù)都包含了 apt 命令,它提供了一個(gè)簡潔統(tǒng)一的接口,可用于通常由 apt-get 和 apt-cache 命令處理的常見操作。這個(gè)命令是可選的,但使用它可以簡化一些任務(wù)。

CentOS、Fedora 和其它 Red Hat 家族成員使用 RPM 文件。在 CentOS 中,通過 yum 來與單獨(dú)的包文件和存儲庫進(jìn)行交互。

在最近的 Fedora 版本中,yum 已經(jīng)被 dnf 取代,dnf 是它的一個(gè)現(xiàn)代化的分支,它保留了大部分 yum 的接口。

FreeBSD 的二進(jìn)制包系統(tǒng)由 pkg 命令管理。FreeBSD 還提供了 Ports 集合,這是一個(gè)存在于本地的目錄結(jié)構(gòu)和工具,它允許用戶獲取源碼后使用 Makefile 直接從源碼編譯和安裝包。

更新包列表

大多數(shù)系統(tǒng)在本地都會有一個(gè)和遠(yuǎn)程存儲庫對應(yīng)的包數(shù)據(jù)庫,在安裝或升級包之前***更新一下這個(gè)數(shù)據(jù)庫。另外,yum 和 dnf 在執(zhí)行一些操作之前也會自動檢查更新。當(dāng)然你可以在任何時(shí)候?qū)ο到y(tǒng)進(jìn)行更新。

系統(tǒng) 命令
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

更新已安裝的包

在沒有包系統(tǒng)的情況下,想確保機(jī)器上所有已安裝的軟件都保持在***的狀態(tài)是一個(gè)很艱巨的任務(wù)。你將不得不跟蹤數(shù)百個(gè)不同包的上游更改和安全警報(bào)。雖然包管理器并不能解決升級軟件時(shí)遇到的所有問題,但它確實(shí)使你能夠使用一些命令來維護(hù)大多數(shù)系統(tǒng)組件。

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

系統(tǒng) 命令 說明
Debian / Ubuntu sudo apt-get upgrade 只更新已安裝的包
  sudo apt-get dist-upgrade 可能會增加或刪除包以滿足新的依賴項(xiàng)
  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 的更新提示(使用上下光標(biāo)鍵滾動,按 q 退出)。
  cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a 安裝 portmaster 然后使用它更新已安裝的 ports

搜索某個(gè)包

大多數(shù)發(fā)行版都提供針對包集合的圖形化或菜單驅(qū)動的工具,我們可以分類瀏覽軟件,這也是一個(gè)發(fā)現(xiàn)新軟件的好方法。然而,查找包最快和最有效的方法是使用命令行工具進(jìn)行搜索。

系統(tǒng) 命令 說明
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  
  dnf search all search_string 搜索所有的字段,包括描述
FreeBSD Packages pkg search search_string 通過名字進(jìn)行搜索
  pkg search -f search_string 通過名字進(jìn)行搜索并返回完整的描述
  pkg search -D search_string 搜索描述
FreeBSD Ports cd /usr/ports && make search name=package 通過名字進(jìn)行搜索
  cd /usr/ports && make search key=search_string 搜索評論、描述和依賴

查看某個(gè)軟件包的信息

在安裝軟件包之前,我們可以通過仔細(xì)閱讀包的描述來獲得很多有用的信息。除了人類可讀的文本之外,這些內(nèi)容通常包括像版本號這樣的元數(shù)據(jù)和包的依賴項(xiàng)列表。

系統(tǒng) 命令 說明
Debian / Ubuntu apt-cache show package 顯示有關(guān)包的本地緩存信息
  apt show package  
  dpkg -s package 顯示包的當(dāng)前安裝狀態(tài)
CentOS yum info package  
  yum deplist package 列出包的依賴
Fedora dnf info package  
  dnf repoquery --requires package 列出包的依賴
FreeBSD Packages pkg info package 顯示已安裝的包的信息
FreeBSD Ports cd /usr/ports/category/port && cat pkg-descr  

從存儲庫安裝包

知道包名后,通??梢杂靡粋€(gè)命令來安裝它及其依賴。你也可以一次性安裝多個(gè)包,只需將它們?nèi)苛谐鰜砑纯伞?/p>

系統(tǒng) 命令 說明
Debian / Ubuntu sudo apt-get install package  
  sudo apt-get install package1 package2 ... 安裝所有列出來的包
  sudo apt-get install -y package apt 提示是否繼續(xù)的地方直接默認(rèn) yes
  sudo apt install package 顯示一個(gè)彩色的進(jìn)度條
CentOS sudo yum install package  
  sudo yum install package1 package2 ... 安裝所有列出來的包
  sudo yum install -y package yum 提示是否繼續(xù)的地方直接默認(rèn) yes
Fedora sudo dnf install package  
  sudo dnf install package1 package2 ... 安裝所有列出來的包
  sudo dnf install -y package dnf 提示是否繼續(xù)的地方直接默認(rèn) yes
FreeBSD Packages sudo pkg install package  
  sudo pkg install package1 package2 ... 安裝所有列出來的包
FreeBSD Ports cd /usr/ports/category/port && sudo make install 從源碼構(gòu)建安裝一個(gè) port

從本地文件系統(tǒng)安裝一個(gè)包

對于一個(gè)給定的操作系統(tǒng),有時(shí)有些軟件官方并沒有提供相應(yīng)的包,那么開發(fā)人員或供應(yīng)商將需要提供包文件的下載。你通??梢酝ㄟ^ web 瀏覽器檢索這些包,或者通過命令行 curl 來檢索這些信息。將包下載到目標(biāo)系統(tǒng)后,我們通??梢酝ㄟ^單個(gè)命令來安裝它。

在 Debian 派生的系統(tǒng)上,dpkg 用來處理單個(gè)的包文件。如果一個(gè)包有未滿足的依賴項(xiàng),那么我們可以使用 gdebi 從官方存儲庫中檢索它們。

在 CentOS 和 Fedora 系統(tǒng)上,yum 和 dnf 用于安裝單個(gè)的文件,并且會處理需要的依賴。

系統(tǒng) 命令 說明
Debian / Ubuntu sudo dpkg -i package.deb  
  sudo apt-get install -y gdebi && sudo gdebi package.deb 安裝 gdebi,然后使用 gdebi 安裝 package.deb 并處理缺失的依賴
CentOS sudo yum install package.rpm  
Fedora sudo dnf install package.rpm  
FreeBSD Packages sudo pkg add package.txz  
  sudo pkg add -f package.txz 即使已經(jīng)安裝的包也會重新安裝

刪除一個(gè)或多個(gè)已安裝的包

由于包管理器知道給定的軟件包提供了哪些文件,因此如果某個(gè)軟件不再需要了,它通??梢愿蓛衾涞貜南到y(tǒng)中清除這些文件。

系統(tǒng) 命令 說明
Debian / Ubuntu sudo apt-get remove package  
  sudo apt remove package  
  sudo apt-get autoremove 刪除不需要的包
CentOS sudo yum remove package  
Fedora sudo dnf erase package  
FreeBSD Packages sudo pkg delete package  
  sudo pkg autoremove 刪除不需要的包
FreeBSD Ports sudo pkg delete package  
  cd /usr/ports/path_to_port && make deinstall 卸載 port

apt 命令

Debian 家族發(fā)行版的管理員通常熟悉 apt-get 和 apt-cache。較少為人所知的是簡化的 apt 接口,它是專為交互式使用而設(shè)計(jì)的。

傳統(tǒng)命令 等價(jià)的 apt 命令
apt-get update apt update
apt-get dist-upgrade apt full-upgrade
apt-cache search string apt search string
apt-get install package apt install package
apt-get remove package apt remove package
apt-get purge package apt purge package

雖然 apt 通常是一個(gè)特定操作的快捷方式,但它并不能完全替代傳統(tǒng)的工具,它的接口可能會隨著版本的不同而發(fā)生變化,以提高可用性。如果你在腳本或 shell 管道中使用包管理命令,那么***還是堅(jiān)持使用 apt-get 和 apt-cache。

獲取幫助

除了基于 web 的文檔,請記住我們可以通過 shell 從 Unix 手冊頁(通常稱為 man 頁面)中獲得大多數(shù)的命令。比如要閱讀某頁,可以使用 man:

  1. man page 

在 man 中,你可以用箭頭鍵導(dǎo)航。按 / 搜索頁面內(nèi)的文本,使用 q 退出。

系統(tǒng) 命令 說明
Debian / Ubuntu man apt-get 更新本地包數(shù)據(jù)庫以及與包一起工作
  man apt-cache 在本地的包數(shù)據(jù)庫中搜索
  man dpkg 和單獨(dú)的包文件一起工作以及能查詢已安裝的包
  man apt 通過更簡潔,用戶友好的接口進(jìn)行最基本的操作
CentOS man yum  
Fedora man dnf  
FreeBSD Packages man pkg 和預(yù)先編譯的二進(jìn)制包一起工作
FreeBSD Ports man ports 和 Ports 集合一起工作

結(jié)論和進(jìn)一步的閱讀

  • 本指南通過對多個(gè)系統(tǒng)間進(jìn)行交叉對比概述了一下包管理系統(tǒng)的基本操作,但只涉及了這個(gè)復(fù)雜主題的表面。對于特定系統(tǒng)更詳細(xì)的信息,可以參考以下資源:
  • 這份指南 詳細(xì)介紹了 Ubuntu 和 Debian 的軟件包管理。
  • 這里有一份 CentOS 官方的指南 使用 yum 管理軟件
  • 這里有一個(gè)有關(guān) Fedora 的 dnf 的 wifi 頁面 以及一份有關(guān) dnf 官方的手冊
  • 這份指南 講述了如何使用 pkg 在 FreeBSD 上進(jìn)行包管理
  • 這本 FreeBSD Handbook 有一節(jié)講述了如何使用 Ports 集合 
責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-07-27 12:58:46

Linux包管理器安命令

2022-08-04 14:54:50

APTDNFYUM

2022-05-04 11:10:58

Linuxdnf 命令

2022-05-07 11:08:50

Linuxapt 命令

2010-06-24 09:45:15

Linux RPMYUM

2013-11-20 15:32:13

紅帽RedHatYUM包

2013-09-29 10:14:24

YUM軟件包管理Linux YUM

2016-12-27 10:34:57

Linux命令軟件包管理

2015-09-14 16:12:23

命令DNFLinux

2010-02-03 16:29:56

2010-01-11 17:49:08

Fedora軟件包

2021-02-05 07:48:06

Linux操作系統(tǒng)軟件

2016-11-15 09:52:37

LinuxDebian管理軟件包

2020-11-11 08:00:00

Linux系統(tǒng)修復(fù)

2021-12-09 09:27:22

MacOSHomebrew包管理器

2010-02-23 17:21:06

Fedora yum

2018-09-28 14:00:54

UbuntuAPTIPv4

2020-06-15 19:20:00

AppImageLinux軟件包管理

2022-06-11 17:55:02

RHEL 9系統(tǒng)運(yùn)維

2010-06-21 14:43:31

Linux apt
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號