Як виправити dpkg, зламаний драйвером дебтету Brother MFC-7340


9

Я отримую помилку влучного отримання, яка говорить

E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.

Brmfc7340lpr - драйвер принтера - це локальний файл дебюту. Зробити 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% 

Ви можете перейменувати своє запитання. Це робить вашу проблему звучанням занадто загальним. Ви справжнє питання не в тому, як заново встановити будь-який локальний деб, а як вирішити дуже конкретну проблему.
andrewsomething

Відповіді:


13

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

Інакше я бачу лише два варіанти, обидва досить неприємні:

  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(має працювати зараз)

    c. sudo aptitude install cups-bsd ubuntu-desktop(відновлення системи до початкового стану)


dpkg - встановлення не працює
Роман А. Тейчер

1
@Roman Яке повідомлення про помилку ви отримуєте? Чи має --purgeперший і потім --installпрацювати?
Ріккардо Муррі

@ Роман оновив деякі конкретні інструкції, які можуть допомогти. Я погоджуюсь із коментарем andrewsomething, що це більше не виглядає загальним питанням і його слід перейменовувати.
Ріккардо Муррі

1
Я врешті перейменував lpd на nlpdn тимчасово, щоб встановити його.
Роман А. Тейчер

5

Рішення Ріккардо має спрацювати, я думаю, проблема полягає тут:

start: Unknown job: lpd

Вгадайте 1: Схоже, деб намагається перезапустити службу, яка не працює і не помиляється. Спробуйте встановити lprпакет із сховищ, а потім встановіть деб і подивіться, чи це працює.

Вгадайте 2: Це здається, що ви намагаєтесь встановити деб з веб-сайту для принтера брата 7340: Ця сторінка може стати гарною відправною точкою, якщо ви хочете розділити її на інше питання.


/etc/init.d/lpd початок початку: Невідома робота: lpd
Роман А. Тейчер

3

Насправді я зіткнувся з тією ж проблемою. Виявляється, я пішов якийсь - то непотрібну інформацію і створили /etc/init.d/lpdфайл як м'яку посилання на /etc/init.d/cups The .postrmскрипт перевіряє LPD і якщо він існує, намагається запустити службу. Після того, як я видалив м'який зв'язаний файл lpd у каталозі init.d, установка та видалення пакета повернулися до нормального.


2

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

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

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

Це приклад роду хаосу, який може погано написати пакет.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.