首先,一些背景知识。我正在开发一个新版本的产品,它将添加一个 Linux 版本,主要由一个守护程序组成。该产品的其他平台版本将支持定期自动更新,如果可能的话,我们希望 Linux 版本也能这样做。该产品适用于服务器,而不是工作站/台式机,并且将是一个主要是“一劳永逸”的守护进程,可以提前配置或通过远程控制台进行配置。
在 Linux 上分发软件的惯用方法是通过发行版的本机包管理器或直接编译它,但据我所知,这也是只手动升级包以让用户控制的文化的一部分。
我们有两类用户:A 类用户拥有大型部署,我们假设他们将能够访问管理工具和队列管理,从而能够自动运行包管理器升级;B 类用户拥有一台或几台服务器,这些服务器大多是手动管理的。我们认为 B 类用户中的一些人会希望选择自动更新功能(如果有),而 A 类用户不希望它干扰他们的自动化解决方案。
以Ubuntu为例,有没有一种可用的、大多数Linux管理员可以接受且可靠的自动更新包的解决方案?从技术上讲,自动运行apt-get --only-upgrade install acme
就可以解决问题,但之前的答案验证了我的理论,即大多数 Linux 管理员认为程序自行启动此操作是不可接受的。
在许多情况下,不会有本地用户登录并监控我们可以询问的服务器(我们认为大量用户甚至不会安装或启用 GUI),所以我不认为“询问,然后当他们同意时启动自动更新”是一个适合所有人的解决方案。
是否还有其他我应该考虑的选项和/或已经以很好的方式做到这一点的软件包?
(我有预感,实际的答案可能是“如果 B 组想要此功能,让他们安装 A 组正在使用的解决方案,否则让他们手动更新;根本不提供任何功能”。这个问题是为了让确保我们不会错过任何能让 A 组和 B 组都满意的选项,并且仍然非常适合包管理、Linux 和发行版自己的文化。)
答案1
...据我所知,这也是软件包文化的一部分,只能手动升级以让用户控制。
是的!那是对的。
对于大多数 Linux 管理员来说,程序自行[运行]是否可以接受
apt-get --only-upgrade install acme
?
这已经进入了舆论领域,但我说这是绝对不能接受的。简而言之,人们对于如何使用 Linux 有不同的用例。对于某些人来说,自动更新是可取的。但对于高级用户来说,比如正在录音会话中的人,在后台自动消耗资源是不可接受的。
另一种选择是让您的申请查看进行更新(仅针对其自身,而不是整个操作系统)并通知用户。 Skype 和syncthing 就是这样的例子。
答案2
您可以创建一个deb
(您可能还需要rpm
suse 等),然后创建一个包存储库。让您的用户将存储库添加到配置中,然后安装应用程序。然后它将与所有其他软件一起管理。
以下是一些执行此操作的供应商/应用程序(所有这些都在默认存储库中可用(但上游提供更新的版本):
- 谷歌浏览器
- Oracle/VirtualBox
- 码头工人/码头工人