自我更新包的最佳实践?

自我更新包的最佳实践?

我正在为我开发的一个应用程序构建一个 Linux 包。我让它在启动时检查更新,并通过触发安装更新sudo apt-get install <package>,这当然会提示用户获得权限。

实现此目的的最佳实践/适当方法是什么?我当前的方法是否常见或理想?如果不是,我该怎么办?

我不是想找人帮我做这些工作;我只是希望有人能给我指明正确的方向,让我的应用程序能够遵循预期的行为。非常感谢!

答案1

您应该提供一个公共存储库,比如 PPA,并依靠包管理器来查找和安装更新,而不是在您的程序内部执行此操作:

  • 为了使您的更新能够通过安装,apt-get您需要apt-get update先运行以加载更新的软件包信息。这可能需要相当长的时间并导致大量网络流量。
  • apt-get普通用户可能根本无法使用任何命令。
  • 您的apt-get调用可能会被阻止,因为另一个进程正在访问包管理器,或者它可能会阻止其他进程这样做。

答案2

如果你使用存储库,你可能依赖于unattended-upgrades并添加配置文件以自动从存储库下载并安装升级。例如,/etc/apt/apt.conf.dnamed中的文件60my-repo-upgrade包含:

Unattended-Upgrade::Allowed-Origins {
    "<origin>:<archive>";
};

其中<origin><archive>来自于你的仓库文件。 可以从 的输出中Release获得apt-cache policy。 例如,Google Chrome 的仓库有<origin>Google, Inc.<archive>stable

$ apt-cache policy | grep -i google
 500 http://dl.google.com/linux/chrome/deb/ stable/main i386 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com
 500 http://dl.google.com/linux/chrome/deb/ stable/main amd64 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com

这样,用户可以根据需要修改配置并决定时间表unattended-upgrades

相关内容