溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux軟件安裝和包管理工具有哪些

發(fā)布時間:2021-10-19 13:51:50 來源:億速云 閱讀:144 作者:iii 欄目:編程語言

這篇文章主要介紹“Linux軟件安裝和包管理工具有哪些”,在日常操作中,相信很多人在Linux軟件安裝和包管理工具有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux軟件安裝和包管理工具有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

0 前言

一般來說,在Linux系統(tǒng)中有三種安裝軟件的方式:源碼編譯安裝,可執(zhí)行文件(軟件包)安裝 以及 前端工具依賴安裝。

0.1 源碼編譯安裝

絕大多數開源軟件都是直接以源代碼形式發(fā)布的,源代碼一般會被打成 .tar.gz 的歸檔壓縮文件。對壓縮文件進行解壓后,獲取到的 源代碼 需要 編譯 成 二進制形式之后才能夠運行使用。源代碼編譯基本流程:

  • ./configure 檢查、構建編譯環(huán)境;

  • make 對源代碼進行編譯,一般是調用 Makefile 文件,從中讀取指令,生成可執(zhí)行文件;

  • make test / make check 對上一步的編譯進行檢查,確保無錯誤(有時候沒有這一步);

  • make install 將生成的可執(zhí)行文件安裝到本地;

源代碼安裝操作復雜,編譯時間長,極易出現(xiàn)問題,依賴關系復雜且需手動安裝依賴。

0.2 軟件包安裝

由于源代碼安裝的不便利,軟件包平臺會將代碼基于特定平臺系統(tǒng)編譯為可執(zhí)行文件,并保存依賴關系,來簡化開源軟件的安裝管理。針對不同的系統(tǒng)設定不同的包,例如針對Debian和Ubuntu設計了dpkg軟件包,針對Red Hat和CentOS設計了RPM軟件包等。

軟件包安裝雖然可以直接對軟件包運行命令,但仍然需要下載軟件包到本地,且需要手動處理依賴關系,比較不便。

0.3 前端工具安裝

為了解決軟件包安裝的安裝包和依賴問題,設計了前端工具,例如 yum 是 rpm的前端工具,apt-get 是 dpkg 的前端工具。前端工具引入了倉庫(可以是本地的,也可以是遠程的)概念,對軟件包進行管理,同時在軟件安裝過程中自動解決依賴問題。

1 軟件包管理 Package Management

軟件包管理系統(tǒng)是在電腦中自動安裝、配制、卸載和升級軟件包的工具組合,在各種系統(tǒng)軟件和應用軟件的安裝管理中均有廣泛應用。

在Linux發(fā)行版中,幾乎每一個發(fā)行版都有自己的軟件包管理系統(tǒng)。常見的有:

  • dpkg: 全稱 Debian Package,原先被Debian使用,現(xiàn)在也被Ubuntu使用(注:Ubuntu源于Debian,最早于2004年是作為Debian的一個分支出現(xiàn))。用來管理 .deb 格式軟件包,是第一個擁有廣泛知曉的依賴解決方案工具APT的軟件包管理工具。aptitude,基于 ncurses 供APT使用的前端,也同樣是一個為Debian類系統(tǒng)的軟件包管理器。

  • RPM: 全稱 Redhat Package Manager,由Red Hat 創(chuàng)建。RPM 是 Linux標準的基礎打包格式,并且是一系列其他工具的基礎,包括 apt4rpm, 紅帽的 up2date, Mageia的urpmi, openSUSE的 ZYpp(zypper), PLD Linux的 poldek, Fedora的DNF 和 YUM (被 Red Hat 企業(yè)版Linux 和 Yellow Dog Linux使用)。也就是說,這些都是它的前端。

  • 其他軟件包管理系統(tǒng)有ArchLinux中使用的Pacman,Gentoo使用的基于源代碼的Portage,F(xiàn)reeBSD下的pkg,Mac系統(tǒng)下的Homebrew等。

使用軟件包管理系統(tǒng)將大大簡化在Linux發(fā)行版中安裝軟件的過程。

2 dpkg

2.1 dpkg (Debian Package)

dpkg本身是一個底層的工具,可以安裝,移動和構建軟件包,但是不像其他的軟件包管理系統(tǒng),它只能用來安裝本地的.deb文件,不能自動地從遠程包倉庫下載包以及處理包的依賴的關系,且不會關心軟件倉庫內的軟件。以下是使用dpkg來管理本地安裝的軟件包:

  • 列出在系統(tǒng)軟件包數據庫中的所有軟件,包括所有的軟件包,安裝的、未安裝的,也可用 grep 來指定列出某些包:

