Как исправить dpkg, поврежденный драйвером Brother MFC-7340 deb

Я получаю apt-get ошибку, которая говорит

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

Brmfc7340lpr - это драйвер принтера - это локальный файл deb. Выполнение очистки dpkg или apt-get не работает и не работает apt-get install -f,

Как переустановить пакет из локального файла deb?

Выход:

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% 

4 ответа

Решение

Вы всегда можете (пере) установить пакет, используя dpkg:

dpkg --install local-file.deb

Чтобы выполнить установку в "чистой комнате", вы можете сначала очистить пакет, а затем установить его снова:

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

Возможно, вам придется добавить опцию --force-depends во время чистки, если какой-то другой пакет зависит от brmfc7340lpr,

Обновление: Судя по опубликованной вами расшифровке стенограммы, brmfc7340lpr Пакет не может быть (пере) установлен, потому что его сценарий после удаления завершается с ошибкой.

Эти файлы хранятся в каталоге /var/lib/dpkg/info; за каждую упаковку X, может быть любой из этих скриптов:

  • X.postinst запускать после установки пакета, например, для запуска служб, предоставляемых пакетом.

  • X.prerm запустить перед удалением / очисткой пакета, например, чтобы убедиться, что демоны, предоставляемые пакетом, остановлены.

  • X.postrm запускать после удаления пакета, например, чтобы сигнализировать любой службе, необязательно, используя пакет, что он больше не доступен. (Например, пакет драйвера принтера может потребовать, чтобы cpus / lpr удалил принтеры в зависимости от этого конкретного драйвера.)

Теперь это brmfc7340lpr пакет, кажется, пытается (пере) запустить lpdдемон демонтирования после удаления, который не будет работать, поскольку Ubuntu использует вместо этого CUPS: вам обязательно нужно найти драйвер принтера, совместимый с CUPS - см. ссылку в ответе Хорхе Кастро. (Я думаю, что это ошибка в пакете, так как она не должна перезапускать lpd обслуживание безоговорочно, но просто перезагрузите его, если он уже работает.)

Наилучший вариант продвижения вперед - ответ на панели запуска:

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

Это будет эффективно (повторно) запускать CUPS, когда lpd вместо этого ищется услуга.

В противном случае я вижу только два варианта, оба довольно неприятные:

  1. Либо отредактируйте /var/lib/dpkg/info/brmfc7340lpr.postrm сценарий, и закомментируйте строку, которая вызывает /etc/init.d/lpd start(или же restart или же stop), (например, просто замените его /bin/true). Другой вариант - просто разместить exit 0 как первая строка без комментариев в скрипте. Это было бы моим любимым, но требует немного уверенности в редактировании сценариев оболочки.

  2. устанавливать lprВычисти brmfc6340lpr пакет, продувка lpr: это требует немного внимания, как lpr конфликтует с системой спулинга принтера Ubuntu по умолчанию CUPS:

    а. sudo aptitude install lpr (это удалит cups-bsd а также ubuntu-desktop как побочный эффект)

    б. sudo aptitude purge brmfc7340lpr lpr (должно работать сейчас)

    с. sudo aptitude install cups-bsd ubuntu-desktop (восстановить систему в исходное состояние)

Решение Риккардо должно работать, я полагаю, что проблема заключается здесь:

start: Unknown job: lpd

Угадайте 1: похоже, что deb пытается перезапустить сервис, который не работает и выдает ошибку. Попробуйте установить lpr пакет из репозиториев, а затем установить Deb и посмотреть, если это работает.

Угадайте 2: Похоже, вы пытаетесь установить deb с веб-сайта для принтера Brother 7340: эта страница может быть хорошей отправной точкой, если вы хотите разделить ее на другой вопрос.

Собственно, я столкнулся с той же проблемой. Оказывается, я следовал некоторой не относящейся к делу информации и создал /etc/init.d/lpd файл в качестве мягкой ссылки на /etc/init.d/cups.postrm скрипт проверяет наличие lpd и, если он существует, пытается запустить службу. После того, как я удалил файл lpd с мягкой ссылкой в ​​каталоге init.d, установка и удаление пакета вернулись к нормальному состоянию.

Проблема здесь заключается в том, что пакету удалось наполовину установить себя, но теперь все его сценарии сопровождающего не работают (из-за невозможности запустить службу lpd).

Вы должны быть в состоянии решить эту проблему путем редактирования /var/lib/dpkg/info/brmfc7340lpr.postrm файл и комментирование (добавив # до начала строки) строка, которая пытается запустить lpd (или просто закомментировать все). Вы должны быть в состоянии бежать dpkg --configure -a чтобы правильно установить пакет, прежде чем вы сможете удалить его.

Возможно, вам придется отредактировать больше скриптов сопровождающего пакета, чтобы удалить пакет - все они будут в /var/lib/dpkg/info/и они будут названы что-то вроде brmfc7340lpr.X где X может быть одним из preinst, postinst, prerm, postrm,

Это пример того хаоса, который может нанести плохо написанный пакет.

Другие вопросы по тегам