GNU/Linux >> Belajar Linux >  >> Linux

Apt rusak, dependensi hilang, bagaimana sekarang?

Masalah yang Anda hadapi adalah sebagai berikut. Anda mencoba menjalankan pembaruan reguler di kotak Linux Anda, kemungkinan besar sistem berbasis Ubuntu atau Debian yang menggunakan apt sebagai manajer paketnya. Setelah Anda memperbarui konten repo, Anda menjalankan perintah dist-upgrade, dan segera mendapatkan kesalahan. Apt mengeluh tentang dependensi yang hilang atau rusak, dan menyarankan Anda menjalankan kembali perintah dengan --fix-broken atau serupa. Namun, ini sepertinya tidak membantu.

Saya mengalami masalah ini beberapa minggu yang lalu di KDE neon. Masalahnya benar-benar mengganggu saya, karena tanpa pengetahuan ahli, tidak ada jalan keluar. Anda memiliki sistem yang tidak dapat digunakan yang tidak dapat diperbarui dengan andal. Ini sangat rapuh, dan kita berada di tahun 2020, ketika orang mengharapkan beberapa tingkat kekokohan dari perangkat lunak. LELZ. Saya memang memuji neon di masa lalu karena ketahanannya, tetapi kemudian ia melanjutkan dan membatalkan pekerjaannya sendiri. Bagaimanapun, izinkan saya menunjukkan kepada Anda bagaimana Anda dapat menyelesaikan masalah ini.

Masalah lebih detail

Inilah yang Anda lihat di baris perintah:

dpkg:arsip pemrosesan kesalahan /var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64.deb (--unpack):
mencoba menimpa '/ usr/share/locale/ar/LC_MESSAGES/calligraplan.mo', yang juga ada dalam paket calligra-data 1:3.1.0+p18.04+git20191222.0027-0
dpkg-deb:error:paste subprocess dibunuh oleh sinyal (Pipa rusak)
Terjadi kesalahan saat memproses:
/var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64 .deb
E:Sub-proses /usr/bin/dpkg mengembalikan kode kesalahan (1)

Dalam kasus saya, paket miring adalah Calligra. Saya tidak yakin mengapa itu ada di tempat pertama, tapi hei, kita harus memperbaikinya, kan. Jadi prosedur standarnya adalah menjalankan apt dengan opsi --fix-broken. Atau mungkin, Anda dapat mencoba dengan --ignore-missing, opsi valid lainnya. Kecuali Anda mencapai neraka ketergantungan siklik, dan tidak ada jalan keluar.

sudo apt --fix-broken install
Membaca daftar paket... Selesai
Membangun pohon ketergantungan
Membaca informasi status... Selesai
Anda mungkin ingin menjalankan 'apt -- fix-broken install' untuk memperbaikinya.
Paket berikut memiliki dependensi yang belum terpenuhi:
calligra :Depends:calligraplan (>=1:3.1.0+p18.04+git20191222.0027-0) tetapi 1:3.1.0+p18.04+ git20191119.0027-0 diinstal
calligraplan :Tergantung:calligra-libs (=1:3.1.0+p18.04+git20191119.0027-0) tetapi 1:3.1.0+p18.04+git20191222.0027 -0 diinstal
E:Dependensi yang tidak terpenuhi. Coba 'apt --fix-broken install' tanpa paket (atau tentukan solusinya).

Pada titik ini, Anda tidak dapat benar-benar menghapus Calligra, karena pengelola paket sudah dalam keadaan tidak stabil. Langkah logisnya adalah mengabaikan paket khusus ini, atau paket apa pun yang rusak, menggunakan opsi --ignore-missing atau sejenisnya, sayangnya, ini juga tampaknya tidak berhasil. Jadi sistemnya rusak.

Solusi

Satu-satunya cara mengatasi masalah ini adalah benar-benar mengedit file status manajer paket, dan secara manual mencabut penyebutan paket yang terpengaruh dan dependensinya, sehingga apt dapat melanjutkan dan menginstal bagian yang sehat. Sekarang, ini bukan hal yang baik, karena Anda akan dibiarkan dengan perangkat lunak yang belum ditambal - dalam beberapa kasus, ini mungkin penting, hal-hal yang menghadap ke Internet, bahkan mungkin dengan satu atau dua kerentanan nyata, atau mungkin perangkat lunak dengan bug yang muncul saat Anda bekerja (katakanlah salah satu perpustakaan sistem kritis). Tapi itu memungkinkan Anda untuk terus bekerja, dan mungkin menerima sejumlah pembaruan yang sehat di masa mendatang.

Yang Anda butuhkan saat ini adalah membuka /var/lib/dpkg/status di editor teks sebagai root. Pada titik ini, saya menemukan masalah bodoh lainnya, dan itulah fakta bahwa Anda tidak dapat "seharusnya" meluncurkan Kate sebagai root, karena kerentanan keamanan calon. Total dan omong kosong.

