如何分发 deb 包以便能够从代码安装更新

如何分发 deb 包以便能够从代码安装更新

我制作了一个 deb 包,其中包含我的软件的二进制文件。此外,我还创建了一个存储库并对其进行了配置,以便用户可以使用sudo apt-get update mypackage && sudo apt-get install mypackage.安装后,我的应用程序的二进制文件将被提取到/opt/mypackage,.desktop 文件将被提取到,/usr/share/applications以便用户可以毫无问题地启动应用程序。

我想知道的是,当用户系统中提供了应用程序的更新(就像在其他应用程序中所做的那样)时,如何从代码安装应用程序的更新?我这么问是因为它在运行时需要 root 密码apt-get installsudo gdebi mypackage.

目前,当我想推送新更新时 - 我构建新的 .deb 包并将其放入存储库。我应该用其他方式做吗?或者也许我在决定将二进制文件放入 /opt 目录时错了?

任何帮助将不胜感激。如果您知道一些实现这部分功能的开源项目,可以分享一下吗?另外,我可以创建一个简单的存储库来重现我试图在此处解释的内容。

答案1

将软件作为软件包(.deb或 RPM 类型)提供和允许软件自行更新是相互排斥的。正如您所注意到的,安装或升级套装软件只能由管理员完成,并且预计系统将由其管理员保持更新。在许多系统上,这可以通过 GNOME 软件等工具变得更容易,它会告诉用户待处理的更新并负责应用它们,而无需手动运行apt update等。

您提到的“其他”程序可以自行更新,只有当它们运行的​​用户可以写入它们安装的位置时才能更新。手动安装的二进制文件通常会出现这种情况,但许多较大的程序近年来,Google Chrome 和 VS Code 已经摆脱了这种情况,现在可以从包存储库安装并按预期运行。

您解决了 Firefox 的限制,但这是一个坏主意。不建议在不需要 root 身份时以 root 身份运行软件,并且让打包的软件自行更新意味着打包系统不再了解安装的内容。

另一点是,大多数发行版打包的软件都明确禁用更新检查 - 一方面,它们毫无用处,因为它们无法直接执行操作,另一方面,禁用更新检查意味着软件不需要“打电话回家” ”,这是很多用户关心的。

相关内容