Người dùng không xác định trong tệp statoverride


22

Tôi đã có một ứng dụng được cài đặt trên htpc của tôi đang chạy máy chủ Ubuntu có tên là mediatomb, vài tháng trước tôi đã gỡ cài đặt nó và thay thế nó bằng cài đặt Plex. Vào cuối tuần khi truy vấn người dùng hiện có trên máy tôi nhận thấy rằng nhóm và người dùng mediatomb vẫn tồn tại nên tôi đã sử dụng lệnh

sudo deluser mediatomb

để loại bỏ người dùng. Một ngày sau, tôi đã đi cài đặt htop sudo apt-get install htopnhưng tôi thấy rằng tôi đã gặp lỗi:

lỗi cú pháp: người dùng không xác định 'mediatomb' trong tệp statoverride.

Tôi nghĩ rằng tôi chỉ có thể mở tệp statoverride bằng cách sử dụng nano và chỉnh sửa mọi tham chiếu đến mediatomb nhưng tôi không thể mở tệp chính xác bằng nano. Tôi đã chạy một lệnh grep

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

đã trả về hai vị trí trong tệp không còn tồn tại trên hệ thống nữa. Cách duy nhất tôi có thể giải quyết vấn đề bây giờ là tạo lại mediatomb người dùng và sau đó mọi thứ hoạt động tốt. Rõ ràng đây không phải là một giải pháp lâu dài tốt.

Những gì tôi muốn biết là, tập tin statoverride là gì và tại sao nó giữ lại người dùng trong đó đã bị xóa khỏi hệ thống? Tôi đang loại bỏ người dùng theo cách sai hoặc không dùng nữa?

Câu trả lời:


47

Tôi biết câu hỏi này hơi cũ, nhưng đã bắt gặp điều này hai lần bây giờ. Một lần với puppet, một lần với virtualbox. Nó cắt lên một lần nữa và tôi tìm thấy một cái gì đó hoạt động. Đây là một biến thể trên serverfault.com .

Thay vì dựa vào dpkg-statoverride --remove /path/to/offending/file.extđó, ném lỗi

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

Bạn có thể thích sed, hoặc đơn giản là bạn có thể mở /var/lib/dpkg/statoverridetrong trình soạn thảo văn bản yêu thích của mình và chỉ xóa các dòng có chứa (các) mục gây ra lỗi. Tôi thấy rằng đây là một lỗi tài liệu, cho cả Debian và Ubuntu,

Điều đó nói rằng, tôi chỉ sửa lỗi của mình bằng cách chỉnh sửa thủ công bất kỳ mục nào gây ra lỗi và tôi vui vẻ tải lại các gói. Hy vọng điều này sẽ giúp người tiếp theo, người truy cập kết quả tìm kiếm số 1 của Google cho vấn đề này.


Cảm ơn bạn rất nhiều! Tôi mới bắt đầu lo lắng rằng tôi sẽ dành tất cả sự vĩnh cửu để khám phá những góc khuất của thế giới linux để giải quyết con gà trống đơn giản này tôi đã thực hiện vài ngày trước. không biết làm thế nào tôi quản lý để làm điều này, nhưng loại bỏ một dòng khỏi tập tin đó đã khắc phục vấn đề. cảm ơn rất nhiều vì đã tiết kiệm cho tôi rất nhiều thời gian
Peter Perháč

Bạn thật tuyệt vời! Đã sửa lỗi của tôi.
Elad Weiss

16

Trong khi tôi không thể trả lời câu hỏi của bạn khi được hỏi, tôi có thể giúp bạn giải quyết vấn đề nan giải. Tôi đã gặp phải vấn đề chính xác giống như bạn gặp phải sau khi sử dụng 'Tài khoản người dùng' để xóa người dùng 'backuppc' - người dùng tôi đã cấu hình thủ công để sao lưu. Vâng, tôi đã loại bỏ tuyến đường đó nhưng không cố gắng xóa người dùng cho đến vài tuần sau (IE - hôm nay). Tôi đã không gặp phải bất kỳ rắc rối nào cho đến khi Trình quản lý cập nhật tìm thấy và cố gắng áp dụng các bản cập nhật; quá trình sẽ không đọc

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:

Sau một số tìm kiếm, tôi tìm thấy một giải pháp.

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

Đã sửa lỗi bằng cách chạy: 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

Xin lỗi tôi không thể trả lời câu hỏi của bạn, nhưng đây là kết quả thứ hai trong google nên tôi muốn đặt giải pháp ở đây cho mọi người. Câu trả lời của tôi bắt nguồn từ http://rickfoosusa.blogspot.com/2012/04/howto-ubfox-unknown-user-in.html .


3
Đây là cách tiếp cận tồi tệ nhất cho vấn đề. Thay vào đó, bạn nên cài đặt lại / cấu hình lại gói thay vì đi khắp nơi xóa những thứ không có nghĩa là sẽ bị xóa.
Braiam

4

Tôi đã nhận được lỗi sau:

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)

Lệnh dưới đây đã giải quyết vấn đề cài đặt apt-get của tôi

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

Bạn có thể thay đổi từ crontab nhưng vẫn giữ '/ d' cho đến khi bạn có thể cài đặt thành công bất kỳ apt-get nào mà không có bất kỳ lỗi cú pháp nào.

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

2

Đó là bởi vì bạn có thể đã xóa người dùng và bây giờ dpkg truy vấn /etc/passwdđể so sánh với tệp statoverride, nó kiểm tra xem tất cả các mục của tệp statoverride có trong passwd không và nếu không, hãy đưa ra cảnh báo, đó là điều đang xảy ra.

Điều đó có thể dễ dàng sửa chữa nếu bạn cấu hình lại / cài đặt lại gói có liên quan (trong trường hợp của bạn mediatomb, nó có thể là bất cứ thứ gì khác, may mắn thay, Debian (hệ điều hành Ubuntu dựa trên) sử dụng cùng tên người dùng như tên của dự án) và nó sẽ (tái) tạo người dùng trong tệp passwd.

sudo apt-get --reinstall install package

hoặc là

sudo dpkg-reconfigure package

1

Khi tôi cài đặt DelugeD, nó đã tạo một người dùng có tên là debian-deluged. Sau đó, tôi đã thay đổi cấu hình Deluge để sử dụng ID người dùng khác và tôi đã xóa người dùng được tạo tự động. Điều này dẫn đến statoverridelỗi khi cài đặt đồng hồ tốc độ gói.

Tôi đã khởi chạy sudo nano /var/lib/dpkg/statoverridevà thay thế thủ công người dùng được tạo tự động bằng ID người dùng được chỉ định và lỗi đã được khắc phục.


1

Tôi đã có một lỗi tương tự và đã sửa nó bằng cách trước tiên sao lưu tệp statoverride và sau đó xóa tất cả các dòng có chứa từ đăng .

Nhớ thêm một dòng mới vào cuối tập tin statoverride .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.