世界要聞:Linux 下二進(jìn)制包 vs 源代碼包:你應(yīng)該選擇哪個(gè)?
2023-06-26 05:53:32 來(lái)源:Linux迷
在Linux上安裝程序通常與在Windows上傳統(tǒng)的安裝軟件方式有所不同。你可以使用預(yù)構(gòu)建的軟件包,或者自己編譯程序。如今,預(yù)構(gòu)建軟件包通常是默認(rèn)的選擇,但在某些情況下,你可能想考慮從源代碼進(jìn)行編譯。
什么是二進(jìn)制包?在Linux上安裝程序通常與在Windows上傳統(tǒng)的安裝軟件方式有所不同。而不是從供應(yīng)商的網(wǎng)站上下載安裝程序,文件來(lái)自于一個(gè)程序倉(cāng)庫(kù),通常根據(jù)你的Linux發(fā)行版進(jìn)行定制。你可以使用Linux軟件包管理器或應(yīng)用商店訪問(wèn)這個(gè)倉(cāng)庫(kù)。
(資料圖片僅供參考)
這些倉(cāng)庫(kù)中的程序由多個(gè)文件組成,并以一個(gè)歸檔格式進(jìn)行打包,以便于訪問(wèn)和分發(fā)。例如,Debian使用DEB格式存儲(chǔ)和分發(fā)程序。這些打包文件被稱(chēng)為二進(jìn)制包。
如何閱讀二進(jìn)制代碼你需要一個(gè)特殊的程序來(lái)提取這些文件并將其安裝到計(jì)算機(jī)上,通常是你的軟件包管理器或應(yīng)用商店。這些工具還具有其他有用的功能,例如跟蹤已安裝的文件和管理軟件更新。
較新的軟件包格式,如Flatpak和Snap,適用于不同版本的Linux,但它們?nèi)匀挥深A(yù)編譯的二進(jìn)制程序組成。兩者都需要圖形化的應(yīng)用商店或基于命令行的軟件包管理器進(jìn)行安裝。
什么是源代碼?所有軟件都由稱(chēng)為源代碼的文本行組成,用特定的編程語(yǔ)言編寫(xiě),例如C或C++。通常情況下,你不能只將這些源代碼打包成一個(gè)存檔文件并稱(chēng)之為軟件包。這些行需要被轉(zhuǎn)換為計(jì)算機(jī)可以理解和執(zhí)行的語(yǔ)言。
這個(gè)過(guò)程被稱(chēng)為編譯,最終的結(jié)果是創(chuàng)建出計(jì)算機(jī)可以運(yùn)行的二進(jìn)制文件。軟件包和軟件的區(qū)別在于,軟件的二進(jìn)制文件與其他文件(如配置文件)一起存儲(chǔ)在一個(gè)包中。
什么是“從源代碼安裝”?從源代碼安裝程序意味著不使用軟件包管理器進(jìn)行安裝。你需要編譯源代碼,并將二進(jìn)制文件復(fù)制到計(jì)算機(jī)上。
大多數(shù)情況下,你可以從諸如GitHub、GitLab或Bitbucket等托管服務(wù)上下載項(xiàng)目的源代碼。較大的程序甚至可能在個(gè)人網(wǎng)站上托管源代碼。該代碼通常以一個(gè)歸檔格式(也稱(chēng)為源代碼包)進(jìn)行壓縮。
一組特殊的工具幫助自動(dòng)化構(gòu)建過(guò)程。在Linux桌面上,通常以一個(gè)名為make的命令行程序的形式存在。用不同語(yǔ)言編寫(xiě)的源代碼需要特定的編譯器和命令將其轉(zhuǎn)換為二進(jìn)制文件。make程序自動(dòng)化了這個(gè)過(guò)程。
為了使這個(gè)自動(dòng)化工作起來(lái),程序提供了一個(gè)名為Makefile的文件,告訴make應(yīng)該做什么和如何編譯。如今,Makefile通常由特殊的軟件(如CMake)自動(dòng)生成。這就是你需要介入的地方。從這里開(kāi)始,你可以指定想要編譯到軟件中的具體功能。
從源代碼構(gòu)建的示例例如,下面的命令使用CMake為Calligra辦公套件生成一個(gè)配置文件。創(chuàng)建的文件告訴make程序只編譯Calligra的Writer組件。
cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra
完成這一步驟后,用戶只需運(yùn)行make工具來(lái)編譯并將結(jié)果復(fù)制到他們的計(jì)算機(jī)上。操作步驟如下:
makemake install
雖然這是編譯程序的一般模式,但還有許多其他安裝源代碼包的方法。例如,Gentoo Linux內(nèi)置了一種處理源代碼包的方法,使得該過(guò)程更快捷、更簡(jiǎn)便。但是構(gòu)建二進(jìn)制包需要比上述命令更多的步驟。
使用二進(jìn)制包的好處如果你使用Linux,很可能有人預(yù)編譯了你已安裝的軟件。這比使用源代碼包更為常見(jiàn)。但是為什么會(huì)這樣呢?
1.二進(jìn)制版本更易管理二進(jìn)制包不僅包含已編譯的安裝文件,還存儲(chǔ)了其他信息,使得你的包管理器能夠輕松跟蹤所有程序。例如,DEB文件(Debian及其衍生版的包格式)還包含重要信息,如程序運(yùn)行所需的其他軟件以及當(dāng)前版本。
這使得安裝包變得更加簡(jiǎn)單,因?yàn)槟悴恍枰獡?dān)心需要哪些其他文件才能成功運(yùn)行程序。你的包管理器可以從包本身讀取這些信息,并自動(dòng)下載所有必要的依賴項(xiàng)。
而當(dāng)從源代碼安裝程序時(shí),除非將代碼編譯為獨(dú)立的二進(jìn)制包,否則你將需要負(fù)責(zé)管理該軟件。你需要記住你需要哪些其他程序來(lái)使其工作,并自行安裝它們。
2.二進(jìn)制版本具有更好的穩(wěn)定性負(fù)責(zé)維護(hù)包管理器倉(cāng)庫(kù)的人員往往會(huì)對(duì)二進(jìn)制文件進(jìn)行測(cè)試,并盡力修復(fù)出現(xiàn)的問(wèn)題。這可能導(dǎo)致提高穩(wěn)定性,因?yàn)榘S護(hù)人員可能會(huì)發(fā)現(xiàn)安裝源代碼的人可能忽視的問(wèn)題。
此外,包通常必須遵守一套嚴(yán)格的規(guī)則,以確保它們能在你的系統(tǒng)上運(yùn)行。例如,Debian和Ubuntu都有一個(gè)政策手冊(cè),許多其他Linux發(fā)行版也有類(lèi)似的手冊(cè)。
有些程序還依賴于不同版本的同一軟件依賴項(xiàng)來(lái)運(yùn)行。軟件包倉(cāng)庫(kù)會(huì)盡力解決這些沖突,以免給你帶來(lái)麻煩。
編譯源代碼包的好處從源代碼安裝程序并不是每個(gè)人都需要做的事情,因?yàn)槿绻麍?jiān)持使用二進(jìn)制包,通常更容易維護(hù)你的計(jì)算機(jī)。盡管如此,使用這種稍微復(fù)雜一些的方式安裝程序仍然有一些優(yōu)勢(shì)。
1.源代碼提供最新軟件使程序更加可靠的一個(gè)缺點(diǎn)是需要時(shí)間來(lái)改進(jìn)和修復(fù)。有時(shí)候可能有可用的二進(jìn)制文件,但源代碼會(huì)稍后提供。對(duì)于希望擁有最新和最好的軟件的人來(lái)說(shuō),他們可能愿意在交換較新軟件的同時(shí)稍微犧牲一些穩(wěn)定性。
雖然有一些Linux操作系統(tǒng)可以滿足這種需求而無(wú)需編譯程序,但它們也有一些缺點(diǎn)。例如,那些不經(jīng)常發(fā)布固定軟件包版本的軟件在存儲(chǔ)庫(kù)中難以保持最新。相比之下,從源代碼安裝則不受這些限制。
這是因?yàn)槎M(jìn)制包通常是根據(jù)官方發(fā)布的程序版本制作的。因此,這些版本之間的更改通常不會(huì)被考慮在內(nèi)。通過(guò)從源代碼編譯自己的軟件,你可以立即從這些更改中受益。
也有可能你的Linux操作系統(tǒng)沒(méi)有預(yù)先為你準(zhǔn)備好你想要的軟件。過(guò)去,這將使得從源代碼安裝是唯一的選擇。通用的軟件包格式已經(jīng)改變了這一點(diǎn)。Flatpak和Snap軟件包通常也比系統(tǒng)存儲(chǔ)庫(kù)更快地接收更新。但仍然有時(shí)候編譯是獲得所需軟件的唯一途徑。
2.你可以自己選擇功能FFmpeg的功能 使用源代碼包的另一個(gè)好處是你可以更加掌控你安裝的程序。當(dāng)從二進(jìn)制軟件庫(kù)安裝時(shí),你在自定義軟件包方面受到限制。
以FFmpeg為例,它是一個(gè)基于命令行的音視頻轉(zhuǎn)換工具。默認(rèn)情況下,它帶有大量的功能,其中一些你可能從未使用過(guò)。例如,F(xiàn)Fmpeg支持JACK音頻,盡管這個(gè)軟件通常只在生產(chǎn)環(huán)境中使用。
通過(guò)編譯FFmpeg,你可以移除你不需要的功能,使其更加輕巧并符合你的需求。同樣的原理也適用于其他龐大的程序。
當(dāng)資源有限時(shí),移除功能可以有效減輕負(fù)荷。難怪許多低端計(jì)算機(jī)上都使用基于Gentoo Linux的ChromeOS。Gentoo是基于源代碼的,它編譯了許多軟件,潛在地使這些系統(tǒng)運(yùn)行得更加輕巧。
為什么不同時(shí)使用二進(jìn)制和源代碼包呢?雖然你可能不會(huì)每天都想編譯軟件包,但這是一種有用的方法。盡管如此,隨著從Snap Store和Flathub等網(wǎng)站提供的新的通用軟件包格式,你更不太可能需要從源代碼構(gòu)建以獲得最新的軟件。
關(guān)鍵詞:
相關(guān)閱讀
- (2023-06-26)世界要聞:Linux 下二進(jìn)制包 vs 源代碼包:你應(yīng)該選擇哪個(gè)?
- (2023-06-26)華東政法大學(xué)在職研究生招收專(zhuān)科學(xué)歷嗎? 全球今日訊
- (2023-06-26)《高空跳江救人 笑稱(chēng)自己很慫》后續(xù):跳橋救人的湘籍外賣(mài)小哥彭清林被邀落戶杭州
- (2023-06-26)全球今日?qǐng)?bào)丨重拳出擊!湖北省公安廳部署開(kāi)展夏季治安打擊整治行動(dòng)
- (2023-06-26)藍(lán)貓多少錢(qián)一只_貓多少錢(qián)一只_全球新動(dòng)態(tài)
- (2023-06-26)cf手游輔助瞄準(zhǔn)選哪個(gè)_cf手游輔助瞄準(zhǔn)
- (2023-06-26)構(gòu)成侵犯著作權(quán)罪須具備的條件
- (2023-06-26)輕的英文 請(qǐng)的英文_今日要聞
- (2023-06-26)碳化硅“狂飆”:追趕、內(nèi)卷、替代
- (2023-06-26)普羅米修斯希臘神話故事里面的普羅米修斯故事的主旨_普羅米修斯希臘神話
- (2023-06-26)快播:圓規(guī)的使用方法 圓規(guī)
- (2023-06-26)騰訊啟動(dòng)“探元計(jì)劃2023” 投入千萬(wàn)級(jí)資金推動(dòng)科技與文化融合發(fā)展
- (2023-06-26)58同城速聘自營(yíng)官方電話 58同城速聘|熱頭條
- (2023-06-26)日媒:TierIV開(kāi)始銷(xiāo)售自動(dòng)駕駛EV巴士 車(chē)輛采購(gòu)自比亞迪
- (2023-06-26)【社區(qū)服務(wù)】濃情端午 共享安康——九里亭街道殘聯(lián)開(kāi)展端午包香囊活動(dòng) 全球播資訊
- (2023-06-26)每日快報(bào)!變形計(jì)里的農(nóng)村孩子現(xiàn)狀(變形計(jì)中的他們都長(zhǎng)大了
- (2023-06-26)打車(chē)軟件顯示目的地為陰曹地府 官方回應(yīng):為虛假地名已督促下架
- (2023-06-26)嚴(yán)查!最高罰10萬(wàn)元!余杭立案查處7起,現(xiàn)場(chǎng)曝光!
- (2023-06-26)618超值價(jià)格入手三星PRO Plus 256GB TF存儲(chǔ)卡-每日播報(bào)
- (2023-06-26)德系臻裝引領(lǐng) 保億御江臨風(fēng)的精質(zhì)甄選
- (2023-06-26)建發(fā)收購(gòu)紅星美凱龍29.95%股份已完成過(guò)戶
- (2023-06-26)我知道你的秘密漫畫(huà)_我知道系統(tǒng)_全球今日?qǐng)?bào)
- (2023-06-26)記者:若約維奇今夏轉(zhuǎn)會(huì),皇馬可獲得50%的轉(zhuǎn)會(huì)分成 全球動(dòng)態(tài)
- (2023-06-26)天天視點(diǎn)!建行融e貸與快貸區(qū)別_建行融資快貸利息怎么算
- (2023-06-26)新粵彩報(bào)紙?jiān)诰€看_新粵彩100
- (2023-06-26)堅(jiān)強(qiáng)不屈的意思是(堅(jiān)強(qiáng)不屈的意思)
- (2023-06-26)最資訊丨居廟堂之高則憂其民處江湖之遠(yuǎn)則憂其君正確(居廟堂之高則憂其民處江湖之遠(yuǎn)則憂其君)
- (2023-06-26)環(huán)球熱頭條丨端午三天假期數(shù)據(jù)出爐,全國(guó)最擁堵的6個(gè)地方:花錢(qián)找罪受
- (2023-06-26)香港財(cái)政司司長(zhǎng):與央行就數(shù)字人民幣跨境零售支付的合作進(jìn)入第二階段測(cè)試 每日看點(diǎn)
- (2023-06-26)熱點(diǎn) | 1.06億人次,373.10億元!_環(huán)球信息