statoverride文件中的未知用户

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

sudo deluser mediatomb 

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

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

我以为我能够使用nano打开statoverride文件并编辑出对mediatomb的任何引用但我无法使用nano正确打开文件。 我跑了一个grep命令

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

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

我想知道的是,什么是statoverride文件,为什么它会保留已从系统中删除的用户? 我是以错误的方式删除用户还是弃用了?

我知道这个问题有点旧,但现在已经遇到过这个问题了两次。 一次使用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的文档错误,

也就是说,我只是通过手动编辑任何输入错误的条目来修复我,我很高兴再次下载包。 希望这有助于下一个访问此问题的Google搜索结果的下一个人。

虽然我无法按照要求回答您的问题,但我可以帮助您解决困境。 在使用“用户帐户”删除用户“backuppc”(我手动配置备份的用户)后,我遇到了完全相同的问题。 好吧,我取消了这条路线,但直到几周后才试图删除用户(IE-今天)。 在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 

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

我得到了以下错误:

 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 

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

如果您重新配置/重新安装相关软件包(在您的情况下它是mediatomb ,它可以是其他任何东西,幸运的是Debian(操作系统Ubuntu基于)使用与项目名称相同的用户名,通常),这很容易mediatomb它将(重新)在passwd文件中创建用户。

 sudo apt-get --reinstall install package 

要么

 sudo dpkg-reconfigure package 

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

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

我有一个类似的错误并通过首先备份statoverride文件然后删除包含postdrop一词的所有行来修复它

请记住在statoverride文件的末尾添加一个新行。