Cách sửa lỗi dpkg bị hỏng bởi trình điều khiển gỡ lỗi Brother MFC-7340


9

Tôi đang gặp lỗi apt-get nói rằng

E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.

Brmfc7340lpr là trình điều khiển máy in - đó là tệp gỡ lỗi cục bộ. Làm một dpkg hoặc apt-get purge không hoạt động, cũng không apt-get install -f.

Làm cách nào để cài đặt lại gói từ tệp gỡ lỗi cục bộ?

Đầu ra:

box-name% sudo apt-get upgrade
[sudo] password for username: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
box-name% sudo apt-get purge brmfc7340lpr
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
box-name% sudo dpkg --purge brmfc7340lpr 
dpkg: error processing brmfc7340lpr (--purge):
 Package is in a very bad inconsistent state - you should
 reinstall it before attempting a removal.
Errors were encountered while processing:
 brmfc7340lpr
box-name% sudo dpkg --install brmfc7340lpr-2.0.2-1.i386.deb
Selecting previously deselected package brmfc7340lpr.
(Reading database ... 725204 files and directories currently installed.)
Preparing to replace brmfc7340lpr 2.0.2-1 (using .../brmfc7340lpr-2.0.2-1.i386.deb) ...
Unpacking replacement brmfc7340lpr ...
start: Unknown job: lpd
dpkg: warning: subprocess old post-removal script returned error exit status 1
dpkg - trying script from the new package instead ...
start: Unknown job: lpd
dpkg: error processing brmfc7340lpr-2.0.2-1.i386.deb (--install):
 subprocess new post-removal script returned error exit status 1
start: Unknown job: lpd
dpkg: error while cleaning up:
 subprocess new post-removal script returned error exit status 1
Errors were encountered while processing:
brmfc7340lpr-2.0.2-1.i386.deb
box-name% sudo apt-get install -f                                     
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
box-name% 

Bạn có thể muốn đổi tên câu hỏi của bạn. Nó làm cho vấn đề của bạn nghe có vẻ hơi quá chung chung. Câu hỏi thực sự của bạn không phải là làm thế nào để cài đặt lại bất kỳ cuộc tranh luận cục bộ nào, mà là cách xử lý một vấn đề rất cụ thể.
andrews Something 6/10/2016

Câu trả lời:


13

Bạn luôn có thể (cài đặt lại) một gói bằng cách sử dụng dpkg:

dpkg --install local-file.deb

Để thực hiện cài đặt "phòng sạch", trước tiên bạn có thể lọc gói và sau đó cài đặt lại:

dpkg --purge brmfc7340lpr
dpkg --install brmfc7340lpr*.deb

Bạn có thể cần thêm tùy chọn --force-dependstrong quá trình thanh lọc, nếu một số gói khác phụ thuộc vào brmfc7340lpr.

Cập nhật: Dựa trên bản ghi bạn đã đăng, có vẻ như brmfc7340lprgói không thể được cài đặt lại vì tập lệnh xóa bài của nó bị lỗi.

Những tập tin được lưu trữ trong thư mục /var/lib/dpkg/info; đối với mỗi gói X, có thể có bất kỳ một trong các tập lệnh này:

  • X.postinstchạy sau khi gói đã được cài đặt, ví dụ, để bắt đầu các dịch vụ được cung cấp bởi gói.

  • X.prermchạy trước khi gỡ / xóa gói, ví dụ, để đảm bảo rằng các trình tiện ích được cung cấp bởi gói bị dừng lại.

  • X.postrmchạy sau khi gói đã bị xóa, ví dụ, để báo hiệu bất kỳ dịch vụ nào tùy chọn sử dụng gói không còn khả dụng. (Ví dụ: gói trình điều khiển máy in có thể muốn báo hiệu cpus / lpr để xóa máy in tùy thuộc vào trình điều khiển cụ thể đó.)

Bây giờ, brmfc7340lprgói này dường như cố gắng (khởi động lại) lpd trình nền máy in khi gỡ bỏ, điều này sẽ không hoạt động vì Ubuntu sử dụng CUPS thay vào đó: bạn chắc chắn nên tìm trình điều khiển máy in tương thích CUPS - xem liên kết trong câu trả lời của Jorge Castro. (Tôi nghĩ rằng đây là một lỗi trong gói, vì nó không nên khởi động lại lpddịch vụ một cách vô điều kiện, mà chỉ tải lại nếu nó đang chạy .)

Tùy chọn tốt nhất để đi tiếp đến từ câu trả lời launchpad này :

