簡體   English   中英

發布Ubuntu

[英]Releasing for Ubuntu

我已經構建了一些要為Ubuntu發布的C ++軟件。 有什么方法,您能推薦什么? 生成.deb文件並為其設置一個apt repo是最好的方法嗎? 關於make install ,它被認為是可接受的軟件安裝方式嗎?

對我來說,最簡單,甚至對用戶最透明的就是,只有一個github存儲庫,在其中可以運行make install一次make install所有程序。

我是否總是將二進制文件安裝到/usr/bin

其中一個程序包含Python 3庫代碼,應該安裝在/usr/lib/python3/dist-packages嗎? (我不想創建一個pip包,這會使安裝更加困難-並且浪費更多的時間。)該程序還包含Python 3示例/教程,供用戶進行調整和學習,在哪里可以做?安裝那些? 我是否創建~/my-prog-tutorial-dir/來放入它們? 如果是這樣:我應該如何命名該目錄?

編輯:如果我只是在壓縮包中釋放靜態鏈接的二進制文件,最終會破壞什么? Libc? 在Ubuntu LTS之間是否有通常會更改的主要應用程序API? 我只使用pthreads,X11和OpenGL,所以我懷疑靜態鏈接的二進制文件可能是一個相當穩定的選擇?

通常,構建二進制軟件包將使您的軟件更易於用戶安裝和更新。 python包也是如此。 通常,有一些工具可以從pip包中生成apt包,因此您可以將python代碼作為二進制包的依賴項列出。

您可能會看到打包和安裝程序在浪費您的時間,但是僅提供源分發會浪費用戶的時間。 用戶並不需要經常檢查github是否有新版本,並且如果他們只想使用您的軟件,他們通常不需要安裝所有構建依賴項。 如果您的軟件面向開發人員,那么這可能不是什么大問題,但用戶仍然需要做額外的工作。

例如,一般約定是將它們放在python軟件包的/ usr / share / doc / myprogram / samples或samples目錄中。

正如Miles Budnek指出的那樣, Ubuntu發布軟件的最佳方法取決於軟件本身及其目標受眾。

您的目標是降低軟件使用的障礙。 如果您以軟件開發人員為目標(例如,開發應該由他人編輯的源文件),或者正在開發應包含在其他項目中的代碼段(例如,gnulib),則最好僅提供資源和文檔。

在我目前想象的任何其他情況下(包括以開發人員為目標的情況),提供預編譯的二進制文件是更好的選擇。 在這種情況下,最佳解決方案是 Ubuntu中安裝該軟件。 在這種情況下, 如何使我的軟件進入Ubuntu? 正如Mark K所建議的那樣,它提供了許多有用的信息。

將軟件移植到Debian或Ubuntu可能很困難,可能需要大量時間(您必須遵守很多您可能不了解的政策,並且必須找到贊助商),並且您很快就會知道一個關鍵點如Debian上游指南中所述,為您的軟件(例如,自動工具,cmake,distutils等)使用一個體面且流行的構建系統。 遵守該指南還將對其他發行版的用戶有所幫助。

通常,我建議按以下順序進行:

  1. 提供資源;
  2. 使用通用的構建系統(從系統管理員的角度(即,安裝軟件的人員的角度來看,自動工具在我對Posix系統的經驗中效果最好);
  3. 創建一個二進制包(請記住,您必須對其進行維護,否則您的用戶可能會遇到二進制不兼容的情況);
  4. 將包添加到私有存儲庫中(我建議適當地完成此任務);
  5. 嘗試在選擇的分銷中獲取包裝(請記住維護成本)。

我不建議的另一種選擇是提供靜態鏈接的構建。 這減少了二進制不兼容的可能性,但增加的bug修復(例如,如果錯誤是在依賴)和安全性的成本,在解釋這個及以下意見。 避免靜態鏈接的另一個原因是,為了利用硬件加速(例如OpenGL),是否存在相同ABI的幾種實現,但是您也可以混合使用靜態鏈接和動態鏈接。

最后,您可能還會提供一個容器,例如docker ,以運送您的軟件及其所有依賴項:您的用戶將只需要docker即可非常方便地運行您的應用程序。 但是,在大多數情況下,這可能是矯solution過正,並且是否可行,取決於您的應用程序和目標受眾。

我被要求在評論中擴展我的評論,所以我這樣做。

我正在談論的項目稱為Woodpecker hash Bruteforce ,我將其作為Mac OS,Windows和Linux的純歸檔可執行文件分發。

啄木鳥哈希Bruteforce僅需考慮兩個依賴項(用戶無需安裝任何東西):OpenSSL和Botan-用於哈希化的庫。 我在Mac上有兩個虛擬機,用於構建項目和幾個腳本來自動執行該過程。 我正在使用Docker(與VirtualBox合作)和VMware Fusion。

上面我說過,用戶無需擔心任何第三方庫,因為所有內容都與可執行文件靜態鏈接:您只需從官方網站下載適當的文件,然后將其取消存檔(如果需要), sudo chmod +x可執行文件以及而已!

它適用於任何版本的Linux,包括Ubuntu(我在此處進行構建的地方)和Kali Linux。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM