Cối E: Quá trình phụ / usr / bin / dpkg trả về mã lỗi (1) Điều này có nghĩa là gì?


31

Tôi đã thấy thông báo này nhiều lần mỗi khi ai đó gặp sự cố khi cài đặt, nâng cấp hoặc gỡ bỏ một số phần mềm, nhưng tôi tự hỏi, nó có nghĩa gì và quan trọng hơn là có thể giải quyết nó không?

(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)

(ở trên chỉ là một ví dụ, không phải vấn đề thực tế của tôi)


2
Nếu bạn đã thử 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).
PJ Brunet

Câu trả lời:


30

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-getfail 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-10genchỉ 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/mongodbkị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 foundlỗ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 -slacầ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 -Csudo 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 đề.


như một thông báo chẩn đoán, nó hữu ích nếu bạn đọc toàn bộ lỗi (Đã gặp lỗi khi xử lý: mongodb-10gen) đó là lý do tại sao nó được liệt kê là E và không phải Lỗi
mchid 22/03/2015

1
@mchid nhưng điều gì gây ra lỗi? Nó không cung cấp cho bạn đầu mối vô hình.
Braiam 22/03/2015

@mchid vâng, làm sao tôi biết được nếu tôi chỉ đọc Errors were encountered while processing: mongodb-10gen? Như nó là, để giải quyết vấn đề, dòng đó là vô giá trị .
Braiam

Thật tệ, tôi nghĩ bạn chỉ đang tìm cách khắc phục vấn đề ("có thể giải quyết được không") Tôi đoán tôi đã đưa nó ra khỏi bối cảnh.
mchid 22/03/2015

BTW, chạy sudo touch /etc/init.d/mongodbvà sau đó chạy sudo apt-get purge mongodb-10genđể khắc phục vấn đề. Tôi đã kiểm tra điều này và miễn là tệp tồn tại (/etc/init.d/mongodb) dpkg sẽ tiếp tục ngay cả khi tệp trống, đó là những gì cảm ứng thực hiện (tạo một tệp trống).
mchid
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.