Perbaiki paket yang setengah terinstalasi

42

Saya mendapatkan kesalahan saat menggunakan sudo apt-get upgradepernyataan:

dpkg: error processing libgfortran3:amd64 (--configure):
  package libgfortran3:amd64 is not ready for configuration
  cannot configure (current status `half-installed')
Errors were encountered while processing:
  libgfortran3:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Tampaknya tidak menghalangi instalasi / meningkatkan aplikasi lain. Saya percaya masalah ini muncul karena mematikan PC saya secara langsung ketika aplikasi sedang ditingkatkan.

Bagaimana saya bisa memperbaikinya?

Barun
sumber

Jawaban:

38
sudo dpkg --remove --force-remove-reinstreq --dry-run libgfortran3:amd64

Itu hanya lari kering. Saya tidak yakin apa yang libgfortran3akan dihapus akan tetapi jalankan itu dan lihat. Dengan asumsi itu tidak akan melahap seluruh sistem, jalankan lagi tanpa --dry-rundan kemudian Anda dapat sudo apt-get install ...paket yang Anda butuhkan kembali.

Oli
sumber
4
Berhasil, terima kasih! Sebagai catatan, saya menjalankannya dan katanya dpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removalsaya mengunduh paket secara manual dari packages.ubuntu.com dan berlari sudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/IS. Kemudian semuanya menjadi baik.
Bora M. Alper
1
Dalam kasus saya, setelah mengikuti instruksi ini, hanya menjalankan 'apt-get install -f' menginstal ulang paket dan juga memperbaiki beberapa orang lain dengan dependensi yang rusak karenanya. Ini untuk paket data libx11 pada debian 7.
bchurchill
Tanpa --dry-run, seperti yang Anda katakan, itu berhasil untuk saya. Terima kasih!
Forvas
70

Untuk setengah kesalahan paket yang terinstal, --reinstall bekerja untuk saya:

sudo apt-get install --reinstall packagename 
Eric Olson
sumber
1
Ya, tetapi peringatan bahwa setelah menginstal ulang nama paket, apt-get kemudian akan melanjutkan untuk mengkonfigurasi paket yang setengah terkonfigurasi.
Cedric Knight
5
ini lebih aman daripada jawaban yang diterima imho.
Zanna
sudo apt-get install --reinstal ncurses-base dan kemudian saya menjalankan pembaruan sudo apt-get menggunakan pengguna root (sudo -s), itu berfungsi seperti itu ...
ArifMustafa
besar. hanya solusi yang memecahkan masalah saya
iWizard
ini melakukannya untuk saya. php-pear membuat saya sakit kepala. Terima kasih!
pcarvalho
6
sudo apt install --reinstall packagename

Ini berfungsi seperti pesona. Itu menyelesaikan masalah yang telah saya alami selama berbulan-bulan. Kasus saya dengan paketlibmysqlcppconn7v5

Yang saya lakukan adalah lari sudo apt install --reinstall libmysqlcppconn7v5

Siech Ben
sumber
3

Saya mendapat masalah "paket setengah terinstal" yang sama dengan paket kibana. Saya mendapat kesalahan berikut:

dpkg: error processing kibana (--configure):
package kibana is not ready for configuration
cannot configure (current status 'half-installed')
Errors were encountered while processing:
  kibana
E: Sub-process /usr/bin/dpkg returned an error code (1)

Jika ada yang masih menghadapi masalah seperti ini, maka Anda dapat mencoba ini:

sudo rm /var/lib/dpkg/info/kibana*
cd /var/cache/apt/archives
sudo rm kibana*
apt-get --reinstall install kibana

Ini bekerja untuk saya. Anda hanya perlu mengganti kata 'kibana' dengan nama paket yang setengah terinstal.

Anower Perves
sumber
2

Jika Anda ingin memperbaikinya melalui GUI, Anda dapat menggunakan sinaptik. Synaptic adalah alat manajemen paket yang luar biasa yang dulu termasuk dalam versi ubuntu yang lebih lama. Untuk menginstalnya:

sudo apt-get install synaptic

klik pada memperbaiki paket yang rusak.

Mijo
sumber
synaptic tidak mencantumkan paket dalam kategori rusak :(
Barun
2

Ini akan memperbaiki masalah Anda tanpa menginstal ulang paket.

sudo dpkg --force-remove-reinstreq --remove <package_name here>

Diikuti oleh: sudo apt-get update

CodeGeass
sumber
Mengapa --force-remove-reinstreq? Manajer paket tidak menyatakan bahwa instalasi ulang diperlukan. Secara umum, penghapusan reguler berfungsi dengan baik untuk paket yang tidak dikonfigurasi. -1
David Foerster
Itu hanya apa yang saya lakukan ketika tidak sudo apt-get remove <packageada pilihan dan saya tidak ingin menginstal ulang paket yang setengah terinstal. Lalu, saya gunakan --force-remove-reinstrequntuk menghapus jung-jung itu .. PS: Ada di Linux Mint .. Saya ragu apakah itu akan berbeda karena Linux didasarkan pada Ubuntu ..
CodeGeass
1
Manajer paket bekerja sama di semua distribusi berbasis Debian (itulah dpkgsingkatan dari semuanya), tetapi Anda tidak boleh menggunakan --force-*"berjaga-jaga". Pesan-pesan kesalahan ada karena suatu alasan dan tidak boleh dianggap enteng oleh pengguna yang tidak berpengalaman, itulah sebabnya Anda seharusnya tidak menyarankan --force-*opsi yang tidak perlu kepada mereka. Kalau tidak, kami hanya bisa merekomendasikan untuk selalu menggunakan --force-allatau, lebih baik lagi, menghapus --force-*opsi dari dpkgsemuanya dan menjadikannya sebagai perilaku default karena itu akan lebih mudah dan lebih nyaman.
David Foerster
Oke, Akui saja ... Saya lebih peduli untuk menyelesaikan pekerjaan daripada, tahu apa dan bagaimana tepatnya itu dilakukan .. Permintaan maaf ..
CodeGeass
Hm ... Saya hanya melihat bahwa jawaban yang diterima menyarankan hal yang sama. Jadi saya mungkin salah tentang --force-remove-reinstreqtidak perlu. Tetapi itu juga berarti bahwa jawaban Anda (hampir) merupakan duplikat dari itu. Semoga lain kali lebih beruntung.
David Foerster