如何使用 Python APT 将特定的配置文件标记为覆盖?
How can I mark a specific conffile for overwriting using Python APT?
我正在使用 Python APT wrapper library 编写交互式 APT 界面。我想处理 APT 在 apt-upgrade.
期间提示是否覆盖或保留配置文件的情况
这对应于命令行 APT 中的以下用户交互:
Configuration file '/var/usr/myconf.cfg'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** myconf.cfg (Y/I/N/O/D/Z) [default=N] ? Y
Installing new version of config file var/usr/myconf.cfg ...
Status change
我发现apt.progress.base.InstallProgress有一个回调函数conffile,当APT提示是否覆盖时调用。
它具有以下签名:
def conffile(self, current, new):
"""(Abstract) Called when a conffile question from dpkg is detected."""
参数current和new是涉及的两个文件路径。我如何使用 Python APT 以编程方式将配置文件标记为覆盖或保留?
Python APT 库似乎没有提供任何解决方法。我最终将 Dpkg::Options { "–force-confnew"; }
写入 /etc/apt/apt.conf.d/local
,它总是用新的 conf 文件覆盖旧的 conf 文件;我无法花时间扩展库。
获得更多用户交互的一种可能解决方案是使用 apt 命令执行手动干 运行 并从控制台输出解析所有配置文件冲突。然后可以提示用户为所有 conf 文件提供解决方案并编写
/etc/apt/apt.conf.d/local
适当地 + 从 Python APT 库调用升级。
更新:answerSeeker 找到了一种以编程方式设置这些选项的方法 - 请参阅 。
我正在使用 Python APT wrapper library 编写交互式 APT 界面。我想处理 APT 在 apt-upgrade.
期间提示是否覆盖或保留配置文件的情况这对应于命令行 APT 中的以下用户交互:
Configuration file '/var/usr/myconf.cfg'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** myconf.cfg (Y/I/N/O/D/Z) [default=N] ? Y
Installing new version of config file var/usr/myconf.cfg ...
Status change
我发现apt.progress.base.InstallProgress有一个回调函数conffile,当APT提示是否覆盖时调用。
它具有以下签名:
def conffile(self, current, new):
"""(Abstract) Called when a conffile question from dpkg is detected."""
参数current和new是涉及的两个文件路径。我如何使用 Python APT 以编程方式将配置文件标记为覆盖或保留?
Python APT 库似乎没有提供任何解决方法。我最终将 Dpkg::Options { "–force-confnew"; }
写入 /etc/apt/apt.conf.d/local
,它总是用新的 conf 文件覆盖旧的 conf 文件;我无法花时间扩展库。
获得更多用户交互的一种可能解决方案是使用 apt 命令执行手动干 运行 并从控制台输出解析所有配置文件冲突。然后可以提示用户为所有 conf 文件提供解决方案并编写
/etc/apt/apt.conf.d/local
适当地 + 从 Python APT 库调用升级。
更新:answerSeeker 找到了一种以编程方式设置这些选项的方法 - 请参阅