Linux 命令行與 shell 腳本編程大全 9 安裝軟件程序

介紹 Linux 中能見到的各種包管理系統(tǒng)墨吓,以及可以用于安裝球匕、管理、刪除軟件的命令行工具

更多精彩

導(dǎo)覽

  1. 基于 Debian 的 Linux 使用 dpkg 作為 PMS 的核心工具
  2. 基于 Red Hat 的 Linux 使用 rpm 作為 PMS 的核心工具
  3. dpkg 的用戶交互命令是 aptitude 命令
  4. rpm 的用戶交互命令是 yum 命令亮曹,但還有 urpmzypper
  5. 使用 yum list installed 命令可以查看當(dāng)前系統(tǒng)已安裝的軟件包
  6. 使用 yum list packageName 命令可以查看當(dāng)前系統(tǒng)已安裝和可以安裝的指定軟件包
  7. 使用 yum list installed packageName 命令可以查看當(dāng)前系統(tǒng)已安裝的指定軟件包
  8. 使用 yum info packageName 命令可以查看指定軟件包的詳細(xì)信息
  9. 使用 yum install packageName 命令可以安裝指定軟件包
  10. 使用 yum list updates 命令可以查看當(dāng)前系統(tǒng)已安裝的并且可以更新的軟件包
  11. 使用 yum update 命令可以更新當(dāng)前系統(tǒng)需要更新的所有軟件包
  12. 使用 yum update packageName 命令可以更新指定軟件包
  13. 使用 yum remove packageName 命令可以卸載指定軟件包,但保留配置文件和數(shù)據(jù)
  14. 使用 yum erase packageName 命令可以卸載指定軟件包秘症,并且刪除配置文件和數(shù)據(jù)
  15. 使用 yum clean all 命令可以清理軟件包依賴關(guān)系
  16. 使用 yum deplist packageName 命令可以查看指定軟件包的依賴關(guān)系
  17. 使用 yum repolist 命令可以查看當(dāng)前系統(tǒng)已配置的軟件倉庫

9.1 包管理基礎(chǔ)

  1. 各種版本的 Linux 都采用了 包管理系統(tǒng)( Package Management System 照卦,PMS ) 來控制系統(tǒng)中軟件和庫的安裝
  2. PMS 使用專有的數(shù)據(jù)庫來記錄系統(tǒng)上安裝的軟件乡摹、軟件中的文件瞬痘、軟件的版本
  3. PMS 會(huì)連接到系統(tǒng)預(yù)配置好的軟件倉庫津辩,可以從這些在線倉庫中搜索、安裝、更新軟件
  4. PMS 在安裝軟件時(shí)睁宰,可以很好的處理軟件的依賴關(guān)系较木, 確保軟件及其依賴的額外包都能正確的安裝到系統(tǒng)中
  5. dpkgrpm 是 Linux 中主要的 PMS 底層工具
  6. 基于 Debian 的 Linux 使用 dpkg
  7. 基于 Red Hat 的 Linux 使用 rpm

9.2 基于 Debian 的系統(tǒng)

  1. 基于 Debian 的 Linux 中的 PMS 各種工具的關(guān)系如下圖
    • dpkg 做為 PMS 的核心峰锁,直接與 PMS 進(jìn)行交互
    • aptitude 則是將整個(gè) PMS 中的功能包裝整合后提供一個(gè)統(tǒng)一的命令接口供用戶使用
  2. 直接使用 aptitude 命令可以有效防止注入 軟件依賴關(guān)系缺失 魄衅、系統(tǒng)環(huán)境變量不穩(wěn)定 等各種軟件安裝問題
  3. 手上沒有基于 Debian 的環(huán)境傲茄,所以如何使用 aptitude 命令的筆記就只是單純的記錄,不提供演示效果

