天天看點

安卓修改軟體安裝時間_Linux軟體包(源碼包和二進制包)詳細介紹

Linux下的軟體包衆多,且幾乎都是經 GPL 授權、免費開源(無償公開源代碼)的。這意味着如果你具備修改軟體源代碼的能力,隻要你願意,可以随意修改。

安卓修改軟體安裝時間_Linux軟體包(源碼包和二進制包)詳細介紹

GPL,全稱 General Public License,中文名稱“通用性公開許可證”,簡單了解 GPL 就是一個保護軟體自由的一個協定,經 GPL 協定授權的軟體必須開源,請猛擊《開源協定》了解更多資訊。

Linux下的軟體包可細分為兩種,分别是源碼包和二進制包。

Linux源碼包

實際上,源碼包就是一大堆源代碼程式,是由程式員按照特定的格式和文法編寫出來的。

我們都知道,計算機隻能識别機器語言,也就是二進制語言,是以源碼包的安裝需要一名“翻譯官”将“abcd”翻譯成二進制語言,這名“翻譯官”通常被稱為編譯器。

“編譯”指的是從源代碼到直接被計算機(或虛拟機)執行的目标代碼的翻譯過程,編譯器的功能就是把源代碼翻譯為二進制代碼,讓計算機識别并運作,讀者可以猛擊《C語言編譯器》了解更多資訊。

雖然源碼包免費開源,但使用者不會程式設計怎麼辦?一大堆源代碼程式不會使用怎麼辦?源碼包容易安裝嗎?等等這些都是使用源碼包安裝方式無法解答的問題。

另外,由于源碼包的安裝需要把源代碼編譯為二進制代碼,是以安裝時間較長。比如,大家應該都在 Windows下安裝過 QQ,QQ 功能較多,程式相對較大(有 70 MB左右),但由于其并非是以源碼包的形式釋出,而是編譯後才釋出的,是以隻需幾分鐘(經過簡單的配置)即可安裝成功。但如果我們以源碼包安裝的方式在 Linux 中安裝一個 MySQL 資料庫,即便此軟體的壓縮包僅有 23 MB左右,也需要 30 分鐘左右的時間(根據硬體配置不同,略有差異)。

通過對比你會發現,源碼包的編譯是很費時間的,況且絕多大數使用者并不熟悉程式語言,在安裝過程中我們隻能祈禱程式不要報錯,否則初學者很難解決。

為了解決使用源碼包安裝方式的這些問題,Linux 軟體包的安裝出現了使用二進制包的安裝方式。

安卓修改軟體安裝時間_Linux軟體包(源碼包和二進制包)詳細介紹

Linux二進制包

二進制包,也就是源碼包經過成功編譯之後産生的包。由于二進制包在釋出之前就已經完成了編譯的工作,是以使用者安裝軟體的速度較快(同 Windows下安裝軟體速度相當),且安裝過程報錯幾率大大減小。

二進制包是 Linux 下預設的軟體安裝包,是以二進制包又被稱為預設安裝軟體包。目前主要有以下 2 大主流的二進制包管理系統:

  • RPM 包管理系統:功能強大,安裝、更新、查詢和解除安裝非常簡單友善,是以很多 Linux 發行版都預設使用此機制作為軟體安裝的管理方式,例如 Fedora、CentOS、SuSE 等。
  • DPKG 包管理系統:由 Debian Linux 所開發的包管理機制,通過 DPKG 包,Debian Linux 就可以進行軟體包管理,主要應用在 Debian 和 Ubuntu 中。

RPM 包管理系統和 DPKG 管理系統的原理和形式大同小異,可以觸類旁通。由于本教程使用的是 CentOS 6.x 版本,是以本節主要講解 RPM 二進制包。

源碼包 VS RPM二進制包

源碼包一般包含多個檔案,為了友善釋出,通常會将源碼包做打包壓縮處理,Linux 中最常用的打包壓縮格式為“tar.gz”,是以源碼包又被稱為 Tarball。

Tarball 是 Linux 系統的一款打包工具,可以對源碼包進行打包壓縮處理,人們習慣上将最終得到的打包壓縮檔案稱為 Tarball 檔案。

源碼包需要我們自己去軟體官方網站進行下載下傳,包中通常包含以下内容:

  • 源代碼檔案。
  • 配置和檢測程式(如 configure 或 config 等)。
  • 軟體安裝說明和軟體說明(如 INSTALL 或 README)。

總的來說,使用源碼包安裝軟體具有以下幾點好處:

  • 開源。如果你有足夠的能力,則可以修改源代碼。
  • 可以自由選擇所需的功能。
  • 因為軟體是編譯安裝的,是以更加适合自己的系統,更加穩定,效率也更高。
  • 解除安裝友善。

但同時,使用源碼包安裝軟體也有幾點不足:

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

相比源碼包,二進制包是在軟體釋出時已經進行過編譯的軟體包,是以安裝速度比源碼包快得多(和 Windows 下軟體安裝速度相當)。也正是因為已經進行通譯,大家無法看到軟體的源代碼。

使用 RMP 包安裝軟體具有以下 2 點好處:

  1. 包管理系統簡單,隻通過幾個指令就可以實作包的安裝、更新、查詢和解除安裝。
  2. 安裝速度比源碼包安裝快得多。

與此同時,使用 RMP 包安裝軟體有如下不足:

  • 經過編譯,不能再看到源代碼。
  • 功能選擇不如源碼包靈活。
  • 依賴性。有時我們會發現,在安裝軟體包 a 時需要先安裝 b 和 c,而在安裝 b 時需要先安裝 d 和 e。這就需要先安裝 d 和 e,再安裝 b 和 c,最後才能安裝 a。比如,我買了一個漂亮的燈具,打算安裝在客廳裡,可是在安裝燈具之前,客廳需要有頂棚,并且頂棚需要刷好油漆。安裝軟體和裝修及其類似,需要有一定的順序,但是有時依賴性會非常強。
安卓修改軟體安裝時間_Linux軟體包(源碼包和二進制包)詳細介紹

如何選擇

通過源碼包和 RMP 二進制包的對比,在 Linux 進行軟體安裝時,我們應該使用哪種軟體包呢?

為了更好的差別兩種軟體包,這裡舉個例子。假設我們想做一套家具,源碼包就像所有的家具完全由自己動手手工打造(手工編譯),想要什麼樣的闆材、油漆、顔色和樣式都由自己決定(功能自定義,甚至可以修改源代碼)。想想就覺得爽,完全不用被黑心的廠商所左右,而且不用擔心品質問題(軟體更适合自己的系統,效率更高,更加穩定)。但是,所花費的時間大大超過了買一套家具的時間(編譯浪費時間),而且自己真的有做木工這個能力嗎(需要對源代碼非常了解)?就算請别人定制好的家具,再由自己組裝,萬一哪個部件不比對(報錯很難解決),怎麼辦?

那麼二進制包呢?也是我們需要一套家具,去商場買了一套(安裝簡單),家具都是現成的,不會有哪個部件不比對,除非因為自身問題沒有量好尺寸而導緻放不下(報錯很少)。但是我們完全不知道這套家具用的是什麼材料、油漆是否合格,而且家具的樣式不能随意選擇(軟體基本不能自定義功能)。

通過以上對源碼包和二進制包的講解,相信大家對兩者的差別和特點有了更清楚的認識。

我是@大仁筆記,歡迎大家學習交流,一起為更好的明天好好努力。