sudo kate /var/lib/dpkg/status
Mengeksekusi Kate dengan sudo tidak dapat dilakukan karena kerentanan keamanan yang tidak dapat diperbaiki.

Tetapi Anda dapat Sudo su -, dan kemudian menjalankan Kate sebagai root, tidak masalah. Ini adalah salah satu dari kasus "mari kita temukan masalah untuk solusi", karena tidak ada kaitannya dengan pekerjaan nyata, dan tidak membuat perbedaan apa pun, kecuali untuk mengganggu pengguna. Seolah-olah Anda tidak bisa begitu saja membuka jendela terminal dan menghapus hal-hal dengan sudo jika Anda mau.

Buka filenya. Ini hanya daftar panjang paket yang akan diinstal. Setiap paket dilengkapi dengan deskripsi, versi, dan dependensi apa pun. Bagi saya, solusinya adalah mencari penyebutan kata kaligra, dan kemudian hapus saja blok paket tersebut dari file status. Secara umum, file ini menggambarkan kekacauan dengan cukup baik, dengan semua bagian yang bergantung, direkomendasikan, istirahat, dan yang lainnya.

Paket:libzxingcore1
Status:install ok diinstal
Prioritas:opsional
...
Versi:1.0.7-1+18.04+bionic+build2
Tergantung:libc6 (>=2.14), libgcc1 (>=1:3.4), libstdc++6 (>=5.2)
...

Paket:mokutil
Status:install ok diinstal
Prioritas:opsional
...
Versi:0.3.0+1538710437.fb6250f-0ubuntu2~18.04.1
Tergantung:libc6 (>=2.14), libefivar1 (> =34), libssl1.1 (>=1.1.0)
...

Paket:libkf5itemviews-dev
Status:instal ok terinstal
Prioritas:opsional
...
Versi:5.65.0+p18.04+git20191222.0152-0
Menggantikan:libkf5itemviews-doc (<<5.61.90-0)
Tergantung:libkf5itemviews5 (=5.65.0+p18.04+git20191222.0152-0), qtbase5-dev (>=5.8.0~)
Rekomendasi:libkf5itemviews-doc (=5.65.0+p18.04+git20191222. 0152-0)
Istirahat:kio-dev (<<5.28), libkf5iconthemes-dev (<<5.51), libkf5kcmutils-dev (<<5.51), libkf5kio-dev (<<5.51), libkf5xmlgui-dev (<<5.51)
...

Tetapi tujuan kami sederhana - untuk menghapus entri yang bertentangan dan memungkinkan sistem kami bekerja. Memang, setelah saya menyelesaikan ini, saya dapat menjalankan kembali manajer paket apt dan menyelesaikan pembaruan. Pekerjaan selesai.

Kesimpulan

Saya terkejut dan kecewa bahwa kita berada dalam keadaan di mana satu komponen yang dikemas dengan buruk dapat sepenuhnya merusak keadaan sistem di Linux. Dan masalahnya, ada banyak cara untuk mencegah hal ini, jika saja Linux dikembangkan sebagai produk dan bukan sebagai serangkaian fungsi yang terfragmentasi oleh para pengembang yang tidak melihat gambaran yang lebih besar dari penggunaan sebenarnya. Misalnya, periksa apakah semua paket waras SEBELUM menjalankan instalasi. Hapus otomatis paket buruk jika teridentifikasi. Minta pengguna. Daftar hitam komponen yang buruk. Apa saja, sesuatu.

Tapi ini adalah masalah di tahun 2000, dan masih menjadi masalah di tahun 2020, dan inilah mengapa saya kebanyakan menggunakan Windows dalam pengaturan produksi saya, karena penderitaan bukanlah nama tengah saya. Jika Anda menemukan diri Anda tepat pada baris perintah, dan semuanya berjalan ke selatan, maka Anda mungkin ingin melihat file status. Ini akan membantu Anda mengatasi ketergantungan yang rusak atau hilang, dan memungkinkan Anda untuk memperbarui kotak Anda. Dengan nada sedih tapi bahagia, kita sudah selesai di sini.


Linux
  1. Manajer Paket APT di Linux Dijelaskan

  2. Apa yang Terjadi Pada /etc/apt/apt.conf?

  3. Apa itu build-essential &build-dep?

  1. Manajer paket Linux:dnf vs apt

  2. Manajemen paket Linux dengan apt

  3. reboot atau shutdown -r sekarang:perintah restart apa yang lebih aman?

  1. Apa manajer paket Linux favorit Anda?

  2. Cara Mendaftar Ketergantungan Paket Di Linux

  3. Bagaimana Cara Menginstal File Deb, Dengan Dpkg -i Atau Dengan Apt?