我正在创建一个产品的 deb 包,该产品部分开源,部分专有。为了重用某些发行版(例如 Ubuntu)的内置功能来监视存储库列表并在新版本可用时更新软件包,我可能会创建这样的存储库。
问题是该软件包的专有部分取决于对有限间隔版本有效的许可证(对一年内的所有版本有效)。这意味着,在某个时间点,当新版本可用时,至少警告用户他的许可证对于新版本无效是件好事。
有没有办法进行检查并与用户交互?我看到 deb 包本身中有一些脚本可以在安装之前执行,但我不知道它们是否可以与用户交互并中止包安装。
答案1
你想要的是debconf
。看http://www.fifi.org/doc/debconf-doc/tutorial.html
答案2
是否可行取决于特定 Linux 发行版的包管理。通常,您可以包含自己的脚本,称为包安装前/安装后。
请参阅Debian 政策手册 - 第 6 章 软件包维护者脚本例如。
无论如何,每个有一点经验的用户都能够绕过这个“保护”。
如果您确实想包含这种保护(恕我直言,这毫无用处,而且弊大于利),请在文件的二进制文件中进行此操作。
答案3
您可以通过询问 debconf 问题来设置和删除您的存储库,如果答案是肯定的,则将文件复制到 source.list.d 或从 source.list.d 中删除文件。用户通常期望对我们从何处获取更新进行高级别的控制,并且添加源的安全影响超出了当前包的安全性,因此请轻松禁用此功能。