如何分發 deb 包以便能夠從程式碼安裝更新
我製作了一個包含我的軟體二進製文件的 deb 包。我還製作了一個 repo 並對其進行了配置,以便使用者可以使用
sudo apt-get update mypackage && sudo apt-get install mypackage
. 安裝後,我的應用程序的二進製文件將被提取到/opt/mypackage
,.desktop 文件將被提取到,/usr/share/applications
這樣使用者就可以毫無問題地啟動應用程序。我想知道的是,當我的應用程序在使用者系統中可用時,我如何從程式碼中安裝更新,就像在其他應用程序中一樣?我問是因為它在執行時需要 root 密碼
apt-get install
或sudo gdebi mypackage
.在我想要推送新更新的那一刻 - 我建構了新的 .deb 包並將其放入儲存庫。我應該以其他方式嗎?或者,當我決定將二進製文件放在 /opt 目錄中時,也許我錯了?
任何幫助將不勝感激。如果您知道一些實現這部分功能的開源項目,您可以分享一下嗎?此外,我可以創建一個簡單的儲存庫來重現我在這裡嘗試解釋的內容。
將軟體作為一個包(
.deb
或 RPM 種類)提供和允許軟體自行更新是相互排斥的。正如您所注意到的,安裝或升級打包軟體只能由管理員完成,並且預計系統將由其管理員保持更新。在許多系統上,這通過諸如 GNOME 軟體之類的工具變得更容易,它會告訴使用者待處理的更新並在不手動執行的情況下應用它們apt update
等。您提到的“其他”程序可以自行更新,只有當他們執行的使用者可以寫入他們安裝的位置時才能這樣做。手動安裝的二進製文件通常是這種情況,但許多更大的程序近年來已經遠離這一點——Google Chrome 和 VS Code 現在從包儲存庫安裝並按預期執行。
您解決了 Firefox 案例中的限制,但這是一個壞主意。不建議在不需要 root 的情況下以 root 執行軟體,並且讓打包的軟體更新本身意味著打包系統不再知道安裝了什麼。
另一點是,大多數分發包軟體都明確禁用更新檢查——一方面,它們沒有用,因為它們不能被直接操作,另一方面,禁用更新檢查意味著軟體不需要“打電話回家” ”,很多使用者都很關心。