介紹 Linux 中能見到的各種包管理系統(tǒng)墨吓,以及可以用于安裝球匕、管理、刪除軟件的命令行工具
更多精彩
- 更多技術(shù)博客帖烘,請移步 IT人才終生實(shí)訓(xùn)與職業(yè)進(jìn)階平臺(tái) - 實(shí)訓(xùn)在線
導(dǎo)覽
- 基于 Debian 的 Linux 使用 dpkg 作為 PMS 的核心工具
- 基于 Red Hat 的 Linux 使用 rpm 作為 PMS 的核心工具
-
dpkg 的用戶交互命令是
aptitude
命令 -
rpm 的用戶交互命令是
yum
命令亮曹,但還有urpm
和zypper
- 使用
yum list installed
命令可以查看當(dāng)前系統(tǒng)已安裝的軟件包 - 使用
yum list packageName
命令可以查看當(dāng)前系統(tǒng)已安裝和可以安裝的指定軟件包 - 使用
yum list installed packageName
命令可以查看當(dāng)前系統(tǒng)已安裝的指定軟件包 - 使用
yum info packageName
命令可以查看指定軟件包的詳細(xì)信息 - 使用
yum install packageName
命令可以安裝指定軟件包 - 使用
yum list updates
命令可以查看當(dāng)前系統(tǒng)已安裝的并且可以更新的軟件包 - 使用
yum update
命令可以更新當(dāng)前系統(tǒng)需要更新的所有軟件包 - 使用
yum update packageName
命令可以更新指定軟件包 - 使用
yum remove packageName
命令可以卸載指定軟件包,但保留配置文件和數(shù)據(jù) - 使用
yum erase packageName
命令可以卸載指定軟件包秘症,并且刪除配置文件和數(shù)據(jù) - 使用
yum clean all
命令可以清理軟件包依賴關(guān)系 - 使用
yum deplist packageName
命令可以查看指定軟件包的依賴關(guān)系 - 使用
yum repolist
命令可以查看當(dāng)前系統(tǒng)已配置的軟件倉庫
9.1 包管理基礎(chǔ)
- 各種版本的 Linux 都采用了 包管理系統(tǒng)( Package Management System 照卦,PMS ) 來控制系統(tǒng)中軟件和庫的安裝
- PMS 使用專有的數(shù)據(jù)庫來記錄系統(tǒng)上安裝的軟件乡摹、軟件中的文件瞬痘、軟件的版本
- PMS 會(huì)連接到系統(tǒng)預(yù)配置好的軟件倉庫津辩,可以從這些在線倉庫中搜索、安裝、更新軟件
- PMS 在安裝軟件時(shí)睁宰,可以很好的處理軟件的依賴關(guān)系较木, 確保軟件及其依賴的額外包都能正確的安裝到系統(tǒng)中
- dpkg 和 rpm 是 Linux 中主要的 PMS 底層工具
- 基于 Debian 的 Linux 使用 dpkg
- 基于 Red Hat 的 Linux 使用 rpm
9.2 基于 Debian 的系統(tǒng)
- 基于 Debian 的 Linux 中的 PMS 各種工具的關(guān)系如下圖
- dpkg 做為 PMS 的核心峰锁,直接與 PMS 進(jìn)行交互
- aptitude 則是將整個(gè) PMS 中的功能包裝整合后提供一個(gè)統(tǒng)一的命令接口供用戶使用
- 直接使用
aptitude
命令可以有效防止注入 軟件依賴關(guān)系缺失 魄衅、系統(tǒng)環(huán)境變量不穩(wěn)定 等各種軟件安裝問題
- 手上沒有基于 Debian 的環(huán)境傲茄,所以如何使用 aptitude 命令的筆記就只是單純的記錄,不提供演示效果
9.2.1 使用 aptitude 命令管理軟件包
- 直接輸入
aptitude
命令可以進(jìn)入管理軟件包的交互式界面 - 使用
aptitude show packageName
命令查看指定軟件包的詳細(xì)信息 - 使用
dpkg -L packageName
命令可以查看指定軟件包的相關(guān)文件列表- 該效果無法直接使用
aptitude
命令實(shí)現(xiàn)
- 該效果無法直接使用
- 使用
dpkg --search fileName
命令可以查看指定文件屬于哪個(gè)軟件包- 文件名稱必須攜帶完整路徑
- 該效果無法直接使用
aptitude
命令實(shí)現(xiàn)
9.2.2 使用 aptitude 命令安裝軟件包
- 使用
aptitude search packageName
命令可以從在線的軟件倉庫中查找指定軟件包- packageName 默認(rèn)支持模糊匹配
- 在搜索結(jié)果中每行數(shù)據(jù)的最前端會(huì)顯示一個(gè)字符:p 山憨、v 、i 或者 c
- p 和 v 表示該軟件包可以使用虏杰,但當(dāng)前系統(tǒng)還沒有安裝
- i 表示該軟件包已經(jīng)安裝到當(dāng)前系統(tǒng)
- c 表示該軟件包被從當(dāng)前系統(tǒng)卸載修然,但當(dāng)前系統(tǒng)中仍然保留著該軟件包的配置文件和數(shù)據(jù)
- 使用
aptitude install packageName
命令可以安裝指定軟件包
9.2.3 使用 aptitude 命令更新軟件包
- 使用
aptitude safe-upgrade
命令可以從在線的軟件倉庫中獲取當(dāng)前系統(tǒng)已安裝的所有軟件包的最新版本啃奴,并進(jìn)行安全更新 -
aptitude
命令的更新操作不需要指定軟件包名她肯,因?yàn)閷τ谙到y(tǒng)來說玷室,整體更新比局部更新更安全 -
aptitude
命令的更新操作除了safe-upgrade
之外還有full-upgrade
和dist-upgrade
嗽交,但并不推薦使用后面兩者-
safe-upgrade
的好處在于,在執(zhí)行完整更新時(shí)慷嗜,會(huì)自動(dòng)檢測各個(gè)軟件包之間的依賴關(guān)系淀弹,確保更新后的軟件包之間的依賴關(guān)系依舊完整
-
9.2.4 使用 aptitude 命令卸載軟件包
- 使用
aptitude remove packageName
命令可以刪除軟件包,但保留該軟件包的數(shù)據(jù)和配置文件 - 使用
aptitude purge packageName
命令可以完整刪除軟件包庆械,不保留該軟件包的任何信息
9.2.5 aptitude 倉庫
- 在基于 Debian 的 Linux 系統(tǒng)中薇溃,使用
aptitude
命令時(shí)連接的在線倉庫被配置在/etc/apt/source.list
文件中 - 通常情況下不需要修改該文件,因?yàn)橄到y(tǒng)的開發(fā)人員為了保證系統(tǒng)軟件包的安全以及完整性缭乘,已經(jīng)對在線倉庫進(jìn)行了嚴(yán)格的篩選
- 如果說你想使用的某個(gè)軟件還沒有出現(xiàn)在這些官方支持的倉庫中沐序,只能說明該軟件可能還不夠安全,最好是等官方倉庫支持后再從官方倉庫進(jìn)行安裝
9.3 基于 Red Hat 的系統(tǒng)
- 基于 Red Hat 的 Linux 中 PMS 只有一個(gè)底層工具堕绩,如下圖
- 從 rpm 中分別衍生出了以下三種用戶交互命令
- 本章只介紹最常用的 yum
9.3.1 使用 yum 命令列出已安裝軟件包
- 使用
yum list installed
命令可以顯示當(dāng)前系統(tǒng)已安裝的所有軟件包策幼,如下圖
- 使用
yum list packageName
命令可以查看指定軟件包的信息,如下圖-
可以看到默認(rèn)不支持軟件包名的模糊匹配奴紧,需要顯式的進(jìn)行模糊匹配才能搜索到對應(yīng)軟件包的信息
-
- 使用
yum list installed packageName
命令可以查看指定已安裝軟件包的信息特姐,如下圖- 從上圖中可以看到,直接使用
yum list packageName
命令黍氮,不僅會(huì)列出當(dāng)前系統(tǒng)已安裝的軟件包信息到逊,還會(huì)列舉沒有安裝但可以安裝的軟件包信息 - 而使用
yum list installed packageName
命令則只會(huì)顯示當(dāng)前系統(tǒng)已安裝的軟件包信息
- 從上圖中可以看到,直接使用
- 使用
yum provides fileName
命令可以查看指定文件屬于哪個(gè)軟件包铣口,如下圖-
可以看到,文件名必須使用絕對路徑
-
9.3.2 使用 yum 命令安裝軟件包
- 在安裝軟件之前觉壶,需要先知道軟件的完整名稱脑题,使用
yum list packageName
命令可以列出當(dāng)前系統(tǒng)支持安裝的軟件包列表,再使用yum info packageName
命令可以查看該軟件包的詳細(xì)信息铜靶,如下圖
- 確定軟件完整名稱后叔遂,使用
yum install packageName
命令就可以安裝該軟件包,如下圖
-
通常情況會(huì)先檢查該軟件包的依賴關(guān)系争剿,確認(rèn)之后會(huì)彈出命令確認(rèn)操作已艰,需要輸入 y 并回車已確認(rèn)安裝,如下圖
-
如果安裝成功會(huì)顯示下圖蚕苇,如果沒有成功在最后會(huì)輸出一段錯(cuò)誤信息
- 想要確認(rèn)安裝是否成功哩掺,可以使用
yum list installed tomcat
命令,如下圖-
在已安裝軟件包列表中顯示了 tomcat 涩笤,說明安裝成功
-
9.3.2.1 使用 yum 命令安裝本地軟件包
- 通常情況下嚼吞,安裝在線軟件包即可滿足需求,而且在線安裝是一種更安全蹬碧、更能確保系統(tǒng)中各種軟件依賴關(guān)系完整的做法
- 但如果當(dāng)前系統(tǒng)網(wǎng)絡(luò)不通舱禽,則還是可以使用
yum localinstall packageName.rpm
命令來進(jìn)行軟件包的本地安裝 - 前提當(dāng)然是把需要安裝的軟件包的 rpm 文件放置到當(dāng)前系統(tǒng)中,然后再執(zhí)行本地安裝命令
9.3.3 使用 yum 命令更新軟件
- 使用
yum list updates
命令可以查看當(dāng)前系統(tǒng)中需要更新的軟件包恩沽,如下圖
- 使用
yum update
命令可以更新當(dāng)前系統(tǒng)所有需要更新的軟件包 - 使用
yum update packageName
命令可以更新指定的軟件包誊稚,如下圖- 升級過程和安裝過程其實(shí)差不多,都會(huì)先檢查依賴關(guān)系罗心,然后彈出確認(rèn)操作里伯,最后告知結(jié)果
-
如果更新的軟件包的依賴關(guān)系也需要更新,則會(huì)被一并更新
-
整個(gè)更新過程非常的完整和安全渤闷,最后也會(huì)將更新所做的操作完整的告知疾瓮,如下圖
9.3.4 使用 yum 命令卸載軟件
- 如果想要卸載已安裝的軟件,可以使用
yum remove packageName
命令肤晓,或者yum erase packageName
命令 -
yum remove packageName
命令只會(huì)刪除軟件爷贫,但保留配置文件和數(shù)據(jù) -
yum erase packageName
命令則會(huì)在刪除軟件的同時(shí),將與軟件相關(guān)的配置文件和數(shù)據(jù)一并刪除 - 前文中我們使用
yum install tomcat
安裝的 Tomcat 軟件就需要被刪除补憾,實(shí)測發(fā)現(xiàn)并不建議使用這種方式來安裝 Tomcat 漫萄,因?yàn)榘惭b版的 Tomcat ,其目錄是分散在各處的盈匾,如下圖- 首先使用
whereis tomcat
命令查看哪些目錄下存在 tomcat 的映射 - 然后在
/usr/share/tomcat
目錄可以看到整個(gè) Tomcat 的各種目錄其實(shí)被分散在各個(gè)目錄下 -
所以 Tomcat 建議使用官網(wǎng)下載的解壓版腾务,而不是安裝版
- 首先使用
- 使用
yum erase tomcat
命令可以完整刪除 Tomcat ,如下圖-
刪除時(shí)也會(huì)執(zhí)行一系列檢測削饵,之后彈出確認(rèn)操作岩瘦,確認(rèn)后才會(huì)執(zhí)行刪除
-
- 刪除之后再查看 Tomcat 的目錄映射未巫,如下圖
-
可以看到,基本都被刪了启昧,但還是有一些殘留叙凡,目前我也不知道為啥,沒有深入研究
-
9.3.5 使用 yum 命令處理損壞的包依賴關(guān)系
- 損壞的包依賴關(guān)系( Broken Dependency ) 是指在安裝多個(gè)軟件包時(shí)密末,某個(gè)軟件包的依賴關(guān)系被另一個(gè)軟件包覆蓋掉握爷,導(dǎo)致前者的依賴關(guān)系丟失
- 使用
yum clean all
命令可以清理依賴關(guān)系 - 使用
yum deplist packageName
命令可以查看指定軟件包的依賴關(guān)系 - 使用
yum update --skip-broken
命令可以跳過損壞的包,對那些沒有損壞的包進(jìn)行更新操作
9.3.6 yum 軟件倉庫
- 使用
yum repolist
命令可以查看當(dāng)前系統(tǒng)已配置的軟件倉庫列表严里,如下圖- 這些倉庫具體的配置位于
/etc/yum.repos.d/
目錄中
- 這些倉庫具體的配置位于
9.4 從源碼安裝
- 如果在線安裝新啼、本地安裝都不好使,還可以選擇 源碼安裝
- 也就是直接將源碼編譯后進(jìn)行安裝刹碾,通常需要進(jìn)行以下幾個(gè)步驟
- 先下載對應(yīng)軟件的源碼包燥撞,使用
tar -zxvf packageSourceName.tar.gz
命令進(jìn)行解壓 - 之后前往解壓目錄,使用
./configure
命令進(jìn)行配置 - 再執(zhí)行
make
命令來構(gòu)建各種二進(jìn)制文件 - 最后使用
make install
命令來安裝軟件包
- 先下載對應(yīng)軟件的源碼包燥撞,使用