询问apt每一个可能的配置值

询问apt每一个可能的配置值

使用 apt-get安装时jackd,我对一些问题给出了错误答案。如何强制 apt-get 再次询问我这个问题?我真的宁愿通过包管理器来做这件事,而不是手动进行更改。

我尝试清除它并重新安装。我也尝试过dpkg-reconfigure jackd

答案1

很可能dpkg-reconfigure 解决方案,但有时问题所属的包与您安装的包的名称不同 - 要么是因为它是一个元包,要么是因为问题属于其中一个依赖包。

在这种情况下,查看 debconf 数据库以查看是否有可能的候选者可能会有所帮助,debconf-show例如使用

$ sudo debconf-show --listowners | grep jack
jackd2

结果是

$ sudo dpkg-reconfigure jackd2

确实引发了您正在寻找的问题。

答案2

为了方便读者,以防您偶然遇到类似的事情,这里可以帮助您解决以下问题:

  • 安装软件包之后,你会发现很多东西都放在了错误的位置。
  • dpkg-reconfigure package也无济于事,因为这可能会留下不需要的(甚至是危险的)碎片(例如,当切换到git包的用户名时gitolite3,它不会清理默认gitolite3用户 - 因为它无法知道该用户是否在此期间被使用)。
  • 卸载软件包后,Debian 仍然“神奇地”记住了下次安装时输入的最后值。
  • 您可以在上看到一些包配置值dpkg-reconfigure,这些配置值在apt-get install
  • 你讨厌 Curses-GUI 或喜欢纯文本控制台

询问apt每一个可能的配置值

DEBIAN_FRONTEND=readline DEBIAN_PRIORITY=low apt-get install PACKAGE

但是,如果已经缓存了答案,则可能不会要求提供所有内容。这些答案保存在名为 的文件中debconf。保存它的文件名为/var/cache/debconf/config.dat

要查看所有这些信息,请在尝试安装之前运行以下命令PACKAGE

debconf-show PACKAGE

请参阅下文,了解一些摆脱不需要的条目的方法(当然,还有无数种方法)。

警告:

永远不要/var/cache/debconf/config.dat自己编辑。查看它,但不要用编辑器修改它。这是一个挑剔的文件。空格、TAB 等,不要碰它们,保持原样。一些编辑器试图巧妙地利用文本文件中的空格。他们会破坏它config.dat。而且大多数时候你甚至看不到它。

而是使用适当的工具(有些在debconf-utils):

  • debconf-get-selections抛弃一切
  • debconf-set-selections设定事物
  • debconf-show PACKAGE查看所有 debconf 的参数PACKAGE(这是所有dpkg-reconfigure PACKAGE要问的)
  • echo PURGE | debconf-communicate PACKAGE删除某个 PACKAGE 的所有 debconf 信息

但请注意,这些不是为普通人设计的。

如何清除包裹中的所有物品

警告! apt-get purge(又名apt-get remove --purge)可能会破坏宝贵的用户数据。请务必保留备份,以防万一。您已收到警告。

的反义词apt-get install PACKAGEapt-get remove --purge PACKAGE。如今我们apt-get purge PACKAGE也可以为此编写。如果不清除,一些东西就会留下来,这样您就可以快速再次安装 PACKAGE,并且所有以前的设置和数据都完好无损。这包括第一次安装 PACKAGE 时询问的所有问题。

但是apt-get purge PACKAGE会删除 PACKAGE 的所有痕迹,包括它的配置,甚至 PACKAGE 存储的或为 PACKAGE 存储的有价值的用户数据也经常会被完全删除!

因此,如果您发现在安装 PACKAGE 时出现问题,您可以使用apt-get purge PACKAGE来摆脱它,以便您可以再次尝试正确安装它。稍后,在您使用 PACKAGE 一段时间后,apt-get purge PACKAGE可能会出现非常糟糕的结果。

请注意,apt-get purge PACKAGE当使用 重新配置包时dpkg-reconfigure PACKAGE,有时会留下碎片,因为purge它操作的是“清除时”已知的内容,而不是之前的内容,因为关于上次 之前的内容几乎没有历史记录dpkg-reconfigure

但如果您确定没有未备份的宝贵数据,并且想要从头开始使用某些包,请执行apt-get purge PACKAGE。请注意,即使在使用 删除包之后,您也可以执行此操作apt-get remove PACKAGE

如何找到包

您知道一个文件,但不知道它属于哪个包,以下是找到它的方法:

dpkg -S /path/to/file

如果此操作未输出任何内容,则它不属于 PACKAGE。因此,它可能是用户数据或碎片。您自行决定。

对于命令,您可以键入(请注意引号很重要)来找到它的包:

dpkg -S "`which COMMAND`"

如果你找到了该包,你可以获取包中所有文件的列表:

dpkg -L PACKAGE

(请注意,这不包括由安装脚本生成的一些文件。)

但是查找软件包只适用于已安装的软件包。如果您需要尚未安装的软件包的相同信息,请尝试该工具apt-file search filename(您需要apt-file update先运行以初始化其数据库)。

把它们加起来

  • 您已安装了一个软件包并想重新配置它

    dpkg-reconfigure PACKAGE
    
  • 您想使用当前设置重新安装 PACKAGE apt-get install --reinstall PACKAGE

  • 您想要从头开始重新安装一个软件包,删除所有以前的(可能是宝贵的)数据,并再次询问所有可能的问题:

    apt-get purge PACKAGE
    DEBIAN_PRIORITY=low apt-get install PACKAGE
    
  • 如果您不喜欢 Curses 界面并且想要一个行驱动界面

    DEBIAN_FRONTEND=readline在前面添加apt-get

  • 如果你甚至不喜欢 readline 界面并且想要简单的行编辑

    TERM=dumb在前面添加apt-get(请注意,这没有什么特殊的debconf,自从Unix诞生以来它就一直有效)。

(请注意,您当然也可以在环境中进行设置export DEBIAN_FRONTEND=readline。)

供参考

据我所知,最好的资料来源是以下链接,其中解释了 debconf,以便您真正理解它,并且我在这里获取了大部分详细信息,但该页面是德语的:

http://debiananwenderhandbuch.de/debconf.html

顺便提一句:

  • 我写这篇文章也是为了我自己的参考,因为我记不清所有的细节了。这些细节太奇特了,而且手册页上大多没有记载。

  • 这个答案太长了。这可能意味着,apt而且debconf仍然太令人困惑。

答案3

我也遇到了同样的问题(在 Ubuntu Server 18.04 上)我安装了 jackd,并想重新配置它以启用我选择的实时优先级初始安装。

当我向后滚动时,屏幕上仍然显示安装文本。(通过 Shift-PageUp),然后我看到了这两行:

Setting up jackd1 (1:0.125.0-3) ...
Setting up jackd (5) ...

我想我可以尝试重新配置jackd1代替杰克

果然,我做了一个sudo dpkg-reconfigure jackd1,然后系统再次提示我回答实时问题。

当我这次回答“是”的时候,它改变了 /etc/security/limits.d/audio.conf.disabled文件到/etc/security/limits.d/audio.conf这正是我所期望的。

出于好奇,我发出了@steeldriver 发出的命令,我的系统确实显示jackd1代替jackd2,这样一切都说得通了。

sudo debconf-show --listowners | grep jack
jackd1

相关内容