当我在非交互式 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
正如您引用的消息所示,如果Dialog
无法使用前端(例如,从 Emacs 内运行软件包安装命令时),软件包配置系统将使用更简单的Readline
前端。
实际上,这意味着,您不会在屏幕中央的文本框中单独获取偏好问题,而是将它们作为常规文本,一个接一个地获取,以及来自 的其他消息debconf
。它应该能够显示所有相同的问题,只是它们看起来与您可能习惯的有点不同。在某些情况下,您编辑键入内容的方式也可能受到更多限制,即箭头键可能不起作用,限制您只能退格。
如果Readline
前端也不可用,并且包没有预先配置的设置,则将使用内置默认值。仅当软件包的设置没有对应的默认值时,软件包安装可能会失败。
- 后果会这么严重吗?
如果您没有对以不同方式显示的偏好问题感到困惑,那就还不错。只要保持冷静,阅读计算机向您显示的消息,您就能弄清楚。
- 是否有某种响应文件[...]?
是的,有一些方法可以自动化配置。确保您已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
,因此不会以交互方式询问这些问题。 (如果新版本的包有更多问题,则只会询问新问题。)