2016-11-07 88 views
-1

我認爲它是一個相當普遍的問題,但我需要社區的意見,所以我發佈這個問題。Linux上的通用安裝程序

使用案例:我想爲我想支持的所有Linux發行版(32位,64位)創建單個包(32位)。

問題:安裝

  • 需要能夠運行前/後安裝腳本。
  • 應該能夠在32位和64臺的機器
  • 應該能夠支持舊的和新的發行版上運行(CentOS 6的以上)
  • 應該有更新包的在線資源庫。
  • 應該可以在沒有X服務器的情況下運行
  • 不應該對使用標準yum/zypper/apt命令無法安裝的軟件有任何依賴。不應該依賴任何非標準的存儲庫。

我遇到了這個鏈接: https://www.reddit.com/r/linux/comments/4ohvur/nix_vs_snap_vs_flatpak_what_are_the_differences/ 它列出了許多辦法,但他們都不似乎滿足上述所有要求。 (還是我忽略了的東西)

另外我看着下面兩種選擇:

  1. QT安裝FWK(需要X來運行,如果我是正確的)
  2. 與焦油自解壓腳本捆綁在一起。

適合所有需求的唯一解決方案是「帶有捆綁tars的自解壓腳本」。但它需要很多工作,有效地管理所有安裝/升級的東西。在我繼續使用這個替代方案之前,任何人都可以確認他/她是否有成功爲許多發行版創建單個包?

+0

另請註明您對問題提出異議的原因。 downvote並沒有意見是沒有意義的。 –

回答

1

我不相信用自解壓存檔滾動自己的安裝程序的概念。每個發行版都不同,應該使用自己的安裝機制解決。另外,編寫你自己的安裝程序正在重新發明車輪。

我會宣傳使用所有發行版的打包方法,你的目標。基本上,一個SPEC文件通常足以支持CentOS 6,7和所有現代Fedora版本。使用mock或copr服務爲您的目標發行版生成所有二進制包;那麼debian規則文件應該足以生成Debian,Ubuntu和Mint包。如果你想支持Arch Linux,也可以添加一個pacman腳本(這很簡單)。

不可否認,這樣,你最終得到了一大堆不同的包,而不是一個。但是,現在您已經爲每個系統安裝了適合該系統的安裝程序,並且與該發行版上提供的庫鏈接,因此,您不必包括像平板包等所有依賴項。

安裝從特定於發行版的軟件包幾乎總是比通過一些自行解壓縮的歸檔文件安裝的「更流暢」,這種歸檔文件實際上並不是針對我的特定發行版本設計的,因此這對您的用戶來說可能是一大優點。另外,如果你以後決定你的軟件需要補丁,那麼安裝軟件包通常會使它非常容易和穩定地提供更新路徑。

+0

首先,感謝Marcus給出了一個解釋,而不是downvoting。此外,我已經擁有了所有的CMake文件,爲我生成了debs和RPM,這就是我現在如何分發我的包。這是沒有問題的,但是由於我們想支持的發行版數量很大(計算所有傳統和新發行版,32位和64位),目前的問題是要分發的包的數量。 –

+0

但是:我不明白爲什麼減少軟件包的數量確實是一件好事。你看,我們都同意每個目標發行版的一個包是用戶的最佳解決方案;所以雖然你可能簡單地把所有這些軟件包放到同一個tar中,但你實際上並沒有獲得任何優勢。 –

+0

因此,即使我已經有deb和rpm存儲庫設置,我們不想再使用它們。整個想法是隻有一組二進制文件,並以某種方式將它們捆綁在「安裝程序」中。這意味着我將不再使用rpms和debs,而只需要在用戶機器上安裝這些二進制文件的「一些安裝程序」。 –