五種常見 Linux 系統(tǒng)安裝包管理工具中文使用指南
包管理系統(tǒng)除了安裝軟件外,它還提供了工具來(lái)更新已經(jīng)安裝的包。包存儲(chǔ)庫(kù)有助于確保你的系統(tǒng)中使用的代碼是經(jīng)過(guò)審查的,并且軟件的安裝版本已經(jīng)得到了開發(fā)人員和包維護(hù)人員的認(rèn)可。
1. dpkg
Ubuntu、Debian
??dpkg?
? 命令是 ??Debian Linux?
? 系統(tǒng)用來(lái)安裝、創(chuàng)建和管理軟件包的實(shí)用工具。
- 命令行使用
# dpkg(選項(xiàng))(參數(shù))
$ dpkg --help
Usage: dpkg [<option> ...] <command>
# 選項(xiàng)
-i:安裝軟件包
-r:刪除軟件包
-P:刪除軟件包的同時(shí)刪除其配置文件
-L:顯示于軟件包關(guān)聯(lián)的文件
-l:顯示已安裝軟件包列表
--unpack:解開軟件包
-c:顯示軟件包內(nèi)文件列表
--confiugre:配置軟件包
# 參數(shù)
Deb軟件包:指定要操作的.deb軟件包
- 示例演示說(shuō)明
# 安裝包
$ dpkg -i package.deb
# 刪除包
$ dpkg -r package
# 刪除包(包括配置文件)
$ dpkg -P package
# 列出與該包關(guān)聯(lián)的文件
$ dpkg -L package
# 顯示該包的版本
$ dpkg -l package
# 解開deb包的內(nèi)容
$ dpkg --unpack package.deb
# 搜索所屬的包內(nèi)容
$ dpkg -S keyword
# 列出當(dāng)前已安裝的包
$ dpkg -l
# 列出deb包的內(nèi)容
$ dpkg -c package.deb
# 配置包
$ dpkg --configure package
# 列出已安裝軟件包
$ sudo dpkg-query -l
$ sudo dpkg-query -l | less
$ sudo dpkg-query -l | grep tmux
2. apt
Ubuntu、Debian
??apt-get?
? 命令是 ??Debian Linux?
? 發(fā)行版中的 APT 軟件包管理工具。所有基于 ??Debian?
? 的發(fā)行都使用這個(gè)包管理系統(tǒng)。??deb?
? 包可以把一個(gè)應(yīng)用的文件包在一起,大體就如同 ??Windows?
? 上的安裝文件。
- 命令行使用
# apt-get(選項(xiàng))(參數(shù))
$ apt --help
Usage: apt [options] command
# 選項(xiàng)
-c:指定配置文件
# 參數(shù)
管理指令:對(duì)APT軟件包的管理操作
軟件包:指定要操縱的軟件包
- 示例演示說(shuō)明
# 更新所有已安裝的軟件包
$ apt-get upgrade
# 將系統(tǒng)升級(jí)到新版本
$ apt-get dist-upgrade
# 更新
$ apt-get update
# 安裝一個(gè)新軟件包
$ apt-get install packagename
# 卸載一個(gè)已安裝的軟件包(保留配置文件)
$ apt-get remove packagename
# 卸載一個(gè)已安裝的軟件包(刪除配置文件)
$ apt-get –purge remove packagename
# 來(lái)刪除你已經(jīng)刪掉的軟件
$ apt-get autoclean apt
# 會(huì)把安裝的軟件的備份也刪除
$ apt-get clean
# 列出已安裝軟件包
$ sudo apt list --installed
$ sudo apt list --installed | less
$ sudo apt list --installed | grep tmux
3. rpm
RHEL、CentOS
??rpm?
? 命令是 ??RPM?
? 軟件包的管理工具。??rpm?
? 原本是 ??Red Hat Linux?
? 發(fā)行版專門用來(lái)管理 ??Linux?
? 各項(xiàng)套件的程序,由于它遵循 ??GPL?
? 規(guī)則且功能強(qiáng)大方便,因而廣受歡迎。逐漸受到其他發(fā)行版的采用。??RPM?
? 套件管理方式的出現(xiàn),讓 ??Linux?
? 易于安裝,升級(jí),間接提升了 ??Linux?
? 的適用度。
- 命令行使用
# rpm(選項(xiàng))(參數(shù))
$ rpm --help
Usage: rpm [OPTION...]
# 選項(xiàng)
-a:查詢所有套件
-c:只列出組態(tài)配置文件,本參數(shù)需配合"-l"參數(shù)使用
-d:只列出文本文件,本參數(shù)需配合"-l"參數(shù)使用
-e<套件檔>或--erase<套件檔>:刪除指定的套件
-f<文件>+:查詢擁有指定文件的套件
-h或--hash:套件安裝時(shí)列出標(biāo)記
-i:顯示套件的相關(guān)信息
-i<套件檔>或--install<套件檔>:安裝指定的套件檔
-l:顯示套件的文件列表
-p<套件檔>+:查詢指定的RPM套件檔
-q:使用詢問(wèn)模式,當(dāng)遇到任何問(wèn)題時(shí),rpm指令會(huì)先詢問(wèn)用戶
-R:顯示套件的關(guān)聯(lián)性信息
-s:顯示文件狀態(tài),本參數(shù)需配合"-l"參數(shù)使用
-U<套件檔>或--upgrade<套件檔>:升級(jí)指定的套件檔
-v:顯示指令執(zhí)行過(guò)程
-vv:詳細(xì)顯示指令執(zhí)行過(guò)程,便于排錯(cuò)
# 參數(shù)
軟件包:指定要操縱的rpm軟件包
- 示例演示說(shuō)明
# 安裝
$ rpm -ivh your-package.rpm
# 強(qiáng)制安裝
$ rpm --force -ivh your-package.rpm
# 卸載
$ rpm -e proftpd-1.2.8
# 列出所有安裝過(guò)的包
$ rpm -qa
$ rpm -qa | grep sql
# rpm包中的文件安裝到那里
$ rpm -ql ***.rpm
# 一個(gè)沒(méi)有安裝過(guò)的軟件包
$ rpm -qlp ***.rpm
# 一個(gè)已經(jīng)安裝過(guò)的軟件包
$ rpm -ql ***.rpm
# 某個(gè)程序是哪個(gè)軟件包安裝
$ rpm -qf `which 程序名` # 返回軟件包的全名
$ rpm -qif `which 程序名` # 返回軟件包的有關(guān)信息
$ rpm -qlf `which 程序名` # 返回軟件包的文件列表
4. yum
CentOS6、CentOS7
??yum?
? 命令是在 ??Fedora?
? 和 ??RedHat?
? 以及 ??SUSE?
? 中基于 ??rpm?
? 的軟件包管理器,它可以使系統(tǒng)管理人員交互和自動(dòng)化地更新與管理 ??RPM?
? 軟件包,能夠從指定的服務(wù)器自動(dòng)下載 ??RPM?
? 包并且安裝,可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟體包,無(wú)須繁瑣地一次次下載、安裝。
- 命令行使用
# yum(選項(xiàng))(參數(shù))
$ yum --help
Loaded plugins: fastestmirror, langpacks
Usage: yum [options] COMMAND
# 選項(xiàng)
-h:顯示幫助信息;
-y:對(duì)所有的提問(wèn)都回答“yes”;
-c:指定配置文件;
-q:安靜模式;
-v:詳細(xì)模式;
-d:設(shè)置調(diào)試等級(jí)(0-10);
-e:設(shè)置錯(cuò)誤等級(jí)(0-10);
-R:設(shè)置yum處理一個(gè)命令的最大等待時(shí)間;
-C:完全從緩存中運(yùn)行,而不去下載或者更新任何頭文件。
# 參數(shù)
install:安裝rpm軟件包;
update:更新rpm軟件包;
check-update:檢查是否有可用的更新rpm軟件包;
remove:刪除指定的rpm軟件包;
list:顯示軟件包的信息;
search:檢查軟件包的信息;
info:顯示指定的rpm軟件包的描述信息和概要信息;
clean:清理yum過(guò)期的緩存;
shell:進(jìn)入yum的shell提示符;
resolvedep:顯示rpm軟件包的依賴關(guān)系;
localinstall:安裝本地的rpm軟件包;
localupdate:顯示本地rpm軟件包進(jìn)行更新;
deplist:顯示rpm軟件包的所有依賴關(guān)系。
- 示例演示說(shuō)明
# 安裝
$ yum install # 全部安裝
$ yum install package1 # 安裝指定的安裝包package1
$ yum groupinsall group1 # 安裝程序組group1
# 更新和升級(jí)
$ yum update # 全部更新
$ yum update package1 # 更新指定程序包package1
$ yum check-update # 檢查可更新的程序
$ yum upgrade package1 # 升級(jí)指定程序包package1
$ yum groupupdate group1 # 升級(jí)程序組group1
# 查找顯示
$ yum list installed | grep mysql
$ yum list installed mysql*
$ yum info package1 # 顯示安裝包信息package1
$ yum list # 顯示所有已經(jīng)安裝和可以安裝的程序包
$ yum list package1 # 顯示指定程序包安裝情況package1
$ yum groupinfo group1 # 顯示程序組group1信息
# 刪除程序
$ yum remove/erase package1 # 刪除程序包package1
$ yum groupremove group1 # 刪除程序組group1
$ yum deplist package1 # 查看程序package1依賴情況
# 清除緩存
$ yum clean packages # 清除緩存目錄下的軟件包
$ yum clean headers # 清除緩存目錄下的 headers
$ yum clean oldheaders # 清除緩存目錄下舊的 headers
5. dnf
RHEL8、CentOS8
??DNF?
? 使用 ??libsolv?
? 進(jìn)行依賴解析,由 ??SUSE?
? 開發(fā)和維護(hù),旨在提高性能。??Yum?
? 主要是用 ??Python?
? 編寫的,它有自己的應(yīng)對(duì)依賴解析的方法。它的 ??API?
? 沒(méi)有完整的文檔,它的擴(kuò)展系統(tǒng)只允許 ??Python?
? 插件。??Yum?
? 是 ??RPM?
? 的前端工具,它管理依賴關(guān)系和資源庫(kù),然后使用 ??RPM?
? 來(lái)安裝、下載和刪除包。
由于 ??Yum?
? 中許多長(zhǎng)期存在的問(wèn)題仍未得到解決,因此 ??Yum?
? 包管理器已被 ??DNF?
? 包管理器取代。這些問(wèn)題包括性能差、內(nèi)存占用過(guò)多、依賴解析速度變慢等。兩個(gè)管理包工具的更多區(qū)別可以查看,What is the difference between DNF and YUM? 進(jìn)行閱讀。
- 安裝 DNF 包管理器
# 依賴
$ yum install -y epel-release
# 安裝
$ yum install -y dnf
# 檢查
$ dnf –version
- 常用命令介紹
# 安裝軟件包
$ dnf install nano
# 升級(jí)軟件包
$ dnf update systemd
# 升級(jí)所有系統(tǒng)軟件包
$ dnf update
$ dnf upgrade
# 檢查系統(tǒng)軟件包的更新
$ dnf check-update
# 刪除軟件包
$ dnf remove nano
$ dnf erase nano
# 刪除無(wú)用孤立的軟件包
$ dnf autoremove
# 刪除緩存的無(wú)用軟件包
$ dnf clean all
# 查看系統(tǒng)中可用的DNF軟件庫(kù)
$ dnf repolist
# 查看系統(tǒng)中可用和不可用的所有的DNF軟件庫(kù)
$ dnf repolist all
# 列出所有RPM包
$ dnf list
# 列出所有安裝了的RPM包
$ dnf list installed
# 列出所有可供安裝的RPM包
$ dnf list available
# 搜索軟件庫(kù)中的RPM包
$ dnf search nano
# 查找某一文件的提供者
$ dnf provides /bin/bash
# 查看軟件包詳情
$ dnf info nano
# 查看所有的軟件包組
$ dnf grouplist
# 安裝一個(gè)軟件包組
$ dnf groupinstall 'Educational Software'
# 升級(jí)一個(gè)軟件包組中的軟件包
$ dnf groupupdate 'Educational Software'
# 刪除一個(gè)軟件包組
$ dnf groupremove 'Educational Software'
# 重新安裝特定軟件包
$ dnf reinstall nano
# 回滾某個(gè)特定軟件的版本
$ dnf downgrade acpid
# 查看DNF命令的執(zhí)行歷史
$ dnf history
# 查看所有的DNF命令及其用途
$ dnf help
# 獲取有關(guān)某條命令的使用幫助
$ dnf help clean