Usuário desconhecido no arquivo statoverride

22

Eu tinha um aplicativo instalado no meu servidor htpc executando o ubuntu chamado mediatomb, há alguns meses eu o desinstalei e o substituí por uma instalação do Plex. No fim de semana, ao consultar usuários existentes na máquina, notei que o usuário e o grupo mediatomb ainda existiam, então usei o comando

sudo deluser mediatomb

para remover o usuário. Um dia depois, fui instalar o htop, sudo apt-get install htopmas descobri que estava recebendo um erro:

erro de sintaxe: usuário desconhecido 'mediatomb' no arquivo statoverride.

Eu pensei que seria capaz de abrir o arquivo statoverride usando o nano e editar quaisquer referências à mediatomb, mas não consegui abrir o arquivo corretamente usando o nano. Eu executei um comando grep

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

que retornou dois locais no arquivo que não existem mais no sistema. A única maneira de solucionar o problema no momento é recriar a mediatomba do usuário e tudo funcionar bem. Obviamente, essa não é uma boa solução a longo prazo.

O que eu gostaria de saber é: qual é o arquivo statoverride e por que ele mantém usuários que foram removidos do sistema? Estou removendo os usuários da maneira errada ou obsoleta?

Aesir
fonte

Respostas:

47

Eu sei que esta questão é um pouco antiga, mas já me deparei com isso duas vezes. Uma vez com puppet, uma vez com virtualbox. Surgiu novamente e eu encontrei algo que funcionou. É uma variação no serverfault.com .

Em vez de confiar em dpkg-statoverride --remove /path/to/offending/file.extqual, lança o erro

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

Você pode se divertir sedou simplesmente abrir /var/lib/dpkg/statoverrideno seu editor de texto favorito e remover apenas as linhas que contêm os itens que estavam causando o erro. Eu descobri que esse é um bug documentado, tanto para o Debian quanto para o Ubuntu,

Dito isto, eu apenas consertei o meu editando manualmente qualquer entrada que gerasse um erro e estou feliz em fazer o download de pacotes novamente. Espero que isso ajude a próxima pessoa que visita este número 1 no resultado de pesquisa do Google para esse problema.

cobertor_cat
fonte
Muito obrigado! Eu estava apenas começando a ficar preocupado que passaria toda a eternidade descobrindo cantos obscuros do mundo do linux, a fim de resolver esse problema simples que fiz alguns dias atrás. Não sei como eu consegui fazer isso, mas a remoção dessa linha do arquivo corrigiu o problema. muito obrigado por me poupar muito tempo!
Peter Perháč 30/10
Você é demais! Corrigido meu problema.
Elad Weiss 20/02
16

Embora não possa responder à sua pergunta conforme solicitado, posso ajudá-lo com seu dilema. Eu experimentei exatamente o mesmo problema que você está tendo depois de usar 'Contas de usuário' para remover o usuário 'backuppc' - um usuário que eu configurei manualmente para backups. Bem, eu raspei essa rota, mas não tentei remover o usuário até algumas semanas depois (IE - hoje). Eu não estava enfrentando nenhum problema até o Update Manager encontrar e tentar aplicar as atualizações; o processo falharia ao ler

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:

Após algumas pesquisas, encontrei uma solução.

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

Corrigido executando: 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

Desculpe, não sou capaz de responder à sua pergunta, mas este foi o segundo resultado no google, então eu queria colocar uma solução aqui para as pessoas. Minha resposta foi originada de http://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html .

corredor
fonte
3
Esta é a pior abordagem para o problema. Em vez disso, você deve reinstalar / reconfigurar o pacote em vez de excluir coisas que não devem ser excluídas.
Braiam
4

Eu estava recebendo o seguinte erro:

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)

O comando abaixo resolveu meu problema de instalação do apt-get

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

Você pode alterar a palavra crontab, mas mantenha o '/ d' até instalar com êxito qualquer apt-get sem nenhum erro de sintaxe.

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

É porque você pode ter excluído o usuário e agora as consultas do dpkg /etc/passwdpara comparar com o arquivo statoverride, ele verifica se todas as entradas do arquivo statoverride estão na senha e, se não estiverem, emita um aviso, que é o que está acontecendo.

Isso é facilmente corrigível se você reconfigurar / reinstalar o pacote relevante (no seu caso mediatomb, pode ser qualquer outra coisa, felizmente o Debian (o SO que o Ubuntu é baseado) usa o mesmo nome de usuário que o nome do projeto, normalmente) e ele irá (re) criar o usuário no arquivo passwd.

sudo apt-get --reinstall install package

ou

sudo dpkg-reconfigure package
Braiam
fonte
1

Quando instalei o DelugeD, ele criou um usuário chamado debian-deluged. Mais tarde, alterei a configuração do Deluge para usar outro ID de usuário e removi o usuário criado automaticamente. Isso resultou no statoverrideerro ao instalar o velocímetro do pacote.

Lancei sudo nano /var/lib/dpkg/statoverridee substituí manualmente o usuário criado automaticamente pelo ID do usuário atribuído e o erro foi resolvido.

Rajib Ghosh
fonte
1

Eu tive um erro semelhante e o corrigi, primeiro fazendo backup do arquivo statoverride e removendo todas as linhas que continham a palavra postdrop .

Lembre-se de adicionar uma nova linha no final do arquivo statoverride .

Sangeet
fonte