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

Я добираюсь, Кв. - получают ошибку, которая говорит

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% 
9
задан 18 February 2014 в 04:02

4 ответа

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

start: Unknown job: lpd

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

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

0
ответ дан 18 February 2014 в 04:02

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

0
ответ дан 18 February 2014 в 04:02

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

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

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

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

0
ответ дан 18 February 2014 в 04:02

Вы всегда можете (повторно) установить пакет, используя 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.

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

  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:

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

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

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

0
ответ дан 18 February 2014 в 04:02

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

Похожие вопросы: