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