dpkg-reconfigure设置过的选项如何恢复默认值?

最大的社区版本,Ubuntu的发源地
回复
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#2

帖子 poloshiao » 2017-04-26 18:11

头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#4

帖子 vickycq » 2017-04-26 19:01

以 console-setup 为例
console-setup 的 debconf 问题默认值是由脚本 debian/console-setup.config 计算并询问的。用户作出设置后,其设置将保存在 /etc/default/console-setup

例如,debian/console-setup.config 会先读取 /etc/default/console-setup 中的值。如果没有 /etc/default/console-setup,会根据您的硬件情况计算出合理的默认值。然后依次询问用户。

为了恢复默认值,您只需要简单地删除 /etc/default/console-setup,并运行一次 dpkg-reconfigure console-setup,您会发现所有的问题都恢复了默认值。全部保留默认值即可。

对于其它的软件包可能会有所不同。

一个值得参考的 debconf 手册 参考 http://www.fifi.org/doc/debconf-doc/tut ... tml#AEN113
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#5

帖子 科学之子 » 2017-04-26 19:19

vickycq 写了:以 console-setup 为例
console-setup 的 debconf 问题默认值是由脚本 debian/console-setup.config 计算并询问的。用户作出设置后,其设置将保存在 /etc/default/console-setup

例如,debian/console-setup.config 会先读取 /etc/default/console-setup 中的值。如果没有 /etc/default/console-setup,会根据您的硬件情况计算出合理的默认值。然后依次询问用户。

为了恢复默认值,您只需要简单地删除 /etc/default/console-setup,并运行一次 dpkg-reconfigure console-setup,您会发现所有的问题都恢复了默认值。全部保留默认值即可。

对于其它的软件包可能会有所不同。

一个值得参考的 debconf 手册 参考 http://www.fifi.org/doc/debconf-doc/tut ... tml#AEN113
debian/console-setup.config是什么路径?

在看到您的回帖前用strace跟踪到了:
/var/lib/dpkg/info/keyboard-configuration.config
但没有仔细查看
在您这个回帖的提示下我再次联想到这个文件,仔细查看,和您的描述基本一致
/var/lib/dpkg/info/keyboard-configuration.config的部分内容:

代码: 全选

CONFIGFILE=/etc/default/keyboard
OLDCONFIGFILE=/etc/default/console-setup
但我尝试删除这两个文件后再次"dpkg-reconfingure keyboard-configuration",dialog的提问仍然记住了我刚才的选择
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#6

帖子 poloshiao » 2017-04-26 20:38

看到您的回帖后测试了一下,没有效果
試試
sudo dpkg-reconfigure debconf lightdm
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#7

帖子 vickycq » 2017-04-26 21:23

看来 keyboard-configuration.config 的流程不同。以 keyboard-configuration 的第一个问题“键盘布局”为例:
第一步归零(第76行)
第二步计算默认值(第33326行),覆盖第一步
第三步从debconf数据库(/var/cache/debconf/config.dat)中读取设置值(第33791行),覆盖第二步
第四步从 /etc/default/keyboard 中读取设置值(第33940行),覆盖第三步

由于第三步覆盖了第二步,4楼的方法失效了。console-setup 就没有这一步。看来还要寻找其它办法。
console-setup.config 的流程实际是:先计算默认值,然后用 /etc/default/console-setup 中的值覆盖默认值。这样,移除配置文件后即可保留默认值。

科学之子 写了:debian/console-setup.config是什么路径?
一般指源码包中的 debian 目录下的文件。安装以后就变成 /var/lib/dpkg/info/keyboard-configuration.config
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#8

帖子 科学之子 » 2017-04-26 22:47

vickycq 写了:看来 keyboard-configuration.config 的流程不同。以 keyboard-configuration 的第一个问题“键盘布局”为例:
第一步归零(第76行)
第二步计算默认值(第33326行),覆盖第一步
第三步从debconf数据库(/var/cache/debconf/config.dat)中读取设置值(第33791行),覆盖第二步
第四步从 /etc/default/keyboard 中读取设置值(第33940行),覆盖第三步

由于第三步覆盖了第二步,4楼的方法失效了。console-setup 就没有这一步。看来还要寻找其它办法。
console-setup.config 的流程实际是:先计算默认值,然后用 /etc/default/console-setup 中的值覆盖默认值。这样,移除配置文件后即可保留默认值。

科学之子 写了:debian/console-setup.config是什么路径?
一般指源码包中的 debian 目录下的文件。安装以后就变成 /var/lib/dpkg/info/keyboard-configuration.config
:Adore 好厉害,文件那么多行,步骤是怎么看出来的?

代码: 全选

rm /etc/default/keyboard /etc/default/console-setup /var/cache/debconf/*;dpkg-reconfigure keyboard-configuration
按照您的提示,可以做到让"dpkg-reconfigure keyboard-configuration"失忆
不过我用的方法是直接删除"/var/cache/debconf/*",还是无法针对这个包来操作
纯手动编辑config.dat略累

Wed Apr 26 23:00:59 CST 2017补充:
猜测是用编辑器的语法折叠功能定位出来的?
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: dpkg-reconfigure设置过的选项如何恢复默认值?

#9

帖子 vickycq » 2017-04-26 23:55

科学之子 写了: 不过我用的方法是直接删除"/var/cache/debconf/*",还是无法针对这个包来操作
纯手动编辑config.dat略累

Wed Apr 26 23:00:59 CST 2017补充:
猜测是用编辑器的语法折叠功能定位出来的?
这样的话会不会造成其它软件包的 debconf 设置也被重置。其实可以撰写脚本配合一些现有工具修改数据库的值。参考 https://feeding.cloud.geek.nz/posts/man ... ttings-on/
将相应的字段设为空,并将 /etc/default/keyboard 中相应字段也设为空(或直接移除)即可。
例如重置最后一个问题“C-A-Backspace 重启 Xorg”
先设置为‘yes’

代码: 全选

# echo "set keyboard-configuration/optionscode  " | debconf-communicate
# rm /etc/default/keyboard
# dpkg-reconfigure keyboard-configuration
您可以看到最后一个问题默认选择了"No"
不过每个软件包的 .config 脚本都不一样,配置文件的位置也不一样. 像 exim4-config 就使用 /etc/exim4/update-exim4.conf.conf 记忆用户配置。也许还有其它方法。
科学之子 写了:猜测是用编辑器的语法折叠功能定位出来的?
可以先看开头的 'CONTENTS',获知大概结构。然后搜 'XKBMODEL',找到所有对 XKBMODEL 变量操作的地方。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
回复