Package-Management

Snap for Linux 的目的是什麼?

  • February 5, 2021

當我第一次切換 Linux 時,我喜歡它的一件事是它的包管理。有一些項目將 Linux 風格的包管理引入 Mac(Homebrew)和 Windows(Chocolatey)。

我越來越多地看到為 Linux 提供 Snap 安裝說明的應用程序,但添加第二個包管理系統的目的是什麼?新的應用程序最終會遷移到 Apt(或其他 Linux 包管理系統),還是 Linux 使用者必須在同一系統上執行兩個不同的包管理器才能獲得他們想要的所有應用程序?

Linux 上的傳統包管理有很多優點。依賴關係可以共享,這使事情變得小而高效。他們通常會經過某種委員會,因此會有幾隻眼睛(這在 Linux 發行版之間有所不同,有些比其他發行版少)。通常也有一個記錄錯誤的中心位置。

然而,傳統的包管理有一些缺點。

例如,當您發布新版本的 libfoo 時,幾乎每個使用該發行版的人都會獲得該新版本。這意味著發行版維護者在發布更新時必須非常保守。他們不能倒退。

此外,很少看到應用程序的上游開發人員完成為各種 Linux 發行版打包他們的應用程序的工作。尤其是當他們意識到他們無法像預期的那樣輕鬆發布更新時。例如,在 Ubuntu 上,一旦穩定版本被刪減,通常不允許將新功能添加到發行版中的軟體中。只有安全修復和錯誤修復。甚至那個過程是沉重的。這就是 Ubuntu 保持穩定的方式,但這也是 Ubuntu 存檔在發布的整個生命週期中變得陳舊的方式。

另一個問題(這是不利的還是有利的,取決於您如何看待它):通常,為了將軟體放入 Linux 發行版,它必須是開源的。並非一切都是。

快照在幾個方面有所不同。首先,它們的依賴被捆綁到同一個包中。這意味著它們不能被共享,因此它們不如傳統包那麼高效,但這樣做的原因是為了解決我剛剛提供的 libfoo 範例:它使 snap 開發人員可以自由地更改他們認為合適的東西不會破壞不相關的軟體。因此,它們可以完全從 Linux 發行版中分發出來,無需任何委員會參與。事實上,看到應用程序的上游開發人員為他們的應用程序創建和維護快照是很常見的,因為他們知道他們可以隨時向使用者發送更新,如果他們破壞了某些東西,他們只會破壞他們的使用者,他們的 libfoo 損壞不是發行版的一半。

快照也只是包含……東西的 squashfs 圖像。沒有許可限制。這使得微軟可以快速發布 Skype,或者 Spotify 發布他們的播放器。

由於它們捆綁了依賴項並且只是一個 squashfs 映像,因此無論該發行版的內置包管理系統如何,都可以很容易地在任何 Linux 發行版上安裝和執行它們。

新的應用程序最終會遷移到 Apt(或其他 Linux 包管理系統),還是 Linux 使用者必須執行兩個不同的包管理器才能獲得他們想要的所有應用程序?

是的,傳統的依賴管理系統不會消失。隨著時間的推移,新軟體將通過 apt 提供。但這將繼續由只希望軟體 apt 的社區成員完成,而不是由上游開發人員自己完成。並且根據您的 Linux 發行版的工作方式,該軟體可能會隨著時間的推移而變得陳舊,直到您升級到下一個。一般來說,如果你想要最新的東西,你需要從上游開發者那裡得到它。正如您所注意到的,他們似乎越來越多地選擇快照來做到這一點。PPA(或類似的)是另一種選擇。

無論如何,這並不是一個完整的優缺點列表,我們可以在這裡討論更多內容。我只是想指出,每種使用軟體的方式都有其目的,而且都不會消失。

引用自:https://unix.stackexchange.com/questions/632649