Я получаю 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%
drivers
package-management
Роман А. Тайчер
источник
источник
Ответы:
Вы всегда можете (пере) установить пакет, используя
dpkg
:Чтобы выполнить установку в «чистой комнате», вы можете сначала очистить пакет, а затем установить его снова:
Вам может понадобиться добавить опцию
--force-depends
во время очистки, если какой-то другой пакет зависит отbrmfc7340lpr
.Обновление: Судя по опубликованной вами расшифровке,
brmfc7340lpr
пакет не может быть (пере) установлен (переустановлен) из-за ошибки его сценария после удаления.Эти файлы хранятся в каталоге
/var/lib/dpkg/info
; для каждого пакетаX
может быть любой из этих сценариев:X.postinst
запускать после установки пакета, например, для запуска служб, предоставляемых пакетом.X.prerm
запустить перед удалением / очисткой пакета, например, чтобы убедиться, что демоны, предоставляемые пакетом, остановлены.X.postrm
запускать после удаления пакета, например, чтобы сигнализировать любой службе, необязательно, используя пакет, что он больше не доступен. (Например, пакет драйвера принтера может потребовать, чтобы cpus / lpr удалил принтеры в зависимости от этого конкретного драйвера.)Теперь этот
brmfc7340lpr
пакет, похоже, пытается (пере) запуститьlpd
демон принтера после удаления, который не будет работать, поскольку Ubuntu вместо этого использует CUPS: вам обязательно нужно найти CUPS-совместимый драйвер принтера - см. Ссылку в ответе Хорхе Кастро. (Я думаю, что это ошибка в пакете, поскольку она не должна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
(восстановить систему в исходное состояние)источник
--purge
первый и потом--install
работать?Решение Риккардо должно работать, я полагаю, что проблема заключается в следующем:
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
.Это пример хаоса, который может нанести плохо написанный пакет.
источник