ผู้ใช้ที่ไม่รู้จักในไฟล์ statoverride


22

ฉันมีแอปพลิเคชั่นติดตั้งบนเซิร์ฟเวอร์ htpc ของฉันที่เรียกว่า mediatomb เมื่อไม่กี่เดือนก่อนฉันถอนการติดตั้งและแทนที่ด้วยการติดตั้ง Plex ในวันหยุดสุดสัปดาห์เมื่อสอบถามผู้ใช้ที่มีอยู่บนเครื่องฉันสังเกตว่าผู้ใช้และกลุ่ม mediatomb ยังคงอยู่ดังนั้นฉันจึงใช้คำสั่ง

sudo deluser mediatomb

เพื่อลบผู้ใช้ ประมาณหนึ่งวันหลังจากนั้นฉันไปติดตั้งฮ็อพsudo apt-get install htopแต่ฉันพบว่าฉันได้รับข้อผิดพลาด:

ข้อผิดพลาดทางไวยากรณ์: ผู้ใช้ที่ไม่รู้จัก 'mediatomb' ในไฟล์ statoverride

ฉันคิดว่าฉันจะสามารถเปิดไฟล์ statoverride โดยใช้ nano และแก้ไขการอ้างอิงถึง mediatomb แต่ฉันไม่สามารถเปิดไฟล์ได้อย่างถูกต้องโดยใช้ nano ฉันรันคำสั่ง grep

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

ซึ่งส่งคืนสองตำแหน่งในไฟล์ซึ่งไม่มีอยู่ในระบบอีกต่อไป วิธีเดียวที่ฉันสามารถแก้ไขปัญหาได้ในตอนนี้คือการสร้าง mediatomb ผู้ใช้ขึ้นใหม่จากนั้นทุกอย่างทำงานได้ดี เห็นได้ชัดว่านี่ไม่ใช่ทางออกระยะยาวที่ดี

สิ่งที่ฉันอยากรู้คือไฟล์ statoverride คืออะไรและทำไมมันจึงรักษาผู้ใช้ไว้ในไฟล์ที่ถูกลบออกจากระบบ? ฉันจะลบผู้ใช้ในทางที่ผิดหรือเลิกใช้แล้วหรือไม่?

คำตอบ:


47

ฉันรู้ว่าคำถามนี้เก่าไปหน่อย แต่ได้เจอสองครั้งแล้ว เมื่อมีครั้งเดียวกับ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

ที่กล่าวว่าฉันเพิ่งแก้ไขของฉันด้วยการแก้ไขรายการใด ๆ ที่ทำให้เกิดข้อผิดพลาดด้วยตนเองและฉันก็ยินดีดาวน์โหลดแพ็คเกจอีกครั้ง หวังว่านี่จะช่วยให้คนต่อไปที่เข้าชมหมายเลขนี้ 1 ผลการค้นหาของ Google สำหรับปัญหานี้


ขอบคุณมาก! ฉันเพิ่งเริ่มเป็นกังวลว่าฉันจะใช้จ่ายทั้งหมดของนิรันดรค้นพบมุมที่ไม่ชัดเจนของ linux world เพื่อแก้ไข cockup ง่าย ๆ นี้ที่ฉันทำไว้เมื่อหลายวันก่อน ไม่ทราบว่าฉันจัดการได้อย่างไร แต่การลบหนึ่งบรรทัดจากไฟล์นั้นแก้ไขปัญหาได้ ขอบคุณมากที่ช่วยฉันมากเวลา!
Peter Perháč

คุณยอดเยี่ยมมาก! แก้ไขปัญหาของฉัน
Elad Weiss

16

ในขณะที่ฉันไม่สามารถตอบคำถามของคุณตามที่ถามฉันสามารถช่วยคุณในภาวะที่กลืนไม่เข้าคายไม่ออกของคุณ ฉันประสบปัญหาเดียวกันกับที่คุณมีหลังจากใช้ 'บัญชีผู้ใช้' เพื่อลบผู้ใช้ '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

ขออภัยฉันไม่สามารถตอบคำถามของคุณได้ แต่นี่เป็นผลลัพธ์ที่สองใน google ดังนั้นฉันจึงต้องการที่จะแก้ปัญหาให้กับผู้คน คำตอบของฉันมาจากhttp://rickfoosusa.blogspot.com/2012/04/howto-ubuntu-unknown-user-in.html


3
นี่เป็นวิธีที่เลวร้ายที่สุดในการแก้ไขปัญหา คุณควรติดตั้งใหม่ / กำหนดค่าแพคเกจแทนที่จะไปลบสิ่งที่ไม่ได้ตั้งใจจะลบ
Braiam

4

ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

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

2

อาจเป็นเพราะคุณอาจลบผู้ใช้และตอนนี้ dpkg เคียวรี/etc/passwdเพื่อเปรียบเทียบกับไฟล์ statoverride มันจะตรวจสอบว่ารายการทั้งหมดของไฟล์ statoverride อยู่ใน passwd และหากพวกเขาไม่ได้ออกคำเตือนซึ่งเป็นสิ่งที่เกิดขึ้น

ที่สามารถแก้ไขได้อย่างง่ายดายถ้าคุณกำหนดค่า / ติดตั้งแพคเกจที่เกี่ยวข้อง (ในกรณีของคุณmediatombมันสามารถเป็นอย่างอื่นโชคดี Debian (OS Ubuntu เป็นไปตาม) ใช้ชื่อผู้ใช้เดียวกันกับชื่อของโครงการตามปกติ) และมัน จะ (อีกครั้ง) สร้างผู้ใช้ในไฟล์ passwd

sudo apt-get --reinstall install package

หรือ

sudo dpkg-reconfigure package

1

เมื่อฉันติดตั้ง DelugeD มันจะสร้างผู้ใช้ชื่อ debian-deluged หลังจากนั้นฉันเปลี่ยนการกำหนดค่า Deluge เพื่อใช้ ID ผู้ใช้อื่นและฉันลบผู้ใช้ที่สร้างขึ้นอัตโนมัติ สิ่งนี้ส่งผลให้เกิดstatoverrideข้อผิดพลาดเมื่อติดตั้งมาตรวัดความเร็วแพคเกจ

ฉันเปิดตัวsudo nano /var/lib/dpkg/statoverrideและแทนที่ผู้ใช้ที่สร้างอัตโนมัติด้วยตนเองด้วย ID ผู้ใช้ที่กำหนดและแก้ไขข้อผิดพลาด


1

ผมมีข้อผิดพลาดที่คล้ายกันและได้รับการแก้ไขได้โดยการสนับสนุนครั้งแรกขึ้นstatoverrideไฟล์แล้วลบทุกบรรทัดที่มีคำว่าpostdrop

อย่าลืมเพิ่มบรรทัดใหม่ที่ท้ายไฟล์statoverride

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.