Cara menghapus paket yang rusak di ubuntu

38

Saya tidak dapat menghapus paket yang rusak. Gunakan perintah berikut: sudo apt-get -f install tetapi saya mendapatkan respons berikut:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Saya mencoba berbagai perintah seperti

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Tapi saya tidak mendapatkan hasil apa pun. Saya tidak dapat menginstal sinaptik. Ada ide bagaimana saya bisa menghapus paket yang rusak?

Krasimir
sumber
Berikut beberapa jawaban yang disarankan --force-remove-reinstreqdan --force-overwrite. Harap dicatat bahwa Anda harus menggunakan keduanya (terutama yang pertama) hanya jika Anda seorang ahli Linux, karena itu dapat menghancurkan sistem Anda sepenuhnya.
g_p

Jawaban:

55

jalankan perintah ini untuk menghapus paket yang rusak di ubuntu.

sudo dpkg --remove --force-remove-reinstreq package_name 

setelah menghapus paket, perbarui sistem Anda dengan perintah

sudo apt-get update

restart sistem setelah pembaruan berhasil.

premal
sumber
5
Perintah ini harus selalu dihindari karena merusak sistem Anda lebih dari itu perbaikan
rancho
2
@rancho tergantung pada paket apa itu.
Philip
nice one, cara Anda gus selalu menulis nama_paket, namun saya melihat daftar 900 baris dalam format gila, misalnya: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). menunggu LTS benar-benar telah melakukan trik gila ini kepada saya.
nyxee
@rancho "itu merusak sistem Anda lebih dari perbaikan" bisakah Anda menguraikan? man dpkgtidak banyak membantu.
Stéphane Gourichon
Ini adalah satu-satunya hal yang berhasil untuk saya. Saya merusak mysql saya saat memperbarui paket. Sekarang saya tidak bisa membersihkan atau menginstal ulang. Jadi ini menyelamatkan hidupku.
Ankit Singhaniya
11

Buka terminal Anda dan gunakan perintah berikut

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Itu harus menyelesaikan masalah Anda.

g_p
sumber
11

Saya telah menemukan bahwa:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Berfungsi paling baik. Jika itu memberi Anda kesalahan bahwa itu tidak akan menghapus paket karena itu tergantung pada paket lain, hapus paket itu juga. Anda harus mengulangi langkah ini beberapa kali dan menginstal ulang paket yang dihapus.

The force-remove-reinstreqadalah THE "opsi nuklir" menghapus sebuah paket. Hanya gagal jika ada paket lain tergantung pada paket yang akan Anda hapus - Sekali lagi, dalam hal ini, hapus juga paket yang tergantung.

Bryan Wilcutt
sumber
Opsi nuklir bekerja di mana pembersihan, pembersihan, instal ulang, autoremoves, melalui keduanya dpkgdan apt-getgagal. Terima kasih.
LAFK mengatakan Reinstate Monica
Ini adalah yang solusi terbaik jika Anda hanya ingin nuke semuanya dan memulai dari awal. Menyelamatkan saya banyak waktu! (Saya juga menggunakan --purge after --remove)
andersevenrud
tolong, bisakah kamu memberikan beberapa petunjuk tentang bagaimana mengisinya package_nameketika kita memiliki 1000+ baris (beberapa duplikat) di file log apt ..
nyxee
4

Ini memperbaiki masalah saya:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
Krasimir
sumber
Jadi harap tandai sebagai jawaban yang benar.
jarno
Bekerja dengan sempurna.
Shubham Patel
3

Buka terminal Anda, dan rekatkan baris ini demi baris

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

lalu coba lagi

rɑːdʒɑ
sumber
2

Kesalahan yang sama berulang Jika kita lakukan apt-get cleandan apt-get -f installkecuali kita menghapus data sampah dari /var/lib/dpkg/statusfile di Ubuntu.

Misalkan kita perlu menghapus paket apache broken. Awalnya kami harus membuka file status dan mencari paket apache. Hapus seluruh deskripsi paket dan simpan file status. Kemudian coba gunakan apt-get -f installdan apt-get clean.

pengguna649305
sumber
2

tidak ada yang di atas bekerja untuk saya. akhirnya saya mengedit file / var / lib / dpkg / status dan menghapus paket-paket dari sana.

Sulit saya tidak akan menyarankan untuk melakukan ini, hanya jika ada yang gagal ...

BonifatiusK
sumber
Ini sepertinya satu-satunya hal yang berhasil untuk saya. Bahkan yang disebut 'opsi nuklir' --force-remove-reinstreq tidak dapat menghapus paket yang menyinggung itu. Terima kasih Pak.
alex
1

Tak satu pun dari yang di atas bekerja untuk saya

Saya menggunakan sudo aptitude.

Itu menemukan kesalahan segera dan menawarkan opsi. Anda memilih dan memperbaikinya.

Aryeh Beitz
sumber
juga memperbaikinya untuk saya di debian - ini adalah satu-satunya solusi yang berfungsi untuk saya. Tidak ada komentar sebelum bekerja untuk saya! Terima kasih!
Hirbod
0

Ini dia:

perbarui daftar paket Anda seperti ini

 sudo apt-get update

lalu bersihkan semua paket parsial

 sudo apt-get autoclean

Sekarang bersihkan cache apt

 sudo apt-get clean

Sekarang hapus semua ketergantungan yang tidak perlu

 sudo apt-get autoremove

dari perintah di atas, Anda dapat mengidentifikasi paket yang rusak dan dengan paksa menghapusnya seperti ini

 sudo dpkg --remove --force-remove-reinstreq package_name

Akhirnya mopup semua paket lain dengan dependensi

 sudo apt-get -f install 

Katakan padaku bagaimana kelanjutannya.

Olu Smith
sumber
Saya pikir perintah ini salah: `sudo dpkg --remove -force --force-remove-reinstreq package_name.
Juan Simón
Ji ... jadi mana yang benar?
Olu Smith
0
  1. permintaan semua paket yang diinstal hari ini atau kemarin awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 yang menyebabkan masalah, jadi saya menghapus paket sudo dpkg -r wine-qqintl:i386

  3. selesai

Ming Zhanghui
sumber
1
ok, kita bisa mendapatkan paket yang baru saja diinstal seperti itu, tetapi ini tidak menjawab pertanyaan yang menanyakan bagaimana cara menghapus paket yang rusak
Zanna
0

Saya punya masalah dengan paket kodi yang rusak. Saya membuka manajer paket synaptic dan menggunakan filter "broken" untuk mencari paket dan menandainya untuk penghapusan total. Itu bekerja seperti juara.

Joe
sumber