首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统中的Debconf误差

系统中的Debconf误差
EN

Unix & Linux用户
提问于 2016-07-01 13:32:31
回答 1查看 751关注 0票数 2

在安装期间使用debconf在Ubuntu16.04中配置包时,我遇到了以下问题。

更准确地说,包使用debconf保存配置文件,然后在postinst脚本中立即启动服务。此服务还使用debconf模块加载上一步中保存的配置。

但是,以systemd启动的服务由于错误而失败:

代码语言:javascript
复制
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable

据我所知,dpkg仍然使用debconf前端访问这个文件,当它试图启动另一个前端时,服务就会崩溃(环境变量DEBIAN_HAS_FRONTEND没有传递给服务)。我试图在脚本中强制使用env变量DEBIAN_HAS_FRONTEND,但随后出现了其他错误。

我认为我应该在dpkg进程结束之后强制启动守护进程,而debconf已经完成了,有什么想法吗?

EN

回答 1

Unix & Linux用户

发布于 2016-07-03 13:20:58

首先,在独立程序中使用debconf是错误的。要引用man debconf-devel,请参阅其他脚本:

您也可以在其他独立的程序中使用debconf。这里要注意的问题是,debconf不是故意的,也不应该用作注册中心。这毕竟是unix,程序是由/etc中的文件配置的,而不是由某个模糊的数据库配置的(不管怎么说,这只是一个缓存,可能会被毁了)。因此,在一个独立的程序中使用debconf之前,要考虑很长时间。

同一手册页还有助于解决上一节中的实际问题( POSTINST脚本):

如果postinst启动了一个守护进程,那么一定要让debconf在结束时停止,因为debconf可能会对postinst的其他操作感到有点困惑。

也就是说,在启动守护进程之前先发出db_stop (即使它本身不使用debconf )。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/293307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档