為什么程序員喜歡為 Linux 打包
如今,人們比以往任何時(shí)候都喜愛(ài) Linux。在這個(gè)系列中,我將分享使用 Linux 的 21 個(gè)不同理由。今天,我將談一談是什么讓 Linux 的打包成為程序員的理想選擇。
程序員喜歡編程。這可能看起來(lái)是一個(gè)顯而易見(jiàn)的說(shuō)法,但重要的是要明白,開發(fā)軟件所涉及的不僅僅是編寫代碼。它包括編譯、文檔、源代碼管理、安裝腳本、配置默認(rèn)值、支持文件、交付格式等等。從一個(gè)空白的屏幕到一個(gè)可交付的軟件安裝程序,需要的不僅僅是編程,但大多數(shù)程序員寧愿編程也不愿打包。
什么是打包?
當(dāng)食物被送到商店購(gòu)買時(shí),它是被包裝好的。當(dāng)直接從農(nóng)民或從環(huán)保的散裝或桶裝商店購(gòu)買時(shí),包裝是你所帶的任何容器。當(dāng)從雜貨店購(gòu)買時(shí),包裝可能是一個(gè)紙板箱、塑料袋、一個(gè)鐵罐等等。
當(dāng)軟件被提供給廣大計(jì)算機(jī)用戶時(shí),它也必須被打包起來(lái)。像食品一樣,軟件也有幾種打包方式。開源軟件可以不進(jìn)行打包,因?yàn)橛脩粼讷@得原始代碼后,可以自己編譯和打包它。然而,打包也有好處,所以應(yīng)用程序通常以某種特定于用戶平臺(tái)的格式交付。而這正是問(wèn)題的開始,因?yàn)檐浖母袷讲⒉恢挥幸环N。
對(duì)于用戶來(lái)說(shuō),軟件包使安裝軟件變得容易,因?yàn)樗械墓ぷ鞫加上到y(tǒng)的安裝程序完成。軟件被從軟件包中提取出來(lái),并分發(fā)到操作系統(tǒng)中的適當(dāng)位置。幾乎沒(méi)有任何出錯(cuò)的機(jī)會(huì)。
然而,對(duì)于軟件開發(fā)者來(lái)說(shuō),打包意味著你必須學(xué)會(huì)如何創(chuàng)建一個(gè)包 —— 而且不僅僅是一個(gè)包,而是為你希望你的軟件可以安裝到的每一個(gè)操作系統(tǒng)創(chuàng)建一個(gè)獨(dú)特的包。更加復(fù)雜的是,每個(gè)操作系統(tǒng)都有多種打包格式和選項(xiàng),有時(shí)甚至是不同的編程語(yǔ)言。
為 Linux 打包
傳統(tǒng)上,Linux 的打包方式似乎是非常多的。從 Fedora 衍生出來(lái)的 Linux 發(fā)行版,如 Red Hat 和 CentOS,默認(rèn)使用 .rpm 包。Debian 和 Ubuntu(以及類似的)默認(rèn)使用 .deb 包。其他發(fā)行版可能使用其中之一,或者兩者都不使用,選擇自定義的格式。當(dāng)被問(wèn)及時(shí),許多 Linux 用戶說(shuō),理想情況下,程序員根本不會(huì)為 Linux 打包他們的軟件,而是依靠每個(gè)發(fā)行版的軟件包維護(hù)者來(lái)創(chuàng)建軟件包。所有安裝在 Linux 系統(tǒng)上的軟件都應(yīng)該來(lái)自該發(fā)行版的官方軟件庫(kù)。然而,目前還不清楚如何讓你的軟件可靠地被一個(gè)發(fā)行版打包和包含,更不用說(shuō)所有的發(fā)行版了。
Linux 的 Flatpak
Flatpak 打包系統(tǒng)是為了統(tǒng)一和去中心化 Linux 作為開發(fā)者的交付目標(biāo)而推出的。通過(guò) Flatpak,無(wú)論是開發(fā)者還是其他人(Linux 社區(qū)的成員、不同的開發(fā)者、Flatpak 團(tuán)隊(duì)成員或其他任何人)都可以自由地打包軟件。然后他們可以將軟件包提交給 Flathub,或者選擇自我托管軟件包,并將其提供給幾乎任何 Linux 發(fā)行版。Flatpak 系統(tǒng)適用于所有 Linux 發(fā)行版,所以針對(duì)一個(gè)發(fā)行版就等于針對(duì)所有發(fā)行版。
Flatpak 技術(shù)如何工作
Flatpak 具有普遍吸引力的秘密是一個(gè)標(biāo)準(zhǔn)基礎(chǔ)。Flatpak 系統(tǒng)允許開發(fā)者引用一套通用的軟件開發(fā)者工具包(SDK)模塊。這些模塊由 Flatpak 系統(tǒng)的維護(hù)者進(jìn)行打包和管理。當(dāng)你安裝 Flatpak 時(shí),SDK 會(huì)根據(jù)需要被拉入,以確保與你的系統(tǒng)兼容。任何特定的 SDK 只需要一次,因?yàn)樗膸?kù)可以在任何 Flatpak 中共享。
如果開發(fā)者需要一個(gè)尚未包含在現(xiàn)有 SDK 中的庫(kù),開發(fā)者可以在 Flatpak 中添加該庫(kù)。
結(jié)果不言自明。用戶可以從一個(gè)叫做 ??Flathub?? 的中央倉(cāng)庫(kù)在任何 Linux 發(fā)行版上安裝數(shù)百個(gè)軟件包。
開發(fā)者如何使用 Flatpak
Flatpak 被設(shè)計(jì)成可重復(fù)的,所以構(gòu)建過(guò)程很容易被集成到 CI/CD 工作流程中。Flatpak 是在一個(gè) ??YAML?? 或 JSON 清單文件中定義的。你可以按照我的 ??介紹性文章?? 創(chuàng)建你的第一個(gè) Flatpak,你也可以在 ??docs.flatpak.org?? 閱讀完整的文檔。
Linux 讓它變得簡(jiǎn)單
在 Linux 上創(chuàng)建軟件很容易,為 Linux 打包也很簡(jiǎn)單,而且可以自動(dòng)化。如果你是一個(gè)程序員,Linux 使你很容易忘記打包這件事,因?yàn)樗恍枰槍?duì)一個(gè)系統(tǒng),并可以整合到你的構(gòu)建過(guò)程中。