Ser*_*mov 2 repository deb software-distribution
我制作了一个 deb 包,其中包含我的软件的二进制文件。此外,我制作了一个 repo 并对其进行了配置,以便用户可以使用sudo apt-get update mypackage && sudo apt-get install mypackage
. 安装后,我的应用程序的二进制文件将被解压缩到/opt/mypackage
.desktop 文件中,/usr/share/applications
以便用户可以毫无问题地启动应用程序。
我想知道的是,当我的应用程序在用户系统中可用时,如何从代码安装我的应用程序更新,就像在其他应用程序中一样?我问是因为它在运行apt-get install
或sudo gdebi mypackage
.
在我想要推送新更新的那一刻 - 我构建了新的 .deb 包并将其放入存储库。我应该以其他方式做吗?或者也许我决定将二进制文件放在 /opt 目录中是错误的?
任何帮助将不胜感激。如果你知道一些开源项目实现了这部分功能,可以分享一下吗?此外,我可以创建一个简单的存储库来重现我在此处尝试解释的内容。
将软件作为软件包(.deb
或 RPM 种类)提供和允许软件自行更新是相互排斥的。如您所见,安装或升级打包软件只能由管理员完成,并且希望系统由管理员保持更新。在许多系统上,通过诸如 GNOME 软件之类的工具可以更容易地做到这一点,这些工具会告诉用户挂起的更新并负责应用它们而无需手动运行apt update
等。
您提到的“其他”程序可以自行更新,只有当它们运行的用户可以写入它们安装的位置时才能这样做。手动安装的二进制文件通常是这种情况,但许多更大的程序近年来已经摆脱了这一点——谷歌浏览器和 VS Code 现在从包存储库安装并按预期运行。
您解决了 Firefox 案例中的限制,但这是个坏主意。不建议在不需要 root 时以 root 身份运行软件,让打包的软件更新本身意味着打包系统不再知道安装了什么。
另一点是,大多数分发包软件明确禁用更新检查——一方面,它们没有用,因为它们不能被直接操作,另一方面,禁用更新检查意味着软件不需要“打电话回家”,这是很多用户关心的。