Nieznany użytkownik w pliku statoverride

22

Miałem aplikację zainstalowaną na moim htpc z serwerem ubuntu o nazwie mediatomb, kilka miesięcy temu odinstalowałem ją i zastąpiłem instalacją Plex. W weekend podczas odpytywania istniejących użytkowników na komputerze zauważyłem, że użytkownik i grupa mediatomb nadal istnieją, więc użyłem polecenia

sudo deluser mediatomb

usunąć użytkownika. Około dzień później poszedłem zainstalować htop, sudo apt-get install htopale okazało się, że pojawia się błąd:

błąd składni: nieznany użytkownik „mediatomb” w pliku statoverride.

Myślałem, że po prostu będę mógł otworzyć plik statoverride za pomocą nano i edytować wszelkie odniesienia do mediatomb, ale nie byłem w stanie poprawnie otworzyć pliku za pomocą nano. Uruchomiłem polecenie grep

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

który zwrócił w pliku dwie lokalizacje, które nie istnieją już w systemie. Jedynym sposobem, w jaki mogę teraz obejść ten problem, jest ponowne utworzenie mediatombu użytkownika, a wtedy wszystko działa dobrze. Oczywiście nie jest to dobre długoterminowe rozwiązanie.

Chciałbym wiedzieć, czym jest plik statoverride i dlaczego zachowuje w nim użytkowników, którzy zostali usunięci z systemu? Czy usuwam użytkowników w niewłaściwy lub przestarzały sposób?

Aesir
źródło

Odpowiedzi:

47

Wiem, że to pytanie jest trochę stare, ale spotkałem się z tym już dwa razy. Raz z puppet, raz z virtualbox. Pojawił się ponownie i znalazłem coś, co zadziałało. Jest to odmiana na serverfault.com .

Zamiast polegać na dpkg-statoverride --remove /path/to/offending/file.extczym, zgłasza błąd

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

Możesz się spodobać sedlub po prostu otworzyć /var/lib/dpkg/statoverridew swoim ulubionym edytorze tekstu i usunąć tylko wiersze zawierające elementy, które spowodowały błąd. Odkryłem, że jest to udokumentowany błąd, zarówno dla Debiana, jak i Ubuntu,

To powiedziawszy, właśnie naprawiłem mój, ręcznie edytując dowolny wpis, który zgłosił błąd, i chętnie ponownie pobieram pakiety. Mam nadzieję, że pomoże to następnej osobie, która odwiedzi ten wynik wyszukiwania Google nr 1 w poszukiwaniu tego problemu.

blanket_cat
źródło
Dziękuję bardzo! Właśnie zaczynałem się martwić, że spędzę całą wieczność, odkrywając niejasne zakątki świata linux, aby rozwiązać ten prosty cockup, który zrobiłem kilka dni temu. nie wiem, jak udało mi się to zrobić, ale usunięcie tej linii z tego pliku rozwiązało problem. dzięki bardzo za oszczędność czasu!
Peter Perháč
Jesteś niesamowity! Naprawiono mój problem.
Elad Weiss
16

Nie mogę odpowiedzieć na zadane pytanie, ale mogę pomóc w rozwiązaniu problemu. Wystąpił dokładnie ten sam problem, jaki masz po użyciu „Kont użytkowników” do usunięcia użytkownika „backuppc” - użytkownika, którego ręcznie skonfigurowałem do tworzenia kopii zapasowych. Cóż, zeskrobałem tę trasę, ale nie próbowałem usunąć użytkownika aż kilka tygodni później (IE - dzisiaj). Nie miałem żadnych problemów, dopóki Menedżer aktualizacji nie znalazł i nie próbował zastosować aktualizacji; proces nie powiedzie się

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:

Po kilku poszukiwaniach znalazłem rozwiązanie.

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

Naprawiono przez uruchomienie: 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

Przykro mi, ale nie jestem w stanie odpowiedzieć na twoje pytanie, ale był to drugi wynik w Google, więc chciałem znaleźć rozwiązanie dla ludzi. Moja odpowiedź pochodzi z http://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html .

sala
źródło
3
To najgorsze podejście do problemu. Zamiast tego powinieneś ponownie zainstalować / ponownie skonfigurować pakiet zamiast usuwać rzeczy, które nie powinny zostać usunięte.
Braiam
4

Pojawił się następujący błąd:

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)

Poniższe polecenie rozwiązało mój problem z instalacją apt-get

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

Możesz zmienić słowo crontab, ale zachowaj „/ d”, dopóki nie uda się zainstalować żadnego apt-get bez żadnego błędu składniowego.

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

Jest tak, ponieważ być może usunąłeś użytkownika, a teraz zapytania dpkg w /etc/passwdcelu porównania z plikiem statoverride, sprawdza, czy wszystkie wpisy pliku statoverride znajdują się w passwd, a jeśli tak nie jest, wydaje ostrzeżenie, co się dzieje.

Można to łatwo naprawić, jeśli ponownie skonfigurujesz / ponownie zainstalujesz odpowiedni pakiet (w twoim przypadku było mediatombto coś innego, na szczęście Debian (na którym opiera się system Ubuntu) używa tej samej nazwy użytkownika co nazwa projektu) i to utworzy (ponownie) użytkownika w pliku passwd.

sudo apt-get --reinstall install package

lub

sudo dpkg-reconfigure package
Braiam
źródło
1

Kiedy zainstalowałem DelugeD, stworzył on użytkownika o nazwie debian-deluged. Później zmieniłem konfigurację Deluge, aby używać innego ID użytkownika i usunąłem automatycznie utworzonego użytkownika. Spowodowało to statoverridebłąd podczas instalowania prędkościomierza pakietu.

Uruchomiłem sudo nano /var/lib/dpkg/statoverridei ręcznie zastąpiłem automatycznie utworzonego użytkownika przypisanym identyfikatorem użytkownika i błąd został rozwiązany.

Rajib Ghosh
źródło
1

Miałem podobny błąd i naprawiłem go, najpierw wykonując kopię zapasową pliku statoverride , a następnie usuwając wszystkie wiersze zawierające słowo postdrop .

Pamiętaj, aby dodać nowy wiersz na końcu pliku statoverride .

Sangeet
źródło