9.2.1 使用 aptitude 命令管理軟件包

  1. 直接輸入 aptitude 命令可以進(jìn)入管理軟件包的交互式界面
  2. 使用 aptitude show packageName 命令查看指定軟件包的詳細(xì)信息
  3. 使用 dpkg -L packageName 命令可以查看指定軟件包的相關(guān)文件列表
    • 該效果無法直接使用 aptitude 命令實(shí)現(xiàn)
  4. 使用 dpkg --search fileName 命令可以查看指定文件屬于哪個(gè)軟件包
    • 文件名稱必須攜帶完整路徑
    • 該效果無法直接使用 aptitude 命令實(shí)現(xiàn)

9.2.2 使用 aptitude 命令安裝軟件包

  1. 使用 aptitude search packageName 命令可以從在線的軟件倉庫中查找指定軟件包
    • packageName 默認(rèn)支持模糊匹配
  2. 在搜索結(jié)果中每行數(shù)據(jù)的最前端會(huì)顯示一個(gè)字符:p 山憨、vi 或者 c
    • pv 表示該軟件包可以使用虏杰,但當(dāng)前系統(tǒng)還沒有安裝
    • i 表示該軟件包已經(jīng)安裝到當(dāng)前系統(tǒng)
    • c 表示該軟件包被從當(dāng)前系統(tǒng)卸載修然,但當(dāng)前系統(tǒng)中仍然保留著該軟件包的配置文件和數(shù)據(jù)
  3. 使用 aptitude install packageName 命令可以安裝指定軟件包

9.2.3 使用 aptitude 命令更新軟件包

  1. 使用 aptitude safe-upgrade 命令可以從在線的軟件倉庫中獲取當(dāng)前系統(tǒng)已安裝的所有軟件包的最新版本啃奴,并進(jìn)行安全更新
  2. aptitude 命令的更新操作不需要指定軟件包名她肯,因?yàn)閷τ谙到y(tǒng)來說玷室,整體更新比局部更新更安全
  3. aptitude 命令的更新操作除了 safe-upgrade 之外還有 full-upgradedist-upgrade 嗽交,但并不推薦使用后面兩者
    • safe-upgrade 的好處在于,在執(zhí)行完整更新時(shí)慷嗜,會(huì)自動(dòng)檢測各個(gè)軟件包之間的依賴關(guān)系淀弹,確保更新后的軟件包之間的依賴關(guān)系依舊完整

9.2.4 使用 aptitude 命令卸載軟件包

  1. 使用 aptitude remove packageName 命令可以刪除軟件包,但保留該軟件包的數(shù)據(jù)和配置文件
  2. 使用 aptitude purge packageName 命令可以完整刪除軟件包庆械,不保留該軟件包的任何信息

9.2.5 aptitude 倉庫

  1. 在基于 Debian 的 Linux 系統(tǒng)中薇溃,使用 aptitude 命令時(shí)連接的在線倉庫被配置在 /etc/apt/source.list 文件中
  2. 通常情況下不需要修改該文件,因?yàn)橄到y(tǒng)的開發(fā)人員為了保證系統(tǒng)軟件包的安全以及完整性缭乘,已經(jīng)對在線倉庫進(jìn)行了嚴(yán)格的篩選
  3. 如果說你想使用的某個(gè)軟件還沒有出現(xiàn)在這些官方支持的倉庫中沐序,只能說明該軟件可能還不夠安全,最好是等官方倉庫支持后再從官方倉庫進(jìn)行安裝

9.3 基于 Red Hat 的系統(tǒng)

  1. 基于 Red Hat 的 Linux 中 PMS 只有一個(gè)底層工具堕绩,如下圖
    • rpm 中分別衍生出了以下三種用戶交互命令
    • 本章只介紹最常用的 yum

