Pengguna tidak dikenal dalam file statoverride

22

Saya memiliki aplikasi yang diinstal pada htpc saya menjalankan server ubuntu yang disebut mediatomb, beberapa bulan yang lalu saya uninstall dan menggantinya dengan instalasi Plex. Pada akhir pekan ketika menanyakan pengguna yang ada pada mesin saya perhatikan bahwa pengguna dan grup mediatomb masih ada sehingga saya menggunakan perintah

sudo deluser mediatomb

untuk menghapus pengguna. Sehari kemudian saya pergi untuk menginstal htop sudo apt-get install htoptetapi saya menemukan bahwa saya mendapatkan kesalahan:

kesalahan sintaks: 'mediatomb' pengguna tidak dikenal dalam file statoverride.

Saya pikir saya hanya bisa membuka file statoverride menggunakan nano dan mengedit referensi apa pun ke mediatomb tapi saya tidak bisa membuka file dengan benar menggunakan nano. Saya menjalankan perintah grep

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

yang mengembalikan dua lokasi dalam file yang tidak ada pada sistem lagi. Satu-satunya cara saya dapat mengatasi masalah untuk saat ini adalah membuat kembali mediatomb pengguna dan kemudian semuanya berfungsi dengan baik. Jelas ini bukan solusi jangka panjang yang bagus.

Yang ingin saya ketahui adalah, apa file statoverride dan mengapa itu mempertahankan pengguna di dalamnya yang telah dihapus dari sistem? Apakah saya menghapus pengguna dengan cara yang salah atau usang?

Aesir
sumber

Jawaban:

47

Saya tahu pertanyaan ini agak lama, tetapi telah menemukan ini dua kali sekarang. Sekali dengan puppet, sekali dengan virtualbox. Itu muncul lagi dan saya menemukan sesuatu yang berhasil. Ini variasi di serverfault.com .

Alih-alih mengandalkan dpkg-statoverride --remove /path/to/offending/file.extyang, melemparkan kesalahan

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

Anda dapat membiasakan diri sed, atau Anda hanya dapat membuka /var/lib/dpkg/statoverridedi editor teks favorit Anda dan menghapus hanya baris yang mengandung item yang menyebabkan kesalahan. Saya menemukan bahwa ini adalah bug yang didokumentasikan, untuk Debian, dan Ubuntu,

Yang mengatakan, saya hanya memperbaiki milik saya dengan secara manual mengedit entri yang menyebabkan kesalahan, dan saya senang mengunduh paket lagi. Semoga ini bisa membantu orang berikutnya, yang mengunjungi hasil pencarian Google nomor 1 ini untuk masalah ini.

blanket_cat
sumber
Terima kasih banyak! Saya baru saja mulai khawatir bahwa saya akan menghabiskan semua kekekalan menemukan sudut-sudut yang tidak jelas dari dunia linux untuk menyelesaikan masalah sederhana yang saya buat beberapa hari yang lalu. tidak tahu bagaimana saya berhasil melakukan ini, tetapi menghapus satu baris dari file itu memperbaiki masalahnya. terima kasih banyak telah menyelamatkan saya banyak waktu!
Peter Perháč
Kamu Menakjubkan! Memperbaiki masalah saya.
Elad Weiss
16

Meskipun saya tidak dapat menjawab pertanyaan Anda seperti yang diminta, saya dapat membantu Anda dengan dilema Anda. Saya mengalami masalah yang sama persis dengan yang Anda alami setelah menggunakan 'Akun Pengguna' untuk menghapus pengguna 'backuppc' - pengguna yang saya konfigurasikan secara manual untuk cadangan. Yah saya membatalkan rute itu tetapi tidak mencoba untuk menghapus pengguna sampai beberapa minggu kemudian (IE - hari ini). Saya belum mengalami masalah apa pun sampai Update Manager menemukan dan mencoba menerapkan pembaruan; proses membaca akan gagal

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:

Setelah beberapa pencarian saya menemukan solusi.

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

Diperbaiki dengan menjalankan: 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

Maaf saya tidak dapat menjawab pertanyaan Anda, tetapi ini adalah hasil kedua di google jadi saya ingin memberikan solusi di sini untuk orang-orang. Jawaban saya berasal dari http://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html .

aula
sumber
3
Ini adalah pendekatan terburuk untuk masalah ini. Anda sebaiknya menginstal ulang / mengkonfigurasi ulang paket alih-alih menghapus hal-hal yang tidak dimaksudkan untuk dihapus.
Braiam
4

Saya mendapatkan kesalahan berikut:

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)

Perintah di bawah ini menyelesaikan masalah pemasangan apt-get saya

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

Anda dapat mengubah kata crontab tetapi tetap menggunakan '/ d' hingga Anda berhasil menginstal apt-get tanpa kesalahan sintaks.

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

Itu karena Anda mungkin telah menghapus pengguna dan sekarang dpkg kueri /etc/passwduntuk dibandingkan dengan file statoverride, itu memeriksa bahwa semua entri file statoverride berada di passwd, dan jika tidak, mengeluarkan peringatan, yang merupakan apa yang terjadi.

Itu mudah diperbaiki jika Anda mengkonfigurasi ulang / menginstal ulang paket yang relevan (dalam kasus Anda mediatomb, itu bisa menjadi hal lain, untungnya Debian (OS Ubuntu didasarkan pada) menggunakan nama pengguna yang sama dengan nama proyek, biasanya) dan itu akan (kembali) membuat pengguna dalam file passwd.

sudo apt-get --reinstall install package

atau

sudo dpkg-reconfigure package
Braiam
sumber
1

Ketika saya menginstal DelugeD, itu menciptakan pengguna yang disebut debian-deluged. Kemudian, saya mengubah konfigurasi Deluge untuk menggunakan ID pengguna lain dan saya menghapus pengguna yang dibuat secara otomatis. Ini mengakibatkan statoverridekesalahan saat menginstal paket speedometer.

Saya meluncurkan sudo nano /var/lib/dpkg/statoverridedan secara manual mengganti pengguna yang dibuat secara otomatis dengan ID pengguna yang ditetapkan dan kesalahan telah diatasi.

Rajib Ghosh
sumber
1

Saya memiliki kesalahan yang sama dan memperbaikinya dengan terlebih dahulu membuat cadangan file statoverride dan kemudian menghapus semua baris yang mengandung kata postdrop .

Ingatlah untuk menambahkan baris baru di akhir file statoverride .

Sangeet
sumber