Я добираюсь, Кв. - получают ошибку, которая говорит
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
brmfc7340lpr является драйвером принтера - это - локальный deb файл. Выполнение dpkg или склонный - добирается, чистка не работает, ни один не делает 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%
Решение Риккардо должно работать, я полагаю, что проблема заключается здесь:
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
.
Это пример хаоса, который может нанести плохо написанный пакет.
Вы всегда можете (повторно) установить пакет, используя dpkg
:
dpkg --install local-file.deb
Чтобы выполнить установку в «чистой комнате», вы можете сначала очистить пакет, а затем установить его снова: [ 1143]
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
, а просто перезагрузить его , если он уже запущен .)
Лучший вариант для перехода forward приходит от этого ответа панели запуска :
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:
a , sudo aptitude install lpr
(это удалит cups-bsd
и ubuntu-desktop
как побочный эффект)
b. sudo aptitude purge brmfc7340lpr lpr
(должно работать сейчас)
c. sudo aptitude install cups-bsd ubuntu-desktop
(восстановить систему в исходное состояние)