我正在为我开发的一个应用程序构建一个 Linux 包。我让它在启动时检查更新,并通过触发安装更新sudo apt-get install <package>
,这当然会提示用户获得权限。
实现此目的的最佳实践/适当方法是什么?我当前的方法是否常见或理想?如果不是,我该怎么办?
我不是想找人帮我做这些工作;我只是希望有人能给我指明正确的方向,让我的应用程序能够遵循预期的行为。非常感谢!
答案1
您应该提供一个公共存储库,比如 PPA,并依靠包管理器来查找和安装更新,而不是在您的程序内部执行此操作:
- 为了使您的更新能够通过安装,
apt-get
您需要apt-get update
先运行以加载更新的软件包信息。这可能需要相当长的时间并导致大量网络流量。 apt-get
普通用户可能根本无法使用任何命令。- 您的
apt-get
调用可能会被阻止,因为另一个进程正在访问包管理器,或者它可能会阻止其他进程这样做。
答案2
如果你使用存储库,你可能依赖于unattended-upgrades
并添加配置文件以自动从存储库下载并安装升级。例如,/etc/apt/apt.conf.d
named中的文件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
。