9.3.1 使用 yum 命令列出已安裝軟件包

  1. 使用 yum list installed 命令可以顯示當(dāng)前系統(tǒng)已安裝的所有軟件包策幼,如下圖
  2. 使用 yum list packageName 命令可以查看指定軟件包的信息,如下圖
    • 可以看到默認(rèn)不支持軟件包名的模糊匹配奴紧,需要顯式的進(jìn)行模糊匹配才能搜索到對應(yīng)軟件包的信息


  3. 使用 yum list installed packageName 命令可以查看指定已安裝軟件包的信息特姐,如下圖
    • 從上圖中可以看到,直接使用 yum list packageName 命令黍氮,不僅會(huì)列出當(dāng)前系統(tǒng)已安裝的軟件包信息到逊,還會(huì)列舉沒有安裝但可以安裝的軟件包信息
    • 而使用 yum list installed packageName 命令則只會(huì)顯示當(dāng)前系統(tǒng)已安裝的軟件包信息
  4. 使用 yum provides fileName 命令可以查看指定文件屬于哪個(gè)軟件包铣口,如下圖
    • 可以看到,文件名必須使用絕對路徑


9.3.2 使用 yum 命令安裝軟件包

  1. 在安裝軟件之前觉壶,需要先知道軟件的完整名稱脑题,使用 yum list packageName 命令可以列出當(dāng)前系統(tǒng)支持安裝的軟件包列表,再使用 yum info packageName 命令可以查看該軟件包的詳細(xì)信息铜靶,如下圖
  2. 確定軟件完整名稱后叔遂,使用 yum install packageName 命令就可以安裝該軟件包,如下圖
  3. 通常情況會(huì)先檢查該軟件包的依賴關(guān)系争剿,確認(rèn)之后會(huì)彈出命令確認(rèn)操作已艰,需要輸入 y 并回車已確認(rèn)安裝,如下圖


  4. 如果安裝成功會(huì)顯示下圖蚕苇,如果沒有成功在最后會(huì)輸出一段錯(cuò)誤信息


  5. 想要確認(rèn)安裝是否成功哩掺,可以使用 yum list installed tomcat 命令,如下圖
    • 在已安裝軟件包列表中顯示了 tomcat 涩笤,說明安裝成功


9.3.2.1 使用 yum 命令安裝本地軟件包

  1. 通常情況下嚼吞,安裝在線軟件包即可滿足需求,而且在線安裝是一種更安全蹬碧、更能確保系統(tǒng)中各種軟件依賴關(guān)系完整的做法
  2. 但如果當(dāng)前系統(tǒng)網(wǎng)絡(luò)不通舱禽,則還是可以使用 yum localinstall packageName.rpm 命令來進(jìn)行軟件包的本地安裝
  3. 前提當(dāng)然是把需要安裝的軟件包的 rpm 文件放置到當(dāng)前系統(tǒng)中,然后再執(zhí)行本地安裝命令

9.3.3 使用 yum 命令更新軟件

  1. 使用 yum list updates 命令可以查看當(dāng)前系統(tǒng)中需要更新的軟件包恩沽,如下圖
  2. 使用 yum update 命令可以更新當(dāng)前系統(tǒng)所有需要更新的軟件包
  3. 使用 yum update packageName 命令可以更新指定的軟件包誊稚,如下圖
    • 升級過程和安裝過程其實(shí)差不多,都會(huì)先檢查依賴關(guān)系罗心,然后彈出確認(rèn)操作里伯,最后告知結(jié)果
    • 如果更新的軟件包的依賴關(guān)系也需要更新,則會(huì)被一并更新


  4. 整個(gè)更新過程非常的完整和安全渤闷,最后也會(huì)將更新所做的操作完整的告知疾瓮,如下圖


9.3.4 使用 yum 命令卸載軟件

  1. 如果想要卸載已安裝的軟件,可以使用 yum remove packageName 命令肤晓,或者 yum erase packageName 命令
  2. yum remove packageName 命令只會(huì)刪除軟件爷贫,但保留配置文件和數(shù)據(jù)
  3. yum erase packageName 命令則會(huì)在刪除軟件的同時(shí),將與軟件相關(guān)的配置文件和數(shù)據(jù)一并刪除
  4. 前文中我們使用 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)下載的解壓版腾务,而不是安裝版


  5. 使用 yum erase tomcat 命令可以完整刪除 Tomcat ,如下圖
    • 刪除時(shí)也會(huì)執(zhí)行一系列檢測削饵,之后彈出確認(rèn)操作岩瘦,確認(rèn)后才會(huì)執(zhí)行刪除


  6. 刪除之后再查看 Tomcat 的目錄映射未巫,如下圖
    • 可以看到,基本都被刪了启昧,但還是有一些殘留叙凡,目前我也不知道為啥,沒有深入研究


9.3.5 使用 yum 命令處理損壞的包依賴關(guān)系

  1. 損壞的包依賴關(guān)系( Broken Dependency ) 是指在安裝多個(gè)軟件包時(shí)密末,某個(gè)軟件包的依賴關(guān)系被另一個(gè)軟件包覆蓋掉握爷,導(dǎo)致前者的依賴關(guān)系丟失
  2. 使用 yum clean all 命令可以清理依賴關(guān)系
  3. 使用 yum deplist packageName 命令可以查看指定軟件包的依賴關(guān)系
  4. 使用 yum update --skip-broken 命令可以跳過損壞的包,對那些沒有損壞的包進(jìn)行更新操作

9.3.6 yum 軟件倉庫

  1. 使用 yum repolist 命令可以查看當(dāng)前系統(tǒng)已配置的軟件倉庫列表严里,如下圖
    • 這些倉庫具體的配置位于 /etc/yum.repos.d/ 目錄中

9.4 從源碼安裝

  1. 如果在線安裝新啼、本地安裝都不好使,還可以選擇 源碼安裝
  2. 也就是直接將源碼編譯后進(jìn)行安裝刹碾,通常需要進(jìn)行以下幾個(gè)步驟
    1. 先下載對應(yīng)軟件的源碼包燥撞,使用 tar -zxvf packageSourceName.tar.gz 命令進(jìn)行解壓
    2. 之后前往解壓目錄,使用 ./configure 命令進(jìn)行配置
    3. 再執(zhí)行 make 命令來構(gòu)建各種二進(jìn)制文件
    4. 最后使用 make install 命令來安裝軟件包
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迷帜,一起剝皮案震驚了整個(gè)濱河市物舒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞬矩,老刑警劉巖茶鉴,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锋玲,死亡現(xiàn)場離奇詭異景用,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)惭蹂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門伞插,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盾碗,你說我怎么就攤上這事媚污。” “怎么了廷雅?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵耗美,是天一觀的道長。 經(jīng)常有香客問我航缀,道長商架,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任芥玉,我火速辦了婚禮蛇摸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灿巧。我一直安慰自己赶袄,他們只是感情好揽涮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饿肺,像睡著了一般蒋困。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敬辣,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天家破,我揣著相機(jī)與錄音,去河邊找鬼购岗。 笑死汰聋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喊积。 我是一名探鬼主播烹困,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乾吻!你這毒婦竟也來了髓梅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤绎签,失蹤者是張志新(化名)和其女友劉穎枯饿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诡必,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奢方,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爸舒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟋字。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扭勉,靈堂內(nèi)的尸體忽然破棺而出鹊奖,到底是詐尸還是另有隱情,我是刑警寧澤涂炎,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布忠聚,位于F島的核電站,受9級特大地震影響唱捣,放射性物質(zhì)發(fā)生泄漏两蟀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一爷光、第九天 我趴在偏房一處隱蔽的房頂上張望垫竞。 院中可真熱鬧,春花似錦、人聲如沸欢瞪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遣鼓。三九已至啸盏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骑祟,已是汗流浹背回懦。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留次企,地道東北人怯晕。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像缸棵,于是被迫代替她去往敵國和親舟茶。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容