ln -s /etc/init.d/cpus /etc/init.d/lpd

Điều này sẽ có hiệu quả (tái) bắt đầu CUPS khi lpddịch vụ được tìm kiếm thay thế.

Mặt khác, tôi chỉ thấy hai tùy chọn, cả hai đều khá khó chịu:

  1. Chỉnh sửa /var/lib/dpkg/info/brmfc7340lpr.postrmtập lệnh và nhận xét dòng đang gọi /etc/init.d/lpd start (hoặc restarthoặc stop), (ví dụ: chỉ cần thay thế nó bằng /bin/true). Một lựa chọn khác là chỉ đặt exit 0dòng không bình luận đầu tiên trong kịch bản. Đây sẽ là yêu thích của tôi, nhưng đòi hỏi một chút tự tin với việc chỉnh sửa các kịch bản shell.

  2. Cài đặt lpr, lọc brmfc6340lprgói, thanh lọc lpr: điều này đòi hỏi một chút chú ý vì lprxung đột với hệ thống lưu trữ máy in Ubuntu mặc định CUPS:

    a. sudo aptitude install lpr(điều này sẽ loại bỏ cups-bsdubuntu-desktopnhư là một tác dụng phụ)

    b. sudo aptitude purge brmfc7340lpr lpr(nên làm việc ngay bây giờ)

    c. sudo aptitude install cups-bsd ubuntu-desktop(khôi phục hệ thống về trạng thái ban đầu)


dpkg - cài đặt không hoạt động
Roman A. Taycher

1
@Roman Bạn nhận được thông báo lỗi gì? Có --purgeđầu tiên và sau đó --installlàm việc?
Riccardo Murri

@Roman cập nhật với một số hướng dẫn cụ thể có thể giúp đỡ. Tôi đồng ý với nhận xét của andrews Something rằng đây không còn là một câu hỏi chung chung và nên được đổi tên.
Riccardo Murri

1
Cuối cùng tôi đã đổi tên lpd thành nlpdn để cài đặt nó.
Roman A. Taycher

5

Giải pháp của Riccardo sẽ hoạt động, tôi đoán vấn đề nằm ở đây:

start: Unknown job: lpd

Đoán 1: Có vẻ như deb đang cố khởi động lại một dịch vụ không chạy và bị lỗi. Hãy thử cài đặt lprgói từ kho lưu trữ và sau đó cài đặt deb và xem nếu nó hoạt động.

Đoán 2: Có vẻ như bạn đang cố gắng cài đặt một bản sửa lỗi từ một trang web cho máy in Brother 7340: Trang này có thể là điểm khởi đầu tốt nếu bạn muốn tách nó thành một câu hỏi khác.


/etc/init.d/lpd bắt đầu bắt đầu: Công việc không xác định: lpd
Roman A. Taycher

3

Thật ra, tôi gặp vấn đề tương tự. Hóa ra tôi đã theo dõi một số thông tin không liên quan và tạo một /etc/init.d/lpdtệp dưới dạng liên kết mềm đến /etc/init.d/cups Tập .postrmlệnh kiểm tra lpd và nếu nó tồn tại, hãy thử khởi động dịch vụ. Sau khi tôi xóa tệp lpd được liên kết mềm trong thư mục init.d, quá trình cài đặt và gỡ bỏ gói trở lại bình thường.


2

Vấn đề ở đây dường như là gói đã được quản lý để tự cài đặt một nửa, nhưng bây giờ các tập lệnh bảo trì của nó đều bị lỗi (do không thể khởi động dịch vụ lpd).

Bạn sẽ có thể giải quyết vấn đề này bằng cách chỉnh sửa /var/lib/dpkg/info/brmfc7340lpr.postrmtệp và nhận xét (bằng cách thêm #vào đầu dòng) dòng đang cố gắng bắt đầu lpd (hoặc chỉ nhận xét mọi thứ). Sau đó, bạn có thể chạy dpkg --configure -ađể cài đặt gói đúng cách trước khi bạn có thể gỡ bỏ gói.

Bạn có thể cần phải chỉnh sửa nhiều kịch bản gói duy trì để loại bỏ các gói - tất cả họ sẽ có trong /var/lib/dpkg/info/, và họ sẽ được đặt tên là một cái gì đó giống như brmfc7340lpr.Xnơi Xcó thể là một trong những preinst, postinst, prerm, postrm.

Đây là một ví dụ về sự tàn phá mà một gói viết kém có thể gây ra.

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.