Utilisateur inconnu dans le fichier statoverride

22

J'ai fait installer une application sur mon serveur htpc exécutant le serveur ubuntu appelée mediatomb, il y a quelques mois, je l'ai désinstallée et remplacée par une installation Plex. Le week-end, lorsque j'ai interrogé des utilisateurs existants sur la machine, j'ai remarqué que l'utilisateur et le groupe mediatomb existaient toujours, j'ai donc utilisé la commande

sudo deluser mediatomb

pour supprimer l'utilisateur. Un jour ou deux plus tard, je suis allé installer htop sudo apt-get install htopmais j'ai trouvé que j'obtenais une erreur:

erreur de syntaxe: utilisateur inconnu 'mediatomb' dans le fichier statoverride.

Je pensais que je pourrais simplement ouvrir le fichier statoverride en utilisant nano et éditer toutes les références à mediatomb mais je n'ai pas pu ouvrir le fichier correctement en utilisant nano. J'ai exécuté une commande grep

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

qui a renvoyé deux emplacements dans le fichier qui n'existent plus sur le système. La seule façon dont je peux contourner le problème pour l'instant est de recréer le mediatomb utilisateur, puis tout fonctionne correctement. De toute évidence, ce n'est pas une bonne solution à long terme.

Ce que j'aimerais savoir, c'est quoi le fichier statoverride et pourquoi y retient-il les utilisateurs qui ont été supprimés du système? Suis-je en train de supprimer les utilisateurs de manière incorrecte ou obsolète?

Aesir
la source

Réponses:

47

Je sais que cette question est un peu ancienne, mais je l'ai rencontrée deux fois maintenant. Une fois avec puppet, une fois avec virtualbox. Il a refait surface et j'ai trouvé quelque chose qui fonctionnait. C'est une variante de serverfault.com .

Au lieu de compter sur dpkg-statoverride --remove /path/to/offending/file.extlequel, jette l'erreur

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

Vous pouvez faire preuve de fantaisie sed, ou vous pouvez simplement ouvrir /var/lib/dpkg/statoverridedans votre éditeur de texte préféré et supprimer uniquement les lignes contenant le ou les éléments à l'origine de l'erreur. J'ai trouvé que c'est un bogue documenté, pour Debian et Ubuntu,

Cela dit, je viens de corriger le mien en modifiant manuellement toute entrée qui a généré une erreur, et je suis heureux de télécharger à nouveau des packages. J'espère que cela aidera la prochaine personne, qui visite ce résultat de recherche Google numéro 1 pour ce problème.

blanket_cat
la source
Merci beaucoup! Je commençais à peine à craindre de passer toute l'éternité à découvrir des coins obscurs du monde Linux afin de résoudre ce simple problème que j'avais fait il y a quelques jours. Je ne sais pas comment j'ai réussi à le faire, mais supprimer cette seule ligne de ce fichier a résolu le problème. merci beaucoup de m'avoir fait gagner beaucoup de temps!
Peter Perháč
Tu es incroyable! Correction de mon problème.
Elad Weiss
16

Bien que je ne puisse pas répondre à votre question comme demandé, je peux vous aider avec votre dilemme. J'ai rencontré exactement le même problème que vous rencontrez après avoir utilisé «Comptes d'utilisateurs» pour supprimer l'utilisateur «backuppc» - un utilisateur que j'ai configuré manuellement pour les sauvegardes. Eh bien, j'ai abandonné cette route, mais je n'ai essayé de supprimer l'utilisateur que quelques semaines plus tard (IE - aujourd'hui). Je n'avais rencontré aucun problème jusqu'à ce qu'Update Manager trouve et tente d'appliquer les mises à jour; le processus échouait à la lecture

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:

Après quelques recherches, j'ai trouvé une solution.

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

Corrigé en exécutant: 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

Désolé, je ne suis pas en mesure de répondre à votre question, mais c'était le deuxième résultat dans google, donc je voulais mettre une solution ici pour les gens. Ma réponse provient de http://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html .

salle
la source
3
C'est la pire approche du problème. Au lieu de cela, vous devez réinstaller / reconfigurer le package au lieu de supprimer des éléments qui ne sont pas censés être supprimés.
Braiam
4

J'obtenais l'erreur suivante:

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)

La commande ci-dessous a résolu mon problème d'installation apt-get

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

Vous pouvez changer le mot crontab mais garder le '/ d' jusqu'à ce que vous puissiez installer avec succès n'importe quel apt-get sans erreur de syntaxe.

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

C'est parce que vous avez peut-être supprimé l'utilisateur et maintenant que dpkg interroge /etc/passwdpour comparer avec le fichier statoverride, il vérifie que toutes les entrées du fichier statoverride sont dans le mot de passe, et si ce n'est pas le cas, émettez un avertissement, ce qui se passe.

Cela peut être facilement résolu si vous reconfigurez / réinstallez le package correspondant (dans votre cas mediatomb, cela peut être autre chose, heureusement Debian (le système d'exploitation Ubuntu est basé sur) utilise le même nom d'utilisateur que le nom du projet, normalement) et va (re) créer l'utilisateur dans le fichier passwd.

sudo apt-get --reinstall install package

ou

sudo dpkg-reconfigure package
Braiam
la source
1

Lorsque j'ai installé DelugeD, il a créé un utilisateur appelé debian-deluged. Plus tard, j'ai changé la configuration de Deluge pour utiliser un autre ID utilisateur et j'ai supprimé l'utilisateur créé automatiquement. Cela a entraîné l' statoverrideerreur lors de l'installation de l'indicateur de vitesse du package.

J'ai lancé sudo nano /var/lib/dpkg/statoverrideet remplacé manuellement l'utilisateur créé automatiquement par l'ID utilisateur attribué et l'erreur a été résolue.

Rajib Ghosh
la source
1

J'ai eu une erreur similaire et je l'ai corrigée en sauvegardant d'abord le fichier statoverride puis en supprimant toutes les lignes contenant le mot postdrop .

N'oubliez pas d'ajouter une nouvelle ligne à la fin du fichier statoverride .

Sangeet
la source