Как исправить 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
вместо этого ищется услуга.
В противном случае я вижу только два варианта, оба довольно неприятные:
Либо отредактируйте
/var/lib/dpkg/info/brmfc7340lpr.postrm
сценарий, и закомментируйте строку, которая вызывает/etc/init.d/lpd start
(или жеrestart
или жеstop
), (например, просто замените его/bin/true
). Другой вариант - просто разместитьexit 0
как первая строка без комментариев в скрипте. Это было бы моим любимым, но требует немного уверенности в редактировании сценариев оболочки.устанавливать
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
,
Это пример того хаоса, который может нанести плохо написанный пакет.