在非标准 shell 中安装软件包时,消息“无法初始化前端:对话框”的实际后果是什么?

在非标准 shell 中安装软件包时,消息“无法初始化前端:对话框”的实际后果是什么?

当我在非交互式 shell 中从 Emacs 安装一些软件包时,例如从文件中安装org-babel某些软件包时,会产生以下消息:

debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline

我知道,以 mysql 为例,它会提示输入 root 密码,或者询问用户的首选项或设置的其他一些内容。

我认为在这种情况下,安装程序可能会使用一些默认设置并继续。

所以我主要关心的是:

  1. 后果会这么严重吗?

  2. 是否有某种与每个包相关的响应文件可以传递给安装程序,或者某些预设位置的一些默认文件可用于此目的?

答案1

正如您引用的消息所示,如果Dialog无法使用前端(例如,从 Emacs 内运行软件包安装命令时),软件包配置系统将使用更简单的Readline前端。

实际上,这意味着,您不会在屏幕中央的文本框中单独获取偏好问题,而是将它们作为常规文本,一个接一个地获取,以及来自 的其他消息debconf。它应该能够显示所有相同的问题,只是它们看起来与您可能习惯的有点不同。在某些情况下,您编辑键入内容的方式也可能受到更多限制,即箭头键可能不起作用,限制您只能退格。

如果Readline前端也不可用,并且包没有预先配置的设置,则将使用内置默认值。仅当软件包的设置没有对应的默认值时,软件包安装可能会失败。

  1. 后果会这么严重吗?

如果您没有对以不同方式显示的偏好问题感到困惑,那就还不错。只要保持冷静,阅读计算机向您显示的消息,您就能弄清楚。

  1. 是否有某种响应文件[...]?

是的,有一些方法可以自动化配置。确保您已debconf-doc安装该软件包,然后使用man 7 debconf并阅读标题为预配置包无人值守的软件包安装

基本上,如果您有尚未安装的软件包,您可以使用

dpkg-preconfigure <package-name_version.deb>

在实际安装软件包之前查看并回答软件包的所有问题。之后(或在已安装该软件包的系统中),您可以使用以下命令查看存储的首选项:

debconf-show <package-name>

然后,您可以选择要存储在文件中的设置,如下所示:

debconf-get-selections | grep <name of setting> >>settings.txt

根据需要重复多次,然后将设置文件传输到另一台主机并将其输入debconf

debconf-set-selections < settings.txt

或者只是通过 SSH 或其他方式进行管道传输,例如:

ssh root@newhost debconf-set-selections < settings.txt

之后,在 host 上安装软件包时newhost,配置问题的答案已提供给debconf,因此不会以交互方式询问这些问题。 (如果新版本的包有更多问题,则只会询问新问题。)

相关内容