So beheben Sie ein vom Brother MFC-7340 deb-Treiber defektes dpkg

9

Ich erhalte einen apt-get-Fehler, der besagt

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

Der brmfc7340lpr ist ein Druckertreiber - es ist eine lokale Deb-Datei. Ein dpkg oder apt-get purge zu machen funktioniert nicht und auch nicht apt-get install -f.

Wie installiere ich ein Paket aus einer lokalen Deb-Datei neu?

Ausgabe:

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
quelle
Möglicherweise möchten Sie Ihre Frage umbenennen. Dadurch klingt Ihr Problem etwas zu allgemein. Ihre eigentliche Frage ist nicht, wie Sie eine lokale Deb neu installieren, sondern wie Sie mit einem ganz bestimmten Problem umgehen.
Andrews etwas

Antworten:

13

Sie können ein Paket jederzeit (neu) installieren, indem Sie dpkg:

dpkg --install local-file.deb

Um eine "Reinraum" -Installation durchzuführen, können Sie zuerst das Paket löschen und dann erneut installieren:

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

Möglicherweise müssen Sie --force-dependswährend der Bereinigung eine Option hinzufügen , wenn ein anderes Paket davon abhängt brmfc7340lpr.

Update: Basierend auf dem von Ihnen veröffentlichten Transkript scheint es, dass das brmfc7340lprPaket nicht (erneut) installiert werden kann, da das Skript nach dem Entfernen fehlerhaft ist.

Diese Dateien werden im Verzeichnis gespeichert /var/lib/dpkg/info. Für jedes Paket Xkann eines der folgenden Skripte vorhanden sein:

  • X.postinstFühren Sie diese aus, nachdem das Paket installiert wurde, z. B. um die vom Paket bereitgestellten Dienste zu starten.

  • X.prermFühren Sie diese Option aus, bevor Sie das Paket entfernen / löschen, z. B. um sicherzustellen, dass die vom Paket bereitgestellten Daemons gestoppt werden.

  • X.postrmFühren Sie diese aus, nachdem das Paket entfernt wurde, z. B. um einem Dienst, der optional das Paket verwendet, zu signalisieren, dass es nicht mehr verfügbar ist. (Beispielsweise möchte ein Druckertreiberpaket möglicherweise cpus / lpr signalisieren, Drucker abhängig von diesem bestimmten Treiber zu entfernen.)

Nun brmfc7340lprscheint dieses Paket zu versuchen, den lpd Drucker-Daemon beim Entfernen (neu) zu starten , was nicht funktioniert, da Ubuntu stattdessen CUPS verwendet: Sie sollten auf jeden Fall nach einem CUPS-kompatiblen Druckertreiber suchen - siehe den Link in der Antwort von Jorge Castro. (Ich denke, dies ist ein Fehler im Paket, da der lpdDienst nicht unbedingt neu gestartet werden sollte, sondern nur neu geladen werden sollte, wenn er bereits ausgeführt wird .)

Die beste Option, um fortzufahren, ergibt sich aus dieser Launchpad-Antwort :

ln -s /etc/init.d/cpus /etc/init.d/lpd

Dadurch wird CUPS effektiv (neu) gestartet, wenn lpdstattdessen nach dem Dienst gesucht wird.

Ansonsten sehe ich nur zwei Optionen, die beide ziemlich unangenehm sind:

  1. Bearbeiten Sie entweder das /var/lib/dpkg/info/brmfc7340lpr.postrmSkript und kommentieren Sie die Zeile aus, die aufgerufen wird /etc/init.d/lpd start (oder restartoder stop) (z. B. ersetzen Sie sie einfach durch /bin/true). Eine andere Möglichkeit besteht darin, nur exit 0als erste Zeile ohne Kommentar im Skript zu platzieren. Dies wäre mein Favorit, erfordert aber ein wenig Vertrauen in die Bearbeitung von Shell-Skripten.

  2. Installieren lpr, Löschen des brmfc6340lprPakets, Löschen lpr: Dies erfordert ein wenig Aufmerksamkeit, da lprKonflikte mit dem Standard-Ubuntu-Drucker-Spooling-System CUPS auftreten:

    ein. sudo aptitude install lpr(Dies wird entfernt cups-bsdund ubuntu-desktopals Nebeneffekt)

    b. sudo aptitude purge brmfc7340lpr lpr(sollte jetzt funktionieren)

    c. sudo aptitude install cups-bsd ubuntu-desktop(System in seinen ursprünglichen Zustand zurückversetzen)

Riccardo Murri
quelle
dpkg --install funktioniert nicht
Roman A. Taycher
1
@ Roman Welche Fehlermeldung erhalten Sie? Funktioniert --purgezuerst und dann --install?
Riccardo Murri
@ Roman aktualisiert mit einigen spezifischen Anweisungen, die helfen könnten. Ich stimme dem Kommentar von andrewsomething zu, dass dies keine generische Frage mehr ist und umbenannt werden sollte.
Riccardo Murri
1
Am Ende habe ich lpd vorübergehend in nlpdn umbenannt, um es zu installieren.
Roman A. Taycher
5

Riccardos Lösung sollte funktionieren, ich vermute, das Problem liegt hier:

start: Unknown job: lpd

Vermutung 1: Es sieht so aus, als würde die Deb versuchen, einen Dienst neu zu starten, der nicht ausgeführt wird und fehlerhaft ist. Versuchen Sie, das lprPaket aus den Repositorys zu installieren und dann das Deb zu installieren, und prüfen Sie, ob dies funktioniert.

Vermutung 2: Es hört sich so an, als würden Sie versuchen, eine Deb von einer Website für einen Bruder 7340-Drucker zu installieren: Diese Seite ist möglicherweise ein guter Ausgangspunkt, wenn Sie sie in eine andere Frage aufteilen möchten.

Jorge Castro
quelle
/etc/init.d/lpd Start Start: Unbekannter Job: lpd
Roman A. Taycher
3

Eigentlich bin ich auf das gleiche Problem gestoßen. Es stellte sich heraus, dass ich einige irrelevante Informationen befolgt und eine /etc/init.d/lpdDatei als Softlink zu erstellt habe. /etc/init.d/cups Das .postrmSkript sucht nach lpd und versucht, den Dienst zu starten, falls vorhanden. Nachdem ich die softlinked lpd-Datei im Verzeichnis init.d gelöscht hatte, wurde die Installation und Entfernung des Pakets wieder normal.

Matt
quelle
2

Das Problem hier scheint zu sein, dass das Paket es geschafft hat, sich zur Hälfte zu installieren, aber jetzt sind alle seine Maintainer-Skripte fehlerhaft (da der lpd-Dienst nicht gestartet werden kann).

Sie sollten in der Lage sein, dies zu beheben, indem Sie die /var/lib/dpkg/info/brmfc7340lpr.postrmDatei bearbeiten und #die Zeile auskommentieren ( indem Sie am Anfang der Zeile hinzufügen ), die versucht, lpd zu starten (oder einfach alles auskommentieren). Sie sollten dann in der Lage sein dpkg --configure -a, das Paket ordnungsgemäß zu installieren, bevor Sie es entfernen können.

Sie könnten mehrere der Pakete Betreuer - Skripte , um bearbeiten müssen das Paket entfernen - sie alle in sein werden /var/lib/dpkg/info/, und sie werden wie etwas genannt werden , brmfc7340lpr.Xwo Xeiner der folgenden sein kann preinst, postinst, prerm, postrm.

Dies ist ein Beispiel für die Art von Chaos, die ein schlecht geschriebenes Paket anrichten kann.

RAOF
quelle