Katakan bakat untuk mengabaikan paket yang rusak

8

Saya menginstal Amsynth dari Lucid di Karmic menggunakan:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

Alasan untuk menginstal versi Lucid adalah karena versi Karmic berumur 3 tahun dan crash pada mesin saya. Paket Lucid Amsynth tergantung pada versi libatk1 dan libjack0 yang lebih baru daripada Karmic, tapi saya pikir saya akan mengambil risiko, dan ternyata Amsynth berjalan dengan baik.

Namun aptitude mencoba meng-uninstall Amsynth setiap kali saya melakukan upgrade. Saya pikir saya sudah berhasil menahannya tetapi sekarang bakat dibatalkan. Bagaimana saya bisa memberi tahu aptitude untuk mengabaikan paket yang rusak dan melanjutkan.


sumber
Untuk saat ini saya baru saja mencopotnya. Saya hanya akan menginstal ulang setiap kali saya membutuhkannya lagi, tidak butuh waktu terlalu lama, sampai cukup mengganggu saya untuk mencoba mengkompilasinya lagi.
Jika Anda memerlukan sesuatu dari rilis yang lebih baru dan membutuhkan pustaka yang lebih baru, Anda biasanya dapat menariknya atau mengunduh paket sumber dan membangunnya kembali di sistem Anda. Namun saya telah menemukan ini mencoba menggunakan paket pihak ke-3 dan daripada peretasan diperlukan.
Jan Hudec

Jawaban:

7

Jika Anda menginstal program melalui file deb dan dpkg, Anda juga dapat mengubah dependensi file deb yang diinstal secara manual. Saya didorong ke ukuran ekstrem ini sekali ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

dan dpkg tidak tahu lagi tentang dependensi foo. Di vim Anda harus memilih ./control (Saya menggunakan vim untuk membaca file yang dikemas - bongkar dan gunakan editor lain dan bungkus ulang jika Anda mau) dan hapus dependensi yang tidak diinginkan dari baris

Depends: foo bar
skunk_michi
sumber
1
Anda lebih baik menggunakan dpkg-debdaripada ar. aradalah detail implementasi dpkg yang dapat berubah di masa mendatang.
jmtd
Terima kasih, solusi ini bekerja untuk saya tetapi ketika saya melakukan upgrade apt-get, saya menerima pesan "Paket-paket berikut telah disimpan: numptyphysics: i386" (upgrade-apt-get dist tidak mengatakan apa-apa). Apakah pesan ini normal dan tidak bisakah kita singkirkan?
baptx
4

Ada solusi yang diretas di Ubuntuforums . ~ Solusi dukun lebih baik, tetapi lebih banyak pekerjaan.

Saya tidak dapat menemukan apa pun di google tentang hal ini, simpan kompilasi 'paket dummy' Anda sendiri (tidak mungkin tanpa menghapus paket yang rusak. Kecuali Anda cukup beruntung telah memiliki alat), tetapi mencari di hard drive saya sendiri memberi saya jawabannya akhirnya!

Bagi siapa saja yang ingin tahu, inilah cara "melepaskan" paket dalam synaptic / aptitude / apt-get, tanpa menghapus instalannya.

Pertama-tama, catat paket yang Anda instal, dan paket yang tergantung padanya yang memberikan status rusak. Katakanlah saya memaksa pemasangan apel, yang tergantung pada paket usang yang tidak ada dalam repositori:

Dalam Kode jenis terminal:

sudo gedit /var/lib/dpkg/status

cari file untuk apel sampai Anda menemukan sesuatu seperti:

Kode:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Hapus usang dari baris Depends:, simpan file, dan Anda selesai. Semoga ini bisa membantu beberapa orang keluar.

Iain
sumber
ick. Temuan yang bagus, tapi saya bukan penggemar kebohongan kepada manajer paket (yang pada dasarnya adalah apa hack itu). lebih baik tidak menggunakan APT sama sekali daripada berlarian mematahkannya mau tak mau. Inilah sebabnya mengapa mengkompilasi paket Anda sendiri adalah hal yang baik - tidak ada dependensi yang rusak dan tidak ada kebohongan kepada manajer paket Anda.
quack quixote
Saya tidak punya masalah dengan berbohong kepada manajer paket, terutama karena dalam beberapa bulan saya akan menginstal ulang OS, tetapi saya tidak dapat menemukan file yang direferensikan di utas.
Aneh. Itu harus ada di sana. Coba lakukan "cd / var / lib / dpkg" dan kemudian "sudo nano status".
Iain
1
Tautan tidak lagi berfungsi. Yang merupakan alasan tepat mengapa jawaban tautan saja disukai di sekitar sini. Jika Anda jelaskan di sini, itu akan menjadi jawaban yang benar.
Jan Hudec
Tidak tahu apakah ini permanen atau tidak, tetapi sejauh ini sepertinya perbaikan yang layak untuk menginstal paket yang memiliki dependensi keras pada versi Java yang tidak lagi tersedia.
krispy
2

Di bagian Preferensi aptitude (Ctrl-T untuk masuk ke menu; di bawah Opsi), hapus centang opsi di bagian "Penanganan Ketergantungan" yang mengatakan "Secara otomatis memperbaiki paket yang rusak sebelum menginstal atau menghapus" . Itu seharusnya membuat aptitude berhenti mencoba untuk memperbaiki paket setiap kali Anda mengubah paket lain.

Sebagai perbaikan yang lebih permanen, Anda harus mengambil paket sumber untuk paket Lucid Amsynth yang Anda instal, serta paket sumber untuk libatk1 dan libjack0 , dan membangun paket Anda sendiri yang diperbarui. Bergantung pada apa lagi yang menggunakan pustaka tersebut, Anda mungkin perlu memperbarui paket lain juga, tetapi Anda mungkin bisa lolos hanya dengan itu. (Ini pada dasarnya mendukung paket-paket tersebut dari Lucid ke Karmic - Anda harus memeriksa repositori Karmic-backports atau PPA untuk melihat apakah ada yang sudah melakukan ini. Jika paket baru Anda berfungsi, pertimbangkan untuk mengirimnya ke backport Karmic untuk digunakan orang lain. )

quack quixote
sumber
Terima kasih saya sudah mencoba saran pertama Anda tetapi sepertinya tidak ada bedanya. Pembaruan hanya akan dibatalkan. Saya juga mencoba mengompilasinya sebelum saya mencoba menginstal paket Lucid tetapi tidak berhasil dengan itu. Saya mungkin akan mencoba lagi di masa depan.