自己的網(wǎng)站如何做快照劫持搜索引擎外部?jī)?yōu)化有哪些渠道
Linux下的軟件包眾多,且?guī)缀醵际墙?jīng) GPL 授權(quán)、免費(fèi)開源(無(wú)償公開源代碼)的。這意味著如果你具備修改軟件源代碼的能力,只要你愿意,可以隨意修改。
GPL,全稱 General Public License,中文名稱“通用性公開許可證”,簡(jiǎn)單理解 GPL 就是一個(gè)保護(hù)軟件自由的一個(gè)協(xié)議,經(jīng) GPL 協(xié)議授權(quán)的軟件必須開源,請(qǐng)猛擊《開源協(xié)議》了解更多信息。
Linux下的軟件包可細(xì)分為兩種,分別是源碼包和二進(jìn)制包。
Linux源碼包
實(shí)際上,源碼包就是一大堆源代碼程序,是由程序員按照特定的格式和語(yǔ)法編寫出來(lái)的。
我們都知道,計(jì)算機(jī)只能識(shí)別機(jī)器語(yǔ)言,也就是二進(jìn)制語(yǔ)言,所以源碼包的安裝需要一名“翻譯官”將“abcd”翻譯成二進(jìn)制語(yǔ)言,這名“翻譯官”通常被稱為編譯器。
“編譯”指的是從源代碼到直接被計(jì)算機(jī)(或虛擬機(jī))執(zhí)行的目標(biāo)代碼的翻譯過程,編譯器的功能就是把源代碼翻譯為二進(jìn)制代碼,讓計(jì)算機(jī)識(shí)別并運(yùn)行,讀者可以猛擊《C語(yǔ)言編譯器》了解更多信息。
雖然源碼包免費(fèi)開源,但用戶不會(huì)編程怎么辦?一大堆源代碼程序不會(huì)使用怎么辦?源碼包容易安裝嗎?等等這些都是使用源碼包安裝方式無(wú)法解答的問題。
另外,由于源碼包的安裝需要把源代碼編譯為二進(jìn)制代碼,因此安裝時(shí)間較長(zhǎng)。比如,大家應(yīng)該都在 Windows下安裝過 QQ,QQ 功能較多,程序相對(duì)較大(有 70 MB左右),但由于其并非是以源碼包的形式發(fā)布,而是編譯后才發(fā)布的,因此只需幾分鐘(經(jīng)過簡(jiǎn)單的配置)即可安裝成功。
但如果我們以源碼包安裝的方式在 Linux 中安裝一個(gè) MySQL 數(shù)據(jù)庫(kù),即便此軟件的壓縮包僅有 23 MB左右,也需要 30 分鐘左右的時(shí)間(根據(jù)硬件配置不同,略有差異)。
通過對(duì)比你會(huì)發(fā)現(xiàn),源碼包的編譯是很費(fèi)時(shí)間的,況且絕多大數(shù)用戶并不熟悉程序語(yǔ)言,在安裝過程中我們只能祈禱程序不要報(bào)錯(cuò),否則初學(xué)者很難解決。為了解決使用源碼包安裝方式的這些問題,Linux 軟件包的安裝出現(xiàn)了使用二進(jìn)制包的安裝方式。
Linux二進(jìn)制包
二進(jìn)制包,也就是源碼包經(jīng)過成功編譯之后產(chǎn)生的包。由于二進(jìn)制包在發(fā)布之前就已經(jīng)完成了編譯的工作,因此用戶安裝軟件的速度較快(同 Windows下安裝軟件速度相當(dāng)),且安裝過程報(bào)錯(cuò)幾率大大減小。
二進(jìn)制包是 Linux 下默認(rèn)的軟件安裝包,因此二進(jìn)制包又被稱為默認(rèn)安裝軟件包。目前主要有以下 2 大主流的二進(jìn)制包管理系統(tǒng):
-
RPM 包管理系統(tǒng):功能強(qiáng)大,安裝、升級(jí)、査詢和卸載非常簡(jiǎn)單方便,因此很多 Linux 發(fā)行版都默認(rèn)使用此機(jī)制作為軟件安裝的管理方式,例如 Fedora、CentOS、SuSE 等。
-
DPKG 包管理系統(tǒng):由 Debian Linux 所開發(fā)的包管理機(jī)制,通過 DPKG 包,Debian Linux 就可以進(jìn)行軟件包管理,主要應(yīng)用在 Debian 和 Ubuntu 中。
RPM 包管理系統(tǒng)和 DPKG 管理系統(tǒng)的原理和形式大同小異,可以觸類旁通。由于本教程使用的是 CentOS 6.x 版本,因此本節(jié)主要講解 RPM 二進(jìn)制包。
源碼包 VS RPM二進(jìn)制包
源碼包一般包含多個(gè)文件,為了方便發(fā)布,通常會(huì)將源碼包做打包壓縮處理,Linux 中最常用的打包壓縮格式為“tar.gz”,因此源碼包又被稱為 Tarball。
Tarball 是 Linux 系統(tǒng)的一款打包工具,可以對(duì)源碼包進(jìn)行打包壓縮處理,人們習(xí)慣上將最終得到的打包壓縮文件稱為 Tarball 文件。
源碼包需要我們自己去軟件官方網(wǎng)站進(jìn)行下載,包中通常包含以下內(nèi)容:
-
源代碼文件。
-
配置和檢測(cè)程序(如 configure 或 config 等)。
-
軟件安裝說(shuō)明和軟件說(shuō)明(如 INSTALL 或 README)。
總的來(lái)說(shuō),使用源碼包安裝軟件具有以下幾點(diǎn)好處:
-
開源。如果你有足夠的能力,則可以修改源代碼。
-
可以自由選擇所需的功能。
-
因?yàn)檐浖蔷幾g安裝的,所以更加適合自己的系統(tǒng),更加穩(wěn)定,效率也更高。
-
卸載方便。
但同時(shí),使用源碼包安裝軟件也有幾點(diǎn)不足:
-
安裝過程步驟較多,尤其是在安裝較大的軟件集合時(shí)(如 LAMP 環(huán)境搭建),容易出現(xiàn)拼寫錯(cuò)誤。
-
編譯時(shí)間較長(zhǎng),所以安裝時(shí)間比二進(jìn)制安裝要長(zhǎng)。
-
因?yàn)檐浖蔷幾g安裝的,所以在安裝過程中一旦報(bào)錯(cuò),新手很難解決。
相比源碼包,二進(jìn)制包是在軟件發(fā)布時(shí)已經(jīng)進(jìn)行過編譯的軟件包,所以安裝速度比源碼包快得多(和 Windows 下軟件安裝速度相當(dāng))。
也正是因?yàn)橐呀?jīng)進(jìn)行通譯,大家無(wú)法看到軟件的源代碼。使用 RMP 包安裝軟件具有以下 2 點(diǎn)好處:
-
包管理系統(tǒng)簡(jiǎn)單,只通過幾個(gè)命令就可以實(shí)現(xiàn)包的安裝、升級(jí)、査詢和卸載。
-
安裝速度比源碼包安裝快得多。
與此同時(shí),使用 RMP 包安裝軟件有如下不足:
-
經(jīng)過編譯,不能在看到源代碼。
-
功能選擇不如源碼包靈活。
-
依賴性。有時(shí)我們會(huì)發(fā)現(xiàn),在安裝軟件包 a 時(shí)需要先安裝 b 和 c,而在安裝 b 時(shí)需要先安裝 d 和 e。這就需要先安裝 d 和 e,再安裝 b 和 c,最后才能安裝 a。比如,我買了一個(gè)漂亮的燈具,打算安裝在客廳里,可是在安裝燈具之前,客廳需要有頂棚,并且頂棚需要刷好油漆。安裝軟件和裝修及其類似,需要有一定的順序,但是有時(shí)依賴性會(huì)非常強(qiáng)。
如何選擇
通過源碼包和 RMP 二進(jìn)制包的對(duì)比,在 Linux 進(jìn)行軟件安裝時(shí),我們應(yīng)該使用哪種軟件包呢?
為了更好的區(qū)別兩種軟件包,這里舉個(gè)例子。假設(shè)我們想做一套家具,源碼包就像所有的家具完全由自己動(dòng)手手工打造(手工編譯),想要什么樣的板材、油漆、顏色和樣式都由自己決定(功能自定義,甚至可以修改源代碼)。想想就覺得爽,完全不用被黑心的廠商所左右,而且不用擔(dān)心質(zhì)量問題(軟件更適合自己的系統(tǒng),效率更高,更加穩(wěn)定)。但是,所花費(fèi)的時(shí)間大大超過了買一套家具的時(shí)間(編譯浪費(fèi)時(shí)間),而且自己真的有做木工這個(gè)能力嗎(需要對(duì)源代碼非常了解)?就算請(qǐng)別人定制好的家具,再由自己組裝,萬(wàn)一哪個(gè)部件不匹配(報(bào)錯(cuò)很難解決),怎么辦?
那么二進(jìn)制包呢?也是我們需要一套家具,去商場(chǎng)買了一套(安裝簡(jiǎn)單),家具都是現(xiàn)成的,不會(huì)有哪個(gè)部件不匹配,除非因?yàn)樽陨韱栴}沒有量好尺寸而導(dǎo)致放不下(報(bào)錯(cuò)很少)。但是我們完全不知道這套家具用的是什么材料、油漆是否合格,而且家具的樣式不能隨意選擇(軟件基本不能自定義功能)。
通過以上對(duì)源碼包和二進(jìn)制包的講解,相信大家對(duì)兩者的區(qū)別和特點(diǎn)有了更清楚的認(rèn)識(shí)。