使用 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 PACKAGE
是apt-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