Linux 下的軟件包眾多,而且幾乎都是經 GPL 授權的,也就是說這些軟件都免費,振奮人心吧?而且更棒的是,這些軟件幾乎都提供源代碼(開源的),只要你願意,就可以修改程序源代碼,以符合個人的需求和習慣。當然,你要具備修改這些軟件的能力才可以。
源碼包到底是什么呢?其實就是軟件工程師使用特定的格式和語法所書寫的文本代碼,是人寫的計算機語言的指令,一般由英文單詞組成。是不是有點暈?
其實源代碼程序是程序員寫的計算機指令,符合特定的格式和語法。那么,眾所周知,計算機可以識別的是機器語言,也就是二進制語言,所以需要一名翻譯官把abed翻譯成二進制機器語言。我們一般把這名翻譯官稱為編譯器,它的作用就是把人能夠識別的 abcd 翻譯成二進制機器語言,讓計算機可以識別並執行。
源碼包不用擔心收費問題,但是我並不會 C 語言怎么辦?那一大堆的源代碼程序到底如何使用呢?這個源碼包容易安裝嗎?源碼包的安裝因為要把源代碼編譯為二進制語言,所以安裝的時間較長。比如,在 Windows 下大家可能安裝過 QQ,現在的 QQ 功能較多,程序相對較大,大概有 60 MB,但由於 QQ 並不是以源代碼形式發布的,而是經過編譯之后發布的,所以只需要幾分鍾並經過簡單的配置就可以安裝成功。安裝時間較短(當然功能也基本不能自定義)。
在 Linux 中安裝一個 MySQL 數據庫,這個數據庫的壓縮包大概有 23 MB,需要多長時間呢?答案是 30 分鍾左右(根據計算機硬件配置不同)。這樣看來編譯還是很浪費時間的,而且絕大多數用戶並不熟悉寫程序的語言,所以我們要祈禱程序不要報錯,否則對初學者來講很難解決。
為了解決源碼包的這些問題,在 Linux 中就出現了二進制包,也就是源碼包經過編譯之后的包。這種包因為編譯過程在發布之前已經完成,所以用戶安裝時速度較快(和 Windows 下安裝軟件速度相當),而且報錯也大大減少。
二進制包是 Linux 下的默認安裝軟件包,所以有時我們也把二進制包稱作默認安裝軟件包。目前主要有兩個系列的二進制包管理系統:一個是 Red Hat 上的 RPM 包管理系統;另一個是 Debian 和 Ubuntu 上的 DPKG 包管理系統。本教程講的是 Red Hat 公司的 CentOS Linux,所以我們主要講解 RPM 包管理系統。不過這兩個系列的二進制包管理的原理與形式大同小異,可以觸類旁通。
說了這么多,到底源碼包和二進制包哪個好呢?舉個例子,我們想做一套家具,源碼包就像所有的家具完全由自己動手手工打造(手工編譯),想要什么樣的板材、油漆、顏色和樣式都由自己決定(功能自定義,甚至可以修改源代碼)。想想就覺得爽,完全不用被黑心的廠商所左右,而且不用擔心質量問題(軟件更適合自己的系統,效率更高,更加穩定)。但是,所花費的時間大大超過了買一套家具的時間(編譯浪費時間),而且我自己真的有做木工這個能力嗎(需要對源代碼非常了解)?就算請別人定制好的家具,再由我自己組裝,萬一哪個部件不匹配(報錯很難解決),怎么辦?
那么二進制包呢?也是我需要一套家具,可是我去商場買了一套(安裝簡單),家具都是現成的,不會有哪個部件不匹配,除非因為我沒有量好尺寸而導致放不下(報錯很少)。但是我完全不知道這套家具用的是什么材料、油漆是否合格,而且家具的樣式不能隨意選擇(軟件基本不能自定義功能)。
好了,通過這個例子大家可以了解源碼包和二進制包之間的區別。
源碼包的特點
源碼包既然是軟件包,就不會是一個文件,而是多個文件的集合。出於發行的需要,我們一般會把源碼包打包壓縮之后發布,而 Linux 中最常用的打包壓縮格式是"Mar.gz",所以我們也把源碼包叫作 Tarball。源碼包需要大家自己去軟件的官方網站進行下載。
源碼包的壓縮包中一般會包含如下內容:
源代碼文件。
配置和檢測程序(如configure或config等)。
軟件安裝說明和軟件說明(如INSTALL或 README)。
源碼包的優點如下:
開源。如果你有足夠的能力,則可以修改源代碼。
可以自由選擇所需的功能。
因為軟件是編譯安裝的,所以更加適合自己的系統,更加穩定,效率也更高。
卸載方便。
源碼包的缺點如下:
安裝過程步驟較多,尤其是在安裝較大的軟件集合時(如 LAMP 環境搭建),容易出現拼寫錯誤。
編譯時間較長,安裝時間比二進制安裝要長。
因為軟件是編譯安裝的,所以在安裝過程中一旦報錯,新手很難解決。
二進制包的特點
二進制包是在軟件發布的時候已經進行過編譯的軟件包,所以安裝速度比源碼包快得多(和 Windows 下軟件安裝速度相當)。但是因為已經進行通譯,大家也就不能在看到軟件的源代碼了。目前兩大主流的二進制包系統是 DPKG 包和 RPM 包。
DPKG 包是由 Debian Linux 所開發的包管理機制,通過 DPKG 包,Debian Linux 就可以進行軟件包管理,主要應用在 Debian 和 Ubuntu 中。
RPM 包是由 Red Hat 公司所開發的包管理系統,功能強大,安裝、升級、査詢和卸載非常簡單方便。
目前很多 Linux 版本都在使用這種包管理方式,包括 Fedora、CentOS、SuSE 等。Linux 默認采用 RPM 包來安裝系統,所以常用的 RPM 包都在安裝光盤中。
RPM 包的優點如下:
包管理系統簡單,只通過幾個命令就可以實現包的安裝、升級、査詢和卸載。
安裝速度比源碼包安裝快得多。
RPM 包的缺點如下:
經過編譯,不能在看到源代碼。
功能選擇不如源碼包靈活。
依賴性。有時我們會發現,在安裝軟件包 a 時需要先安裝 b 和 c,而在安裝 b 時需要先安裝 d 和 e。這就需要先安裝 d 和 e,再安裝 b 和 c,最后才能安裝 a。比如,我買了一個漂亮的燈具,打算安裝在客廳里,可是在安裝燈具之前,客廳需要有頂棚,並且頂棚需要刷好油漆。安裝軟件和裝修及其類似,需要有一定的順序,但是有時依賴性會非常強。
看到里,我們發現GNU/Linux不同發行版之間有着不同的二進制包格式,為什么linux發行版之間不能有一個統一的二進制軟件包標准?
轉載自:https://blog.csdn.net/zyy1659949090/article/details/88123264