dpkg -l | grep packageName
  • 列出被軟件安裝的文件

dpkg -L keyword
  • 如果你不確定某個文件是被哪個軟件包所安裝,dpkg -S 會告訴你:

    dpkg -S /etc/host.conf 
    base-files: /etc/host.conf


    上面的例子說明 /etc/host.conf 屬于 base-files 軟件包。

    注意

    很多文件是在軟件包安裝過程中自動產生的,盡管它們存在文件系統(tǒng)中,但 dpkg -S 也可能不知道這些文件屬于哪個軟件包。

  • 安裝本地 .deb 文件示例:

sudo dpkg -i zip_3.0-4_amd64.deb
  • 卸載軟件包示例:

sudo dpkg -r zip

警告:

使用dpkg去卸載軟件包,在大多數情況下,是不推薦使用的。更好的方法,是使用一個軟件包管理器去處理依賴問題,確保系統(tǒng)處在一個持續(xù)可用的狀態(tài)。例如,使用 dpkg -r zip 將卸載 zip 軟件包,但是其他已安裝的依賴于這個軟件包的軟件就可能用不了了。

使用 man dpkg命令查看更多。

2.2 apt (Advanced Packaging Tool)

apt命令是一個強大的命令行工具,執(zhí)行 安裝新的軟件包,更新已有的軟件包,更新軟件包列表索引 甚至 更新整個Ubuntu系統(tǒng)等操作。apt-get會解決和安裝模塊的依賴問題,并會查詢軟件倉庫,但不會安裝本地的deb文件。apt是建立在dpkg之上的軟件管理工具。以下是一些常用方法

2.2.1 apt-get命令
# 更新
sudo apt-get update     更新源
sudo apt-get dist-upgrade  升級系統(tǒng)到相應的發(fā)行版(根據 source.list 的配置)
sudo apt-get upgrade    更新已安裝的包

# 安裝
sudo apt-get install packageName1 [packageName2]   安裝包
sudo apt-get install packageName --reinstall   重新安裝包
sudo apt-get -f install packageName    修復安裝
sudo apt-get build-dep packageName     安裝相關的編譯環(huán)境

# 刪除
sudo apt-get remove packageName   刪除包
sudo apt-get --purge  remove packageName   刪除包,包括配置文件等

# 其他
apt-get check  檢查是否有損壞的依賴
sudo apt-get source packageName  下載該包的源代碼 
apt-get autoclean  刪除你已經刪掉的軟件的 deb 包
apt-get clean  刪除所有的 deb 包,包括已經安裝的軟件包
2.2.2 apt-cache命令
sudo apt-cache search packageName     搜索軟件包
sudo apt-cache show packageName       獲取包的相關信息,如說明、大小、版本等。
sudo apt-cache showpkg packageName    顯示軟件包的大致信息
sudo apt-cache depends packageName    了解該包依賴哪些包
sudo apt-cache rdepends packageName   查看該包被哪些包依賴
2.2.3 apt文件
/var/lib/dpkg/available  軟件包的描述信息, 其中包括當前系統(tǒng)中已安裝的和未安裝的軟件包.
/etc/apt/sources.list    記錄軟件源的地址,修改此文件可配置軟件源
/var/cache/apt/archives  已經下載到的軟件包都放在這里( apt-get install 安裝軟件時,軟件包臨時存放路徑)
/var/lib/apt/lists       使用 apt-get update 命令會從/etc/apt/sources.list中下載軟件列表,并保存到該目錄
/var/log/dpkg.log        所有apt操作的日志將保存至該文件
2.2.4 apt-get update 執(zhí)行過程
  • 執(zhí)行 apt-get update

  • 程序分析 /etc/apt/sources.list 和 /etc/apt/sources.list.d

  • 自動連網尋找 list 中對應的 Packages/Sources/Release 列表文件,如果有更新則下載之,存入 /var/lib/apt/lists/ 目錄

  • apt-get install 相應的包 ,下載并安裝。

2.2.5 apt-get intsall 執(zhí)行過程
  • 掃描本地的軟件更新列表,也就是 apt-get update 時保存的 /var/lib/apt/lists 文件

  • 軟件包依賴檢查,找到需要安裝的軟件包所依賴的所有包

  • 從軟件源中的鏡像站中下載 deb 包

  • 解壓軟件包,并自動完成軟件的安裝和配置

2.2.6 修改軟件源 /etc/apt/sources.list
  • 備份原先的 source.list 文件,方便回滾

  • 修改 sources.list 文件

  • sudo apt-get update 更新源

2.2.7 apt-get update 和 apt-get upgrade 的區(qū)別

應該先執(zhí)行 apt-get update 再執(zhí)行 apt-get upgrade。它們中的任何一個都不會自動地執(zhí)行另一個。

  • apt-get update 更新可用的軟件包列表以及版本。但不對軟件包進行安裝或升級。

  • apt-get upgrade 將實際地安裝你所擁有的軟件包的更新版本。當你更新完軟件清單后,軟件包管理器就知道你已安裝的軟件中哪些有可用的更新,這就是為什么一開始要執(zhí)行update的原因。

  • 可以聯(lián)合執(zhí)行 apt-get update && apt-get upgrade 

2.3 aptitude

2.3.1 菜單結構

不用命令行選項啟動 Aptitude 將會展示一個菜單結構,基于文本的前端 APT系統(tǒng)。很多共同的軟件包管理方法,例如安裝,卸載和升級,都可以以 Aptitude 加一個一般是小寫字母的單詞命令進行執(zhí)行。

與 apt-get 不同的是,aptitude在處理依賴問題上更佳一些。舉例來說,aptitude在刪除一個包時,會同時刪除本身所依賴的包。這樣,系統(tǒng)中不會殘留無用的包,整個系統(tǒng)更為干凈。

Aptitude 最適合于在非圖像界面終端環(huán)境中使用,可在終端中輸入:

sudo aptitude

當 Aptitude 啟動時,你將在屏幕頂部看到一個菜單欄,下面有兩個窗口。上面的窗口包括軟件包目錄,例如 新的軟件包 和 未安裝的軟件包。底下的窗口包含軟件包和軟件包路面的相關信息。

使用 Aptitude用戶界面 來做軟件包管理非常簡單:

  • 安裝軟件: 使用 鍵盤方向鍵 + ENTER 按鍵,在 未安裝軟件包 目錄中定位到你想要安裝的軟件。當軟件包高亮時,按 + 鍵。此時,軟件包將變成 綠色 ,意味著它已被標記成要安裝了。此時按下 g鍵,將展示一段軟件包動作的小結。再按 g鍵,此時將開始軟件包的下載和安裝。當完成后,按 ENTER鍵 返回菜單。

  • 卸載軟件: 使用 鍵盤方向鍵 + ENTER 按鍵,在 已安裝軟件包 目錄中定位到你想要卸載的軟件。當軟件包高亮時,按 - 鍵。此時,軟件包將變成 粉紅色 ,意味著它已被標記成要被卸載了。此時按下 g鍵,將展示一段軟件包動作的小結。再按 g鍵,此時將開始軟件包的卸載。當完成后,按 ENTER鍵 返回菜單。

  • 更新軟件包索引: 按 u鍵 即可。

  • 更新軟件包: 先執(zhí)行以上更新軟件包索引的操作,再按 U鍵 去標記所有你想更新的軟件包。此時按下 g鍵,將展示一段軟件包動作的小結。再按 g鍵,此時將開始軟件包的下載和安裝。當完成后,按 ENTER鍵 返回菜單。

展示在頂部窗口的軟件包信息的第一列,當在查看當前軟件包狀態(tài)時,可使用以下快捷鍵:

i: 已安裝軟件
c: 軟件包未安裝,但包配置文件仍存在系統(tǒng)中
p: 已從系統(tǒng)中清除
v: 虛擬軟件包
B: 已破損軟件包
u: 解壓出來的文件,但安裝包仍未配置
C: 半配置的:配置失敗需要解決
H: 半安裝的:卸載失敗需要解決

為了退出 Aptitude,按 q鍵 并確認即可。按 F10鍵 查看 Aptitude 菜單的詳情。

2.3.2 命令行

你也可以 Aptitude 作為命令行工具,和 apt類似。

安裝

sudo aptitude install packageName

卸載

sudo aptitude remove packageName

2.4 dpkg 和 apt 的關系

  • 兩者都是對.deb文件進行安裝、卸載等操作。

  • dpkg需手動下載.deb文件到本地進行操作,而apt作為前端工具,會直接從遠程倉庫中獲取下載。

  • dpkg不能處理依賴問題,需要手動一個個安裝好,而apt會自動處理,并一次性安裝好。

3 RPM (Red Hat Package Manager)

Linux發(fā)行版經常使用不通的軟件包管理工具,而 基于 Red Hat的發(fā)行版使用  RPM (Red Hat Package Manager) 和YUM/DNF (Yellow Dog Updater, Modified/Dandified YUM).

3.1 RMP (Red Hat Package Manager)

RPM 是在 Red Hat企業(yè)版Linux基礎的發(fā)行版中的一個流行的軟件包管理工具。你可以使用 RPM安裝、卸載和查詢軟件安裝包。雖然RPM 不能像 YUM一樣進行軟件包依賴管理,但仍會提示安裝所需要的軟件包清單。 一個 RPM 軟件包由 文件 和 元數據存檔 組成,其中元數據包括幫助腳本,文件屬性 和 軟件包信息。

RPM 維護了一個已安裝軟件包的數據庫,這提供了強大而快速的查詢功能。RPM 數據庫在 /var/lib目錄里,文件以 __db*命名。

RPM 有很多基本模式:查詢、驗證、安裝、升級、清除、展示查詢標簽、展示配置等,要執(zhí)行軟件包管理任務,必須選擇其中之一。每個模式都有自己的一套選項??赏ㄟ^命令 man rpm進行查看。以下是一些常用的模式

模式描述
-i安裝軟件包
-U升級軟件包
-e清除軟件包
-V驗證軟件包
-q查詢軟件包

這是一些常用選項:

選項目的
-? | --help輸出幫助信息
--version輸出版本信息
-v輸出冗余信息

命令示例

# 安裝
rpm -i package-file
# 升級
rpm -U package-file
# 安裝,輸出冗余信息,并用#符號(hash)展示進度,見圖一
rpm -ivh package-file
# 查詢,選項a表示查詢所有的(all)已安裝軟件包,見圖二
rpm -qa vim-enhanced
# 移除,見圖三
rpm -evh vim-enhanced

Linux軟件安裝和包管理工具有哪些

圖一

Linux軟件安裝和包管理工具有哪些

圖二

Linux軟件安裝和包管理工具有哪些

圖三

3.2 Yellow Dog Updater, Modified (YUM) / Dandified yum (DNF)

[ 編者注: DNF 或 Dandified YUM 是Red Hat 企業(yè)版Linux 8, CentOS 8, Fedora 22(以及它們?yōu)榛A的發(fā)行版)更新后默認的軟件包管理器。 一般來說,命令選項是一樣的。這里著重介紹YUM ]

YUM 是在Red Hat 企業(yè)版Linux中 首要的 軟件包管理工具,用來對軟件包進行安裝、更新、卸載和管理。 YUM 會在安裝、更新、卸載軟件包時處理軟件依賴問題。YUM 可以從系統(tǒng)中 已安裝的倉庫 以及 .rpm 軟件包中安裝。YUM 的主要配置文件在 /etc/yum.conf文件中,所有的倉庫在 /etc/yum.repos.d目錄中。

命令格式

yum -選項     命令
yum -option command

以下是常用的命令:

命令功能
yum install安裝指明的軟件包
remove移除指明的軟件包
search用關鍵詞搜索軟件包元數據
info列舉描述信息
update更新每個軟件包到最新版本
repolist列出倉庫列表
history展示過去的操作,會提供這些操作在哪天執(zhí)行了哪些命令

以下是常用的選項:

選項功能
-C從系統(tǒng)緩存中運行
--security包括給安全問題提供了解決方案的軟件包
-y對所有Yes/No問題回答Yes
--skip-broken跳過軟件包引起的問題
-v展示冗余信息

Linux軟件安裝和包管理工具有哪些

你可以通過使用 history 命令來取消、回滾某些操作。格式如下:

yum history undo <id>

YUM 提供了很多軟件包管理選項,可以通過man yum and yum –help來查看。另外可參考文檔。

3.3 RPM 和 YUM的關系

  • RPM 和 YUM 都可以對 .rpm 軟件包進行管理。

  • RPM需要將 .rpm安裝包 下載到本地之后才可以進行安裝,而YUM只需要指明要安裝的軟件名稱,就會自動地從指定的服務器自動下載并進行安裝。

  • 當遇到依賴問題時,RPM需要自己手動地一個個下載安裝,而YUM會自動處理依賴性關系,并且一次安裝所有依賴的軟體包。

到此,關于“Linux軟件安裝和包管理工具有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI