statoverride文件中的未知用户


22

我在运行ubuntu的htpc服务器上安装了一个名为mediatomb的应用程序,几个月前,我将其卸载并替换为Plex安装。在周末查询机器上的现有用户时,我注意到mediatomb用户和组仍然存在,因此我使用了以下命令

sudo deluser mediatomb

删除用户。sudo apt-get install htop大约一天后,我去安装htop,但发现出现错误:

语法错误:statoverride文件中的未知用户'mediatomb'。

我以为我可以使用nano打开statoverride文件并编辑掉对mediatomb的所有引用,但是我无法使用nano正确打开文件。我运行了一个grep命令

grep 'mediatomb' /var/lib/dpkg/statoverride

它返回了文件中系统上不再存在的两个位置。我现在能够解决该问题的唯一方法是重新创建用户mediatomb,然后一切正常。显然,这不是一个好的长期解决方案。

我想知道的是,什么是statoverride文件,为什么它会将已从系统中删除的用户保留在其中?我是否以错误或不建议使用的方式删除用户?

Answers:


47

我知道这个问题有点老了,但是现在已经两次遇到了。一次puppet,一次virtualbox。它再次出现,我发现了一些有效的方法。这是serverfault.com的变体。

而不是依赖于dpkg-statoverride --remove /path/to/offending/file.ext哪个抛出错误

dpkg: unrecoverable fatal error, aborting:
syntax error: unknown group offendinggroup in statoverride file

您可以看上sed,也可以简单地/var/lib/dpkg/statoverride在自己喜欢的文本编辑器中打开并删除包含导致错误的项目的行。我发现这对于Debian和Ubuntu都是一个已记录的错误,

也就是说,我只是通过手动编辑抛出错误的任何条目来修复我的问题,然后我很高兴再次下载了软件包。希望这对下一个访问此数字1 Google搜索结果的人有所帮助。


非常感谢!我刚刚开始担心,我将花费所有的永恒时间来发现Linux世界的晦涩角落,以解决我几天前所做的这个简单的模仿。不知道我是如何做到的,但是从该文件中删除那一行解决了问题。非常感谢您为我节省了很多时间!
彼得·佩拉奇(PeterPerháč)

你真棒!解决了我的问题。
Elad Weiss

16

虽然我无法按要求回答您的问题,但可以为您解决难题。使用“用户帐户”删除用户“ backuppc”(我为备份手动配置的用户)后,我遇到了完全相同的问题。好吧,我取消了这条路线,但是直到几周后(即今天),才尝试删除用户。在Update Manager找到并尝试应用更新之前,我一直没有遇到任何麻烦。该过程将无法读取

dpkg: unrecoverable fatal error, aborting:  
 syntax error: unknown user 'backuppc' in statoverride file
W: Waited for dpkg --assert-multi-arch but it wasn't there - dpkgGo (10: No child processes)
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install.  Trying to recover:

经过一番搜索,我找到了解决方案。

x@y ~ $ cat /var/lib/dpkg/statoverride
root postdrop 2555 /usr/sbin/postdrop
root postdrop 2555 /usr/sbin/postqueue
root mlocate 2755 /usr/bin/mlocate
postfix postdrop 2710 /var/spool/postfix/public
backuppc www-data 4750 /usr/lib/backuppc/cgi-bin/index.cgi
root ssl-cert 710 /etc/ssl/private
root crontab 2755 /usr/bin/crontab

通过运行来修复:sudo sed -i'/ backuppc / d'/ var / lib / dpkg / statoverride

x@y ~ $ sudo sed -i '/backuppc/d' /var/lib/dpkg/statoverride; cat /var/lib/dpkg/statoverride
[sudo] password for x: 
root postdrop 2555 /usr/sbin/postdrop
root postdrop 2555 /usr/sbin/postqueue
root mlocate 2755 /usr/bin/mlocate
postfix postdrop 2710 /var/spool/postfix/public
root ssl-cert 710 /etc/ssl/private
root crontab 2755 /usr/bin/crontab

抱歉,我无法回答您的问题,但这是google中的第二个结果,因此我想在此为人们提供解决方案。我的答案来自http://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html


3
这是解决问题的最糟糕的方法。相反,您应该重新安装/重新配置该软件包,而不是删除不需要删除的内容。
Braiam

4

我收到以下错误:

dpkg: unrecoverable fatal error, aborting:
syntax error: unknown group "crontab" in statoverride file,
 E: Sub-process /usr/bin/dpkg returned an error code (2)
dpkg: unrecoverable fatal error, aborting:
 unknown group 'messagebus' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)

下面的命令解决了我的apt-get安装问题

sudo sed -i '/crontab/d' /var/lib/dpkg/statoverride

您可以更改crontab单词,但保留'/ d'直到可以成功安装任何apt-get而没有任何语法错误。

root@localhost:~# sudo sed -i '/messagebus/d' /var/lib/dpkg/statoverride
root@localhost:~# apt-get install wifite
Reading package lists... Done

2

这是因为您可能已经删除了用户,现在删除了dpkg查询/etc/passwd以与statoverride文件进行比较,它会检查statoverride文件的所有条目都在passwd中,如果没有,则发出警告,这就是发生的情况。

如果您重新配置/重新安装相关的软件包(在您的情况下是mediatomb,则可以是其他任何软件包,幸运的是Debian(基于Ubuntu的OS)通常使用与项目名称相同的用户名),则可以轻松解决该问题。将在passwd文件中(重新)创建用户。

sudo apt-get --reinstall install package

要么

sudo dpkg-reconfigure package

1

当我安装DelugeD时,它创建了一个名为debian-deluged的用户。后来,我将Deluge配置更改为使用另一个用户ID,并删除了自动创建的用户。这导致在statoverride安装套件速度计时出现错误。

我启动sudo nano /var/lib/dpkg/statoverride并用分配的用户ID手动替换了自动创建的用户,此错误已解决。


1

我遇到了类似的错误,并通过首先备份statoverride文件,然后删除了所有包含单词postdrop的行来修复此错误

记住要在statoverride文件的末尾添加新行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.