『無慾則無求』Linux軟件包管理 — 39、Linux系統軟件包介紹

1、Linux系統軟件包分類

Linux系統下只有源碼包、二進制包,就這兩種包。

Tips:
windows系統中的軟件和Linux系統的軟件是不通用的。
windows系統中的軟件是經過編譯後的.exe文件和.msi。

2、源碼包

(1)什麼是源碼包

以前我們一直在說,Linux系統飛速發展的一個根本原因就是開源。所謂的源碼包,就是直接給你一個開放的源程序。作者寫的時候是什麼樣,寫完就直接給你,這就是源碼包。

Linux系統中最早的程序都是這樣的源碼包。

(2)源碼包的優點

  • 開源,如果有足夠的能力,可以修改源代碼(有利於學習,有利於推廣)。
  • 可以自由選擇所需的功能。
  • 軟件是編譯安裝(編譯:把abcd翻譯成0101的過程),所以更加適合自己的系統,更加穩定也效率更高(之前有一個大概的估算,如果使用源碼包安裝軟件,要比使用同版本同樣性能的二進制包,軟件的效能要高5個百分點)。
  • 卸載方便(直接把安裝目錄刪除就可以了,基本上沒有殘餘文件)。

(3)源碼包的缺點

  • 安裝過程步驟較多,尤其安裝較大的軟件集合時(如LAMP環境搭建),容易出現拼寫錯誤。
  • 編譯過程時間較長,安裝比二進制安裝時間長。
  • 因爲是編譯安裝,編譯安裝過程容易報錯,一旦報錯新手很難解決。

3、二進制包

類似於windows系統的exe文件。二進制包安裝較源碼包安裝更爲方便,但是二進制包就不在是開源的了,因爲二進制包中是已經編譯好的文件。

(1)二進制包分類

  • DPKG包:是由Debian Linux所開發出來的包管理機制,通過DPKG包Debian Linux就可以進行軟件包管理。主要應用在Debian和unbuntu中。(也經常叫deb包)
  • RPM包:是由Red Hat公司所開發的包管理系統。功能強大,安裝、升級、查詢和卸載都非常簡單和方便。目前很多Linux都在使用這種包管理方式,包括Fedora、CentoS、SuSE等。我們將要學習RPM包管理系統。

提示:

  • DPKG包和RPM包,這兩種包系統是不通用的。這也是兩個系統最大的區別。
  • 但是Red Hat中的安裝過程和Debian中軟件的安裝是一一對應的。如果以後用到Debian系統,查閱一下與之對應的命令即可。

(2)RPM包的優點:

  • 包管理系統操作簡單,只通過幾個命令就可以實現包的安裝、升級、查詢和卸載。(編輯過程基本不會報錯了,因爲廠商已經提前編譯好了)
  • 安裝速度比源碼包安裝快的多。

(3)RPM包的缺點:

  • 經過編譯,不再可以看到源代碼。
  • 功能選擇不如源碼包靈活。
  • 依賴性。有時我們會發現需要安裝軟件包a時需要先安裝軟件b和c,而安裝b軟件時需要安裝軟件d和e。這時需要先安裝d和e,再安裝b和c,最後才能安裝a包。所以通過RPM包安裝軟件,如果軟件有依賴性的話,軟件則是有一定的安裝順序的。如果依賴性非常強的話,會非常的繁瑣。(Linux系統中絕大多數軟件包都會有依賴的軟件包)

注意:這裏多強調一下上邊的依賴性

依賴性分爲:

  • 樹形依賴 a–>b—>c
    a包依賴b包,b包依賴c包。所以需要先安裝c包,在安裝b包,最後在安裝c包。
  • 環形依賴a—>b—>c—>a
    這種環形的依賴關係,按照上邊樹形依賴的解釋,是無法安裝的。但是這種依賴關係解決起來很簡單,就是把a、b、c包同時安裝,就是用一條命令同時安裝三個包就能解決。
  • 模塊依賴(函數庫依賴)
    最煩麻煩就是這種模塊依賴關係,我們舉一個例子,嘗試安裝以下文件:
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm
錯誤:依賴檢測失敗:
libodbc.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.e17.x86_64需要
libodbcinst.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.el7.x86_64需要

注意:
libodbc.so.2是一個文件的名字,並不是一個包名,你要把這個文件所在的包安裝上,這個文件就存在了。

發現報錯,需要安裝“libodbc.so.2”函數庫文件,這時會發現在光盤中根本找不到這個文件。那是因爲這個函數庫沒有單獨成包,是包含在某一個軟件包中的。而如果要知道該文件在哪個軟件包中,需要查詢網站http://www.rpmfind.net/(很方便),如圖:
在這裏插入圖片描述

點擊搜索之後,會顯示在不同的Linux版本中,安裝哪個包,如下圖
在這裏插入圖片描述
這是個網站的原理,是通過查詢一個RPM包依賴管理的數據庫,來解決這個問題的。

4、RPM包的兩種安裝方法

  • 手動(手工命令安裝):就是通過rpm命令手動進行安裝,自己解決包之間的依賴性。
  • yum在線安裝:yum命令會自動連接到Red Hat的官方服務器上的包依賴數據庫,不管何種依賴關係,需要的包都會自動的下載到本地,然後在自動進行安裝。

注意:

  • 如果是正版的Red Hat系列的Linux系統,會收費,但是CentOS裏的yum是免費的。
  • 還有要注意一點Linux系統中,二進制包、rpm包、默認安裝包都指的是二進制包。yum只是源碼包和二進制包的在線安裝方式。

5、小結

軟件既有源碼包版本,又有RPM包版本,如何選擇?

建議:

  • 源碼包:如果服務是給大量客戶端提供訪問的,建議使用源碼包,源碼包效率更高(如搭建LAMP環境)。
  • RPM包:如果程序是給少量用戶訪問,或者本地使用的,建議RPM包,因爲RPM管理方便。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章