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

9

Я получаю ошибку 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% 
    
задан Roman A. Taycher 02.10.2010 в 12:06
источник

4 ответа

13

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

dpkg --install local-file.deb

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

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

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

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

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

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

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

  • X.postrm run после пакет удален, например, сигнализировать любую услугу, необязательно используя пакет, который не является дольше. (Например, пакет драйвера принтера может хотите сообщить 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 (система восстановления   к его исходному состоянию)

ответ дан Riccardo Murri 02.10.2010 в 12:19
источник
5

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

start: Unknown job: lpd

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

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

    
ответ дан Jorge Castro 04.10.2010 в 23:56
3

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

    
ответ дан Matt 19.10.2011 в 23:12
2

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

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

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

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

    
ответ дан RAOF 06.10.2010 в 01:04