Dostaję komunikat o błędzie apt-get, który mówi
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
Brmfc7340lpr to sterownik drukarki - jest to lokalny plik deb. Wykonanie dpkg lub apt-get purge nie działa, podobnie jak nie apt-get install -f
.
Jak ponownie zainstalować pakiet z lokalnego pliku deb?
Wynik:
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
źródło
źródło
Odpowiedzi:
Zawsze możesz (ponownie) zainstalować pakiet, używając
dpkg
:Aby wykonać instalację w „czystym pokoju”, możesz najpierw wyczyścić pakiet, a następnie zainstalować go ponownie:
Może być konieczne dodanie opcji
--force-depends
podczas czyszczenia, jeśli zależy od jakiegoś innego pakietubrmfc7340lpr
.Aktualizacja: Na podstawie opublikowanego transkryptu wydaje się, że
brmfc7340lpr
pakiet nie może zostać (ponownie) zainstalowany, ponieważ jego skrypt po usunięciu jest błędny.Te pliki są przechowywane w katalogu
/var/lib/dpkg/info
; dla każdego pakietuX
może istnieć jeden z tych skryptów:X.postinst
uruchamiane po zainstalowaniu pakietu, np. w celu uruchomienia usług świadczonych przez pakiet.X.prerm
uruchom przed usunięciem / wyczyszczeniem pakietu, np. aby upewnić się, że demony dostarczone przez pakiet są zatrzymane.X.postrm
uruchamiany po usunięciu pakietu, np. w celu zasygnalizowania dowolnej usłudze opcjonalnie za pomocą pakietu, że nie jest ona już dostępna. (Na przykład pakiet sterownika drukarki może chcieć zasygnalizować cpus / lpr, aby usunąć drukarki w zależności od tego konkretnego sterownika).Teraz
brmfc7340lpr
wydaje się , że ten pakiet próbuje (ponownie) uruchomićlpd
demona drukarki po jego usunięciu, co nie będzie działać, ponieważ Ubuntu zamiast tego używa CUPS: zdecydowanie powinieneś poszukać sterownika drukarki kompatybilnego z CUPS - patrz link w odpowiedzi Jorge Castro. (Myślę, że jest to błąd w pakiecie, ponieważ nie powinien onlpd
bezwarunkowo ponownie uruchamiać usługi, ale wystarczy ją ponownie załadować, jeśli jest już uruchomiony .)Najlepsza opcja, by iść naprzód pochodzi z odpowiedzi startera :
To skutecznie (ponownie) uruchomi CUPS, gdy
lpd
zamiast tego zostanie wyszukana usługa.W przeciwnym razie widzę tylko dwie opcje, obie raczej nieprzyjemne:
Edytuj
/var/lib/dpkg/info/brmfc7340lpr.postrm
skrypt i skomentuj wiersz, który się wywołuje/etc/init.d/lpd start
(restart
lubstop
), (np. Po prostu zamień go na/bin/true
). Inną opcją jest po prostu umieszczenieexit 0
jako pierwszego wiersza bez komentarza w skrypcie. Byłoby to moje ulubione, ale wymaga nieco pewności przy edytowaniu skryptów powłoki.Zainstaluj
lpr
, wyczyśćbrmfc6340lpr
pakiet, wyczyśćlpr
: wymaga to trochę uwagi, ponieważ powodujelpr
konflikt z domyślnym systemem buforowania drukarki Ubuntu CUPS:za.
sudo aptitude install lpr
(spowoduje to usunięciecups-bsd
iubuntu-desktop
jako efekt uboczny)b.
sudo aptitude purge brmfc7340lpr lpr
(powinien działać teraz)do.
sudo aptitude install cups-bsd ubuntu-desktop
(przywróć system do pierwotnego stanu)źródło
--purge
najpierw, a potem--install
działa?Rozwiązanie Riccardo powinno zadziałać, zgaduję, że problem leży tutaj:
start: Unknown job: lpd
Zgadnij 1: Wygląda na to, że deb próbuje zrestartować usługę, która nie działa i występuje błąd. Spróbuj zainstalować
lpr
pakiet z repozytoriów, a następnie zainstalować deb i sprawdź, czy to działa.Zgadnij 2: Wygląda na to, że próbujesz zainstalować deb ze strony internetowej dla drukarki Brother 7340: Ta strona może być dobrym punktem wyjścia, jeśli chcesz podzielić ją na inne pytanie.
źródło
W rzeczywistości napotkałem ten sam problem. I okazuje się, następnie jakiś nieistotnych informacji i stworzył
/etc/init.d/lpd
plik jako dowiązanie do/etc/init.d/cups
The.postrm
kontroli scenariusz do LPD, a jeśli istnieje, próbuje uruchomić usługę. Po usunięciu pliku lpd z linkami programowymi w katalogu init.d instalacja i usuwanie pakietu wróciło do normy.źródło
Problem wydaje się polegać na tym, że pakietowi udało się w połowie zainstalować, ale teraz wszystkie jego skrypty obsługujące nie działają (z powodu niemożności uruchomienia usługi lpd).
Powinieneś być w stanie rozwiązać ten problem, edytując
/var/lib/dpkg/info/brmfc7340lpr.postrm
plik i komentując (dodając#
na początku linii) linię, która próbuje uruchomić lpd (lub po prostu komentować wszystko). Powinieneś być w stanie uruchomić,dpkg --configure -a
aby poprawnie zainstalować pakiet, zanim będziesz mógł go usunąć.Być może trzeba zmienić kilka skryptów pakietów instalacyjnych w celu usunięcia pakietu - oni wszyscy być
/var/lib/dpkg/info/
, a oni być nazwany cośbrmfc7340lpr.X
gdzieX
może być jednym zpreinst
,postinst
,prerm
,postrm
.Jest to przykład spustoszenia, które może siać źle napisana paczka.
źródło