您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux軟件安裝和包管理工具有哪些”,在日常操作中,相信很多人在Linux軟件安裝和包管理工具有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux軟件安裝和包管理工具有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
一般來說,在Linux系統中有三種安裝軟件的方式:源碼編譯安裝,可執行文件(軟件包)安裝 以及 前端工具依賴安裝。
絕大多數開源軟件都是直接以源代碼形式發布的,源代碼一般會被打成 .tar.gz 的歸檔壓縮文件。對壓縮文件進行解壓后,獲取到的 源代碼 需要 編譯 成 二進制形式之后才能夠運行使用。源代碼編譯基本流程:
./configure 檢查、構建編譯環境;
make 對源代碼進行編譯,一般是調用 Makefile 文件,從中讀取指令,生成可執行文件;
make test / make check 對上一步的編譯進行檢查,確保無錯誤(有時候沒有這一步);
make install 將生成的可執行文件安裝到本地;
源代碼安裝操作復雜,編譯時間長,極易出現問題,依賴關系復雜且需手動安裝依賴。
由于源代碼安裝的不便利,軟件包平臺會將代碼基于特定平臺系統編譯為可執行文件,并保存依賴關系,來簡化開源軟件的安裝管理。針對不同的系統設定不同的包,例如針對Debian和Ubuntu設計了dpkg軟件包,針對Red Hat和CentOS設計了RPM軟件包等。
軟件包安裝雖然可以直接對軟件包運行命令,但仍然需要下載軟件包到本地,且需要手動處理依賴關系,比較不便。
為了解決軟件包安裝的安裝包和依賴問題,設計了前端工具,例如 yum 是 rpm的前端工具,apt-get 是 dpkg 的前端工具。前端工具引入了倉庫(可以是本地的,也可以是遠程的)概念,對軟件包進行管理,同時在軟件安裝過程中自動解決依賴問題。
軟件包管理系統是在電腦中自動安裝、配制、卸載和升級軟件包的工具組合,在各種系統軟件和應用軟件的安裝管理中均有廣泛應用。
在Linux發行版中,幾乎每一個發行版都有自己的軟件包管理系統。常見的有:
dpkg: 全稱 Debian Package,原先被Debian使用,現在也被Ubuntu使用(注:Ubuntu源于Debian,最早于2004年是作為Debian的一個分支出現)。用來管理 .deb 格式軟件包,是第一個擁有廣泛知曉的依賴解決方案工具APT的軟件包管理工具。aptitude,基于 ncurses 供APT使用的前端,也同樣是一個為Debian類系統的軟件包管理器。
RPM: 全稱 Redhat Package Manager,由Red Hat 創建。RPM 是 Linux標準的基礎打包格式,并且是一系列其他工具的基礎,包括 apt4rpm, 紅帽的 up2date, Mageia的urpmi, openSUSE的 ZYpp(zypper), PLD Linux的 poldek, Fedora的DNF 和 YUM (被 Red Hat 企業版Linux 和 Yellow Dog Linux使用)。也就是說,這些都是它的前端。
其他軟件包管理系統有ArchLinux中使用的Pacman,Gentoo使用的基于源代碼的Portage,FreeBSD下的pkg,Mac系統下的Homebrew等。
使用軟件包管理系統將大大簡化在Linux發行版中安裝軟件的過程。
dpkg本身是一個底層的工具,可以安裝,移動和構建軟件包,但是不像其他的軟件包管理系統,它只能用來安裝本地的.deb文件,不能自動地從遠程包倉庫下載包以及處理包的依賴的關系,且不會關心軟件倉庫內的軟件。以下是使用dpkg來管理本地安裝的軟件包:
列出在系統軟件包數據庫中的所有軟件,包括所有的軟件包,安裝的、未安裝的,也可用 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 軟件包。
注意
很多文件是在軟件包安裝過程中自動產生的,盡管它們存在文件系統中,但
dpkg -S
也可能不知道這些文件屬于哪個軟件包。
安裝本地 .deb
文件示例:
sudo dpkg -i zip_3.0-4_amd64.deb
卸載軟件包示例:
sudo dpkg -r zip
警告:
使用dpkg去卸載軟件包,在大多數情況下,是不推薦使用的。更好的方法,是使用一個軟件包管理器去處理依賴問題,確保系統處在一個持續可用的狀態。例如,使用
dpkg -r zip
將卸載 zip 軟件包,但是其他已安裝的依賴于這個軟件包的軟件就可能用不了了。
使用 man dpkg
命令查看更多。
apt命令是一個強大的命令行工具,執行 安裝新的軟件包,更新已有的軟件包,更新軟件包列表索引 甚至 更新整個Ubuntu系統等操作。apt-get會解決和安裝模塊的依賴問題,并會查詢軟件倉庫,但不會安裝本地的deb文件。apt是建立在dpkg之上的軟件管理工具。以下是一些常用方法
# 更新 sudo apt-get update 更新源 sudo apt-get dist-upgrade 升級系統到相應的發行版(根據 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 安裝相關的編譯環境 # 刪除 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 包,包括已經安裝的軟件包
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 查看該包被哪些包依賴
/var/lib/dpkg/available 軟件包的描述信息, 其中包括當前系統中已安裝的和未安裝的軟件包. /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操作的日志將保存至該文件
執行 apt-get update
程序分析 /etc/apt/sources.list
和 /etc/apt/sources.list.d
自動連網尋找 list 中對應的 Packages/Sources/Release 列表文件,如果有更新則下載之,存入 /var/lib/apt/lists/ 目錄
apt-get install 相應的包 ,下載并安裝。
掃描本地的軟件更新列表,也就是 apt-get update 時保存的 /var/lib/apt/lists 文件
軟件包依賴檢查,找到需要安裝的軟件包所依賴的所有包
從軟件源中的鏡像站中下載 deb 包
解壓軟件包,并自動完成軟件的安裝和配置
備份原先的 source.list 文件,方便回滾
修改 sources.list 文件
sudo apt-get update 更新源
應該先執行 apt-get update 再執行 apt-get upgrade。它們中的任何一個都不會自動地執行另一個。
apt-get update
更新可用的軟件包列表以及版本。但不對軟件包進行安裝或升級。
apt-get upgrade
將實際地安裝你所擁有的軟件包的更新版本。當你更新完軟件清單后,軟件包管理器就知道你已安裝的軟件中哪些有可用的更新,這就是為什么一開始要執行update的原因。
可以聯合執行 apt-get update && apt-get upgrade
不用命令行選項啟動 Aptitude 將會展示一個菜單結構,基于文本的前端 APT系統。很多共同的軟件包管理方法,例如安裝,卸載和升級,都可以以 Aptitude 加一個一般是小寫字母的單詞命令進行執行。
與 apt-get 不同的是,aptitude在處理依賴問題上更佳一些。舉例來說,aptitude在刪除一個包時,會同時刪除本身所依賴的包。這樣,系統中不會殘留無用的包,整個系統更為干凈。
Aptitude 最適合于在非圖像界面終端環境中使用,可在終端中輸入:
sudo aptitude
當 Aptitude 啟動時,你將在屏幕頂部看到一個菜單欄,下面有兩個窗口。上面的窗口包括軟件包目錄,例如 新的軟件包 和 未安裝的軟件包。底下的窗口包含軟件包和軟件包路面的相關信息。
使用 Aptitude用戶界面 來做軟件包管理非常簡單:
安裝軟件: 使用 鍵盤方向鍵 + ENTER 按鍵,在 未安裝軟件包 目錄中定位到你想要安裝的軟件。當軟件包高亮時,按 + 鍵。此時,軟件包將變成 綠色 ,意味著它已被標記成要安裝了。此時按下 g鍵,將展示一段軟件包動作的小結。再按 g鍵,此時將開始軟件包的下載和安裝。當完成后,按 ENTER鍵 返回菜單。
卸載軟件: 使用 鍵盤方向鍵 + ENTER 按鍵,在 已安裝軟件包 目錄中定位到你想要卸載的軟件。當軟件包高亮時,按 - 鍵。此時,軟件包將變成 粉紅色 ,意味著它已被標記成要被卸載了。此時按下 g鍵,將展示一段軟件包動作的小結。再按 g鍵,此時將開始軟件包的卸載。當完成后,按 ENTER鍵 返回菜單。
更新軟件包索引: 按 u鍵 即可。
更新軟件包: 先執行以上更新軟件包索引的操作,再按 U鍵 去標記所有你想更新的軟件包。此時按下 g鍵,將展示一段軟件包動作的小結。再按 g鍵,此時將開始軟件包的下載和安裝。當完成后,按 ENTER鍵 返回菜單。
展示在頂部窗口的軟件包信息的第一列,當在查看當前軟件包狀態時,可使用以下快捷鍵:
i: 已安裝軟件 c: 軟件包未安裝,但包配置文件仍存在系統中 p: 已從系統中清除 v: 虛擬軟件包 B: 已破損軟件包 u: 解壓出來的文件,但安裝包仍未配置 C: 半配置的:配置失敗需要解決 H: 半安裝的:卸載失敗需要解決
為了退出 Aptitude,按 q鍵 并確認即可。按 F10鍵 查看 Aptitude 菜單的詳情。
你也可以 Aptitude 作為命令行工具,和 apt類似。
安裝
sudo aptitude install packageName
卸載
sudo aptitude remove packageName
兩者都是對.deb文件進行安裝、卸載等操作。
dpkg需手動下載.deb文件到本地進行操作,而apt作為前端工具,會直接從遠程倉庫中獲取下載。
dpkg不能處理依賴問題,需要手動一個個安裝好,而apt會自動處理,并一次性安裝好。
Linux發行版經常使用不通的軟件包管理工具,而 基于 Red Hat的發行版使用 RPM
(Red Hat Package Manager) 和YUM/DNF
(Yellow Dog Updater, Modified/Dandified YUM).
RPM
是在 Red Hat企業版Linux基礎的發行版中的一個流行的軟件包管理工具。你可以使用 RPM
安裝、卸載和查詢軟件安裝包。雖然RPM
不能像 YUM
一樣進行軟件包依賴管理,但仍會提示安裝所需要的軟件包清單。 一個 RPM
軟件包由 文件 和 元數據存檔 組成,其中元數據包括幫助腳本,文件屬性 和 軟件包信息。
RPM
維護了一個已安裝軟件包的數據庫,這提供了強大而快速的查詢功能。RPM
數據庫在 /var/lib
目錄里,文件以 __db*
命名。
RPM
有很多基本模式:查詢、驗證、安裝、升級、清除、展示查詢標簽、展示配置等,要執行軟件包管理任務,必須選擇其中之一。每個模式都有自己的一套選項。可通過命令 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
圖一
圖二
圖三
[ 編者注: DNF 或 Dandified YUM 是Red Hat 企業版Linux 8, CentOS 8, Fedora 22(以及它們為基礎的發行版)更新后默認的軟件包管理器。 一般來說,命令選項是一樣的。這里著重介紹YUM ]
YUM
是在Red Hat 企業版Linux中 首要的 軟件包管理工具,用來對軟件包進行安裝、更新、卸載和管理。 YUM
會在安裝、更新、卸載軟件包時處理軟件依賴問題。YUM
可以從系統中 已安裝的倉庫 以及 .rpm
軟件包中安裝。YUM
的主要配置文件在 /etc/yum.conf
文件中,所有的倉庫在 /etc/yum.repos.d
目錄中。
命令格式
yum -選項 命令 yum -option command
以下是常用的命令:
命令 | 功能 |
yum install | 安裝指明的軟件包 |
remove | 移除指明的軟件包 |
search | 用關鍵詞搜索軟件包元數據 |
info | 列舉描述信息 |
update | 更新每個軟件包到最新版本 |
repolist | 列出倉庫列表 |
history | 展示過去的操作,會提供這些操作在哪天執行了哪些命令 |
以下是常用的選項:
選項 | 功能 |
-C | 從系統緩存中運行 |
--security | 包括給安全問題提供了解決方案的軟件包 |
-y | 對所有Yes/No問題回答Yes |
--skip-broken | 跳過軟件包引起的問題 |
-v | 展示冗余信息 |
你可以通過使用 history
命令來取消、回滾某些操作。格式如下:
yum history undo <id>
YUM
提供了很多軟件包管理選項,可以通過man yum
and yum –help
來查看。另外可參考文檔。
RPM 和 YUM 都可以對 .rpm 軟件包進行管理。
RPM需要將 .rpm安裝包 下載到本地之后才可以進行安裝,而YUM只需要指明要安裝的軟件名稱,就會自動地從指定的服務器自動下載并進行安裝。
當遇到依賴問題時,RPM需要自己手動地一個個下載安裝,而YUM會自動處理依賴性關系,并且一次安裝所有依賴的軟體包。
到此,關于“Linux軟件安裝和包管理工具有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。