Saya mendapatkan kesalahan apt-get yang mengatakan
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
Brmfc7340lpr adalah driver printer - ini adalah file deb lokal. Melakukan pembersihan dpkg atau apt-get tidak bekerja, begitu juga tidak apt-get install -f
.
Bagaimana cara menginstal ulang paket dari file deb lokal?
Keluaran:
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
sumber
sumber
Jawaban:
Anda selalu dapat (kembali) menginstal paket menggunakan
dpkg
:Untuk membuat instalasi "ruang bersih", Anda dapat membersihkan paket dan menginstalnya kembali:
Anda mungkin perlu menambahkan opsi
--force-depends
selama pembersihan, jika beberapa paket lain tergantungbrmfc7340lpr
.Pembaruan: Berdasarkan pada transkrip yang Anda poskan, tampaknya
brmfc7340lpr
paket itu tidak dapat diinstal ulang karena skrip pasca-penghapusannya tidak ada.File-file tersebut disimpan dalam direktori
/var/lib/dpkg/info
; untuk setiap paketX
, bisa ada salah satu dari skrip ini:X.postinst
jalankan setelah paket diinstal, misalnya, untuk memulai layanan yang disediakan oleh paket.X.prerm
jalankan sebelum mengeluarkan / membersihkan paket, mis., untuk memastikan bahwa daemon yang disediakan oleh paket dihentikan.X.postrm
dijalankan setelah paket dihapus, mis., untuk memberi sinyal layanan apa pun secara opsional menggunakan paket yang tidak lagi tersedia. (Misalnya, paket driver printer mungkin ingin memberi sinyal cpus / lpr untuk menghapus printer tergantung pada driver spesifik itu.)Sekarang,
brmfc7340lpr
paket ini tampaknya mencoba (memulai kembali)lpd
daemon printer setelah dihapus, yang tidak akan berfungsi karena Ubuntu menggunakan CUPS sebagai gantinya: Anda harus mencari driver printer yang kompatibel dengan CUPS - lihat tautan dalam jawaban Jorge Castro. (Saya pikir ini adalah bug dalam paket, karena seharusnya tidak me-restartlpd
layanan tanpa syarat, tetapi hanya memuatnya kembali jika sudah berjalan .)Pilihan terbaik untuk maju datang dari jawaban launchpad ini :
Ini akan secara efektif (kembali) memulai CUPS ketika
lpd
layanan sebaliknya dicari.Kalau tidak, saya hanya melihat dua opsi, keduanya agak tidak menyenangkan:
Edit
/var/lib/dpkg/info/brmfc7340lpr.postrm
skrip, dan komentari baris yang meminta/etc/init.d/lpd start
(ataurestart
ataustop
), (mis. Ganti saja dengan/bin/true
). Pilihan lain adalah hanya menempatkanexit 0
sebagai baris non-komentar pertama dalam skrip. Ini akan menjadi favorit saya, tetapi membutuhkan sedikit kepercayaan diri dengan mengedit skrip shell.Instal
lpr
, bersihkanbrmfc6340lpr
paket, bersihkanlpr
: ini memerlukan sedikit perhatian karenalpr
konflik dengan sistem spooling printer default Ubuntu CUPS:Sebuah.
sudo aptitude install lpr
(ini akan menghapuscups-bsd
danubuntu-desktop
sebagai efek samping)b.
sudo aptitude purge brmfc7340lpr lpr
(harus bekerja sekarang)c.
sudo aptitude install cups-bsd ubuntu-desktop
(mengembalikan sistem ke keadaan semula)sumber
--purge
pertama dan kemudian--install
bekerja?Solusi Riccardo harus berhasil, saya kira masalahnya ada di sini:
start: Unknown job: lpd
Tebak 1: Sepertinya deb mencoba untuk memulai kembali layanan yang tidak berjalan dan tidak berfungsi. Coba instal
lpr
paket dari repositori dan kemudian instal deb dan lihat apakah itu berhasil.Tebak 2: Sepertinya Anda mencoba memasang deb dari situs web untuk printer saudara 7340: Halaman ini mungkin merupakan titik awal yang baik jika Anda ingin membaginya menjadi pertanyaan lain.
sumber
Sebenarnya, saya mengalami masalah yang sama. Bergantian keluar Saya mengikuti beberapa informasi yang tidak relevan dan menciptakan
/etc/init.d/lpd
berkas sebagai softlink untuk/etc/init.d/cups
The.postrm
Script cek untuk lpd dan jika ada, mencoba untuk memulai layanan. Setelah saya menghapus file lpd softlink di direktori init.d, instalasi dan penghapusan paket kembali normal.sumber
Masalahnya di sini tampaknya bahwa paket telah berhasil mendapatkan dirinya sendiri setengah terinstal, tetapi sekarang skrip pengelola semuanya adalah faililng (karena tidak dapat memulai layanan lpd).
Anda harus dapat menyelesaikan ini dengan mengedit
/var/lib/dpkg/info/brmfc7340lpr.postrm
file dan mengomentari (dengan menambahkan#
ke awal baris) baris yang mencoba memulai lpd (atau hanya berkomentar semuanya). Anda kemudian dapat menjalankandpkg --configure -a
untuk mendapatkan paket yang diinstal dengan benar sebelum Anda dapat menghapusnya.Anda mungkin perlu mengedit lebih dari script paket maintainer untuk menghapus paket - mereka semua akan berada di
/var/lib/dpkg/info/
, dan mereka akan diberi nama sesuatu sepertibrmfc7340lpr.X
manaX
dapat menjadi salah satu daripreinst
,postinst
,prerm
,postrm
.Ini adalah contoh dari jenis kekacauan yang dapat ditimbulkan oleh paket yang ditulis dengan buruk.
sumber