Je reçois une erreur apt-get qui dit
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
Le brmfc7340lpr est un pilote d'imprimante - c'est un fichier deb local. Faire une purge dpkg ou apt-get ne fonctionne pas non plus apt-get install -f
.
Comment réinstaller un package à partir d'un fichier deb local?
Production:
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%
drivers
package-management
Roman A. Taycher
la source
la source
Réponses:
Vous pouvez toujours (ré) installer un package en utilisant
dpkg
:Pour effectuer une installation en "salle blanche", vous pouvez d'abord purger le package puis le réinstaller:
Vous devrez peut-être ajouter une option
--force-depends
pendant la purge, si un autre package en dépendbrmfc7340lpr
.Mise à jour: D'après la transcription que vous avez publiée, il semble que le
brmfc7340lpr
package ne puisse pas être (ré) installé car son script de post-suppression est en erreur.Ces fichiers sont stockés dans un répertoire
/var/lib/dpkg/info
; pour chaque packageX
, il peut exister l'un de ces scripts:X.postinst
exécuté après l'installation du package, par exemple pour démarrer les services fournis par le package.X.prerm
exécutez avant de supprimer / purger le package, par exemple pour vous assurer que les démons fournis par le package sont arrêtés.X.postrm
exécuté après la suppression du package, par exemple pour signaler à tout service utilisant éventuellement le package qu'il n'est plus disponible. (Par exemple, un package de pilotes d'imprimante peut vouloir signaler à cpus / lpr de supprimer les imprimantes en fonction de ce pilote spécifique.)Maintenant, ce
brmfc7340lpr
paquet semble essayer de (re) démarrer lelpd
démon de l' imprimante lors de la suppression, ce qui ne fonctionnera pas car Ubuntu utilise CUPS à la place: vous devriez certainement rechercher un pilote d'imprimante compatible CUPS - voir le lien dans la réponse de Jorge Castro. (Je pense que c'est un bug dans le package, car il ne devrait pas redémarrer lelpd
service sans condition, mais simplement le recharger s'il est déjà en cours d'exécution .)La meilleure option pour aller de l'avant vient de cette réponse du tableau de bord :
Cela démarrera (redémarrera) efficacement CUPS lorsque le
lpd
service sera recherché.Sinon, je ne vois que deux options, toutes deux plutôt désagréables:
Modifiez le
/var/lib/dpkg/info/brmfc7340lpr.postrm
script et commentez la ligne qui invoque/etc/init.d/lpd start
(ourestart
oustop
) (par exemple, remplacez-la simplement par/bin/true
). Une autre option consiste à simplement placerexit 0
comme première ligne de non-commentaire dans le script. Ce serait mon préféré, mais nécessite un peu de confiance avec l'édition des scripts shell.Installer
lpr
, purger lebrmfc6340lpr
paquet, purgerlpr
: cela nécessite un peu d'attention car il y a deslpr
conflits avec le système de spoulage d'imprimante Ubuntu par défaut CUPS:une.
sudo aptitude install lpr
(cela supprimeracups-bsd
etubuntu-desktop
comme effet secondaire)b.
sudo aptitude purge brmfc7340lpr lpr
(devrait fonctionner maintenant)c.
sudo aptitude install cups-bsd ubuntu-desktop
(restaurer le système à son état d'origine)la source
--purge
abord et ensuite--install
?La solution de Riccardo devrait fonctionner, je suppose que le problème réside ici:
start: Unknown job: lpd
Devinez 1: Il semble que le deb essaie de redémarrer un service qui n'est pas en cours d'exécution et qui génère des erreurs. Essayez d'installer le
lpr
package à partir des référentiels, puis installez le deb et voyez si cela fonctionne.Devinez 2: Il semble que vous essayez d'installer un deb à partir d'un site Web pour une imprimante Brother 7340: Cette page peut être un bon point de départ si vous souhaitez la scinder en une autre question.
la source
En fait, je suis tombé sur le même problème. Il s'avère que j'ai suivi des informations non pertinentes et créé un
/etc/init.d/lpd
fichier en tant que lien logiciel vers/etc/init.d/cups
Le.postrm
script vérifie lpd et s'il existe, essaie de démarrer le service. Après avoir supprimé le fichier lpd lié par un lien logiciel dans le répertoire init.d, l'installation et la suppression du package sont revenues à la normale.la source
Le problème semble être que le paquet a réussi à se faire à moitié installé, mais maintenant ses scripts de maintenance sont tous défaillants (car ils ne peuvent pas démarrer le service lpd).
Vous devriez pouvoir résoudre ce problème en modifiant le
/var/lib/dpkg/info/brmfc7340lpr.postrm
fichier et en commentant (en ajoutant#
au début de la ligne) la ligne qui essaie de démarrer lpd (ou tout simplement commenter tout). Vous devriez alors pouvoir exécuterdpkg --configure -a
pour obtenir le package correctement installé avant de pouvoir le supprimer.Vous pourriez avoir besoin de modifier plusieurs des packages scripts de maintenance afin de supprimer le paquet - ils seront tous dans
/var/lib/dpkg/info/
, et ils vont être nommé quelque chose commebrmfc7340lpr.X
oùX
peut être l' unpreinst
,postinst
,prerm
,postrm
.Ceci est un exemple du genre de ravages qu'un paquet mal écrit peut causer.
la source