Recibo un error apt-get que dice
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
El brmfc7340lpr es un controlador de impresora, es un archivo deb local. Hacer una purga dpkg o apt-get no funciona, tampoco lo hace apt-get install -f
.
¿Cómo reinstalo un paquete desde un archivo deb local?
Salida:
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
fuente
fuente
Respuestas:
Siempre puede (re) instalar un paquete usando
dpkg
:Para realizar una instalación de "sala limpia", primero puede purgar el paquete y luego instalarlo nuevamente:
Es posible que deba agregar una opción
--force-depends
durante la purga, si depende de algún otro paquetebrmfc7340lpr
.Actualización: según la transcripción que publicó, parece que el
brmfc7340lpr
paquete no se puede (re) instalar porque su secuencia de comandos posterior a la eliminación está produciendo un error.Esos archivos se almacenan en el directorio
/var/lib/dpkg/info
; para cada paqueteX
, puede haber cualquiera de estos scripts:X.postinst
ejecutar después de que se haya instalado el paquete, por ejemplo, para iniciar los servicios proporcionados por el paquete.X.prerm
ejecutar antes de eliminar / purgar el paquete, por ejemplo, para garantizar que los demonios proporcionados por el paquete se detengan.X.postrm
ejecutar después de que se haya eliminado el paquete, por ejemplo, para indicar a cualquier servicio que utilice opcionalmente el paquete que ya no está disponible. (Por ejemplo, un paquete de controlador de impresora puede indicarle a cpus / lpr que elimine las impresoras dependiendo de ese controlador específico).Ahora, este
brmfc7340lpr
paquete parece intentar (re) iniciar ellpd
demonio de la impresora al eliminarlo, lo que no funcionará ya que Ubuntu usa CUPS en su lugar: definitivamente debe buscar un controlador de impresora compatible con CUPS; consulte el enlace en la respuesta de Jorge Castro. (Creo que este es un error en el paquete, ya que no debería reiniciar ellpd
servicio incondicionalmente, sino simplemente volver a cargarlo si ya se está ejecutando ).La mejor opción para avanzar proviene de esta respuesta de la plataforma de lanzamiento :
Esto efectivamente (re) iniciará CUPS cuando
lpd
se busque el servicio.De lo contrario, solo veo dos opciones, ambas bastante desagradables:
O bien editar el
/var/lib/dpkg/info/brmfc7340lpr.postrm
guión, y comentar la línea que se invoca/etc/init.d/lpd start
(orestart
ostop
), (por ejemplo, simplemente reemplazan con/bin/true
). Otra opción es colocarlaexit 0
como la primera línea sin comentarios en el script. Este sería mi favorito, pero requiere un poco de confianza al editar scripts de shell.Instalar
lpr
, purgar elbrmfc6340lpr
paquete, purgarlpr
: esto requiere un poco de atención, ya quelpr
entra en conflicto con las CUPS del sistema de spool de impresora predeterminado de Ubuntu:a.
sudo aptitude install lpr
(esto eliminarácups-bsd
yubuntu-desktop
como efecto secundario)si.
sudo aptitude purge brmfc7340lpr lpr
(debería funcionar ahora)C.
sudo aptitude install cups-bsd ubuntu-desktop
(restaurar el sistema a su estado original)fuente
--purge
Primero y luego--install
funciona?La solución de Riccardo debería funcionar, supongo que el problema radica aquí:
start: Unknown job: lpd
Adivina 1: Parece que deb está intentando reiniciar un servicio que no se está ejecutando y está produciendo errores. Intente instalar el
lpr
paquete desde los repositorios y luego instale el deb y vea si eso funciona.Adivina 2: Parece que estás intentando instalar una deb desde un sitio web para una impresora Brother 7340: esta página podría ser un buen punto de partida si quieres dividirla en otra pregunta.
fuente
En realidad, me encontré con el mismo problema. Resulta que seguí información irrelevante y creé un
/etc/init.d/lpd
archivo como un enlace suave a/etc/init.d/cups
El.postrm
script busca lpd y, si existe, intenta iniciar el servicio. Después de eliminar el archivo lpd softlinked en el directorio init.d, la instalación y eliminación del paquete volvió a la normalidad.fuente
El problema aquí parece ser que el paquete ha logrado instalarse a medias, pero ahora sus scripts de mantenimiento fallan (debido a que no puede iniciar el servicio lpd).
Debería poder resolver esto editando el
/var/lib/dpkg/info/brmfc7340lpr.postrm
archivo y comentando (agregando#
al inicio de la línea) la línea que está intentando iniciar lpd (o simplemente comentar todo). Debería poder ejecutardpkg --configure -a
para instalar el paquete correctamente antes de poder eliminarlo.Puede que tenga que editar más de las secuencias de comandos de paquetes de mantenedor con el fin de eliminar el paquete - todos ellos estarán en
/var/lib/dpkg/info/
, y van a ser nombrado algo asíbrmfc7340lpr.X
, dondeX
puede ser uno depreinst
,postinst
,prerm
,postrm
.Este es un ejemplo del tipo de estragos que un paquete mal escrito puede causar.
fuente