Estou recebendo um erro apt-get que diz
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
O brmfc7340lpr é um driver de impressora - é um arquivo deb local. Fazer uma limpeza do dpkg ou apt-get não funciona, nem funciona apt-get install -f
.
Como reinstalar um pacote de um arquivo deb local?
Resultado:
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
fonte
fonte
Respostas:
Você sempre pode (re) instalar um pacote usando
dpkg
:Para fazer uma instalação em "sala limpa", você pode primeiro limpar o pacote e depois instalá-lo novamente:
Pode ser necessário adicionar a opção
--force-depends
durante a limpeza, se algum outro pacote dependerbrmfc7340lpr
.Atualização: com base na transcrição que você postou, parece que o
brmfc7340lpr
pacote não pode ser (re) instalado porque seu script de pós-remoção está com erro.Esses arquivos são armazenados no diretório
/var/lib/dpkg/info
; para cada pacoteX
, pode haver qualquer um destes scripts:X.postinst
executar após a instalação do pacote, por exemplo, para iniciar os serviços fornecidos pelo pacote.X.prerm
execute antes de remover / limpar o pacote, por exemplo, para garantir que os daemons fornecidos pelo pacote sejam parados.X.postrm
executar após a remoção do pacote, por exemplo, para sinalizar opcionalmente qualquer serviço usando o pacote que ele não está mais disponível. (Por exemplo, um pacote de driver de impressora pode querer sinalizar cpus / lpr para remover impressoras, dependendo desse driver específico.)Agora, este
brmfc7340lpr
pacote parece tentar (re) iniciar olpd
daemon da impressora após a remoção, que não funcionará como o Ubuntu usa o CUPS: você definitivamente deve procurar um driver de impressora compatível com o CUPS - veja o link na resposta de Jorge Castro. (Eu acho que isso é um bug no pacote, pois ele não deve reiniciar olpd
serviço incondicionalmente, mas apenas recarregá-lo se ele já estiver em execução .)A melhor opção para avançar vem desta resposta da barra de ativação :
Isso efetivamente (re) iniciará o CUPS quando o
lpd
serviço for pesquisado.Caso contrário, só vejo duas opções, ambas bastante desagradáveis:
Edite o
/var/lib/dpkg/info/brmfc7340lpr.postrm
script e comente a linha que está chamando/etc/init.d/lpd start
(ourestart
oustop
), (por exemplo, substitua-a por/bin/true
). Outra opção é apenas colocarexit 0
como a primeira linha sem comentários no script. Este seria o meu favorito, mas requer um pouco de confiança na edição de scripts de shell.Instale
lpr
, limpe obrmfc6340lpr
pacote, limpelpr
: isso requer um pouco de atenção, poislpr
conflita com o CUPS do sistema de spool da impressora Ubuntu padrão:uma.
sudo aptitude install lpr
(isso removerácups-bsd
eubuntu-desktop
como efeito colateral)b.
sudo aptitude purge brmfc7340lpr lpr
(deve funcionar agora)c.
sudo aptitude install cups-bsd ubuntu-desktop
(restaure o sistema ao seu estado original)fonte
--purge
primeiro e depois--install
do trabalho?A solução de Riccardo deve funcionar, acho que o problema está aqui:
start: Unknown job: lpd
Adivinha 1: Parece que o deb está tentando reiniciar um serviço que não está sendo executado e está com erro. Tente instalar o
lpr
pacote a partir dos repositórios e, em seguida, instale o deb e veja se isso funciona.Adivinha 2: Parece que você está tentando instalar uma deb a partir de um site para uma impressora 7340 da Brother: Esta página pode ser um bom ponto de partida se você desejar dividi-la em outra pergunta.
fonte
Na verdade, eu tive o mesmo problema. Acontece que segui algumas informações irrelevantes e criei um
/etc/init.d/lpd
arquivo como um softlink para/etc/init.d/cups
O.postrm
script verifica o lpd e, se existir, tenta iniciar o serviço. Depois que eu excluí o arquivo lpd vinculado no diretório init.d, a instalação e remoção do pacote voltou ao normal.fonte
O problema aqui parece ser que o pacote conseguiu se instalar pela metade, mas agora seus scripts de manutenção estão com falha (devido à impossibilidade de iniciar o serviço lpd).
Você poderá resolver isso editando o
/var/lib/dpkg/info/brmfc7340lpr.postrm
arquivo e comentando (adicionando#
ao início da linha) a linha que está tentando iniciar o lpd (ou apenas comentar tudo). Você deve ser capaz de executardpkg --configure -a
para instalar o pacote corretamente antes de poder removê-lo.Talvez seja necessário editar mais dos scripts de pacotes de mantenedor, a fim de remover o pacote - todos estarão na
/var/lib/dpkg/info/
, e eles vão ser nomeado algo comobrmfc7340lpr.X
queX
pode ser um dospreinst
,postinst
,prerm
,postrm
.Este é um exemplo do tipo de destruição que um pacote mal escrito pode causar.
fonte