Thông điệp đó là chung chung. Nó chỉ có nghĩa làdpkg
trường hợp được gọi bởi apt
/ apt-get
fail vì một số lý do. Nó không giải thích tại sao, làm thế nào hoặc đưa ra gợi ý về cách giải quyết nó. Là một thông điệp chẩn đoán, nó không hữu ích.
Bạn cần đọc các dòng trước tin nhắn (đôi khi khá nhiều trong số chúng) để tìm ra lỗi thực sự ngăn bạn hoàn thành việc cài đặt.
Vâng, nhưng làm thế nào để tôi giải quyết nó?
Không có cách duy nhất để giải quyết nó. Có rất nhiều lý do tại sao điều này có thể xảy ra đến mức cố gắng liệt kê tất cả chúng trong một bài viết là vô ích. Mỗi và mọi tình huống gần như là duy nhất cho gói / môi trường đó.
Nhưng, có sự cứu chuộc. Thực tế là bạn thấy thông báo này có nghĩa là có thể có nhiều thông tin liên quan hơn trong các dòng trước tin nhắn. Đối với mục đích minh họa, tôi sẽ sử dụng một ví dụ:
(Reading database ... 81657 files and directories currently installed.)
Removing mongodb-10gen ...
arg: remove
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--remove):
subprocess installed pre-removal script returned error exit status 100
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 100
Errors were encountered while processing:
mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
Bây giờ, để tìm ra vấn đề, bạn cần đọc ngược:
E: Sub-process /usr/bin/dpkg returned an error code (1)
không cho tôi biết bất cứ điều gì hữu ích. Vì vậy, di chuyển trên.
Errors were encountered while processing: mongodb-10gen
chỉ cho tôi biết gói nào có vấn đề. Là hữu ích nhưng không đủ.
subprocess installed post-installation script returned error exit status 100
: điều này cho tôi biết rằng kịch bản thất bại là postinst
, thực thi trong phần cài đặt sau. Điều này sẽ có ích trong một số tình huống, nhưng không phải trong trường hợp này.
dpkg: error while cleaning up:
không có gì hữu ích ở đây
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
CHƠI LÔ TÔ! Điều này cho chúng ta biết rằng invoke-rc.d
, một nhị phân điều khiển tập lệnh init trong hầu hết các hệ thống giống như Debian, đã thất bại. Nó thất bại vì không thể tìm thấy /etc/init.d/mongodb
kịch bản. Điều này tệ đây. Chúng ta cần tạo nó hoặc sao chép từ một nơi khác để nó bắt đầu hoạt động trở lại. Cài đặt lại gói cũng thường là một tùy chọn cho file not found
lỗi.
Trong trường hợp này, việc báo cáo lỗi là không cần thiết vì có thể chúng tôi là những người đã xóa tập lệnh, nhưng nếu bạn hoàn toàn chắc chắn rằng bạn đã không chạm vào tệp ( debsums -sla
cần xác nhận) thì hãy báo cáo lỗi.
Vì vậy, chính xác những gì bạn cần để được giúp đỡ? Lý tưởng nhất là đầu ra hoàn chỉnh của vấn đề. Cũng rất hữu ích khi bao gồm đầu ra của sudo dpkg -C
và sudo apt-get check
, và đầu ra của apt-cache policy package1 package2...
"gói1 gói2 ..." bao gồm tất cả các gói có vấn đề.
apt-get install (something)
và bạn nhận được thông báo lỗi này như tôi đã làm, giải pháp cho tôi làapt-get upgrade (something)
.