Bagaimana cara memberitahu bahwa dependensi diselesaikan secara manual?

14

Katakanlah ada perangkat lunak yang tidak ingin saya instal apt, tetapi secara manual. (TeXLive, karena saya ingin menggunakan rilis 2011 dan apthanya memiliki versi 2009.)

Katakanlah ada perangkat lunak lain yang ingin saya instal apt, yang bagaimanapun tergantung pada perangkat lunak pertama. (Vim LaTeXSuite, karena sulit untuk menginstal secara manual untuk penggunaan di seluruh sistem.)

Per default, apttidak "melihat" perangkat lunak pertama, dan mulai menginstal banyak cruft yang tidak dibutuhkan dan tidak disukai (yaitu TeXLive 2009) hanya untuk memenuhi metadata ketergantungan.

Bagaimana saya bisa:

  • Beritahu aptbahwa paket yang diberikan (misalnya texlive) adalah diinstal untuk semua tujuan praktis, dan bahwa hal itu tidak harus diinstal sebagai dependensi beberapa paket lainnya?

  • Katakan aptuntuk menginstal paket yang diberikan (mis. vim-latexsuite) Tanpa peduli tentang ketergantungannya?

Saya sudah diayak melalui berbagai aptmanpages -terkait dan datang kosong, dan juga menemukan pertanyaan ini di situs ini tetapi merasa bahwa ada memiliki menjadi cara yang kurang hackish untuk melakukan hal ini, tidak ada?

(Dari waktu Gentoo saya, saya ingat emerge --injectdan /etc/portage/package.provides, dan pada dasarnya mencari yang aptsetara.)

DevSolar
sumber
TeX Live 2011 telah ditambahkan ke Debian Sid baru-baru ini, sehingga harus menyebar cepat atau lambat ke Mint juga (tetapi Ubuntu 12,04 "ketinggalan", jadi tidak lebih awal dari akhir Oktober dengan Ubuntu 12,10). Jika Anda benar-benar suka bertualang, Anda mungkin bisa mengambil paket dari Debian Sid, tetapi karena dalam hal ini menyangkut banyak paket, itu mungkin bukan solusi yang baik. Ada PPA di launchpad.net/~texlive-backports/+archive/ppa yang disiapkan (lihat laporan bug ini di Ubuntu ) yang mungkin bisa Anda gunakan di Mint juga.
Daniel Andersson
Tidak ada komentar downvote tiga tahun kemudian ... mau jelaskan?
DevSolar
@DevSolar: Sepertinya seseorang melakukan serial-downvoted pertanyaan dan keduanya menjawab tiga tahun setelah fakta, tanpa menjelaskan mengapa. Terbaik untuk hanya mengangkat bahu dan melanjutkan, saya kira :-).
Daniel Andersson

Jawaban:

13

Anda harus menggunakan equivspaket untuk menghasilkan paket meta yang menyediakan dependensi ini, dan kemudian gunakan dpkguntuk menginstal paket ini.

Memasang equivsdan membaca dokumentasinya seharusnya sudah cukup, tetapi panduan untuk Ubuntu ini cukup luas dan juga berlaku untuk sistem APT lainnya.


Juga, jika Anda merasa bahwa suatu paket harus dapat diinstal tanpa ketergantungan yang ditentukan, Anda harus mengajukan bug terhadap paket tersebut, menjelaskan kasus di mana ketergantungan tidak diperlukan.

Dalam hal ini , texlive-base-bintampaknya hanya "Direkomendasikan" dan bukan "Ketergantungan" pada basis distribusi Debian setidaknya (mungkin sebagian karena texlivemerupakan paket yang sangat besar), tetapi karena itu umum untuk menginstal upstream TeX Live on Debian sejak versi distribusi sering sangat tertinggal (dengan alasan bahwa paket tersebut adalah binatang buas sehingga seringkali tidak dapat dikemas tanpa pekerjaan yang substansial, yang sebagian besar dilakukan oleh satu atau beberapa orang, yang mengklaim mereka memiliki kehidupan di samping Debian), equivsTrik ini sering digunakan dengan TeX Live (wow, kalimat itu keluar dari tangan :-)).


Tambahan : Untuk instruksi yang lebih rinci bagi mereka yang ingin menginstal TeXLive di luar sistem paket, instruksi ini pada TeX.SX lebih luas dan kemungkinan besar akan terus diperbarui. Mereka juga memasukkan instruksi yang lebih eksplisit mengenai equivslangkah tersebut.

Daniel Andersson
sumber
Saya tidak tahu bagaimana ini terjadi, tetapi Linux Mint membuat texlive ketergantungan "keras" ... akan mencoba equivspaket.
DevSolar
equivsbekerja dengan baik. Saya membuat versi 9999 texlive-base-bin, menimpa paket "dummy" asli dengan nama yang sama (disediakan oleh texlive-binaries), dan diinstal vim-latexsuitetanpa masalah.
DevSolar
1

Anda dapat menggunakan --nodepsflag pada dpkg, yang seharusnya menginstal paket tanpa ketergantungan sama sekali.

   --ignore-depends=package,...
          Ignore  dependency-checking for specified packages (actu-
          ally, checking is performed, but only warnings about con-
          flicts are given, nothing else)

Ada pertanyaan yang sangat mirip pada Serverfault yang layak untuk dilihat juga

Journeyman Geek
sumber
Eh ... tidak ada yang seperti itu? (Setidaknya tidak pada kotak Linux Mint 12 yang saya miliki di sini.)
DevSolar
1
hm, saya tampaknya telah membuat kesalahan - untuk dpkg, tidak tepat - edit jawaban saya untuk mencerminkan ini
Journeyman Geek
Itu adalah sesuatu yang membingungkan saya tanpa akhir dengan turunan Debian: Banyaknya manajer paket berinteraksi. Saya berasumsi bahwa tidak ada tripfalls yang terlibat saat mencampurnya? Atau haruskah saya tetap berpegang pada salah satu dari mereka?
DevSolar
semuanya didasarkan pada dpkg, pada dasarnya, apt dan aptitude adalah ujung depan untuk itu, dan ada ujung depan untuk apt dan aptitude. dpkg biasanya digunakan ketika Anda ingin menginstal paket dari file .deb. Saya cenderung tetap pada apt-get dan dpkg untuk sebagian besar bagian saya sendiri. Mencampur manajer paket dengan rasa 'default' debian biasanya seharusnya cukup aman
Journeyman Geek
Itu membuat jawaban Anda solusi pilihan saya untuk masalah saya yang sebenarnya , karena tidak ada yang bergantung pada vim-latexsuite pada gilirannya. Namun, solusi ini tidak menandai "texlive" sebagai yang hadir , itu hanya membuat vim-latexsuite tidak memintanya. Dengan demikian, jawaban Daniel lebih cocok dengan judul pertanyaan. Tanda centang pergi kepadanya, pujian pergi ke Anda. ;-)
DevSolar
1

Berikut ini akan menghapus ketergantungan dari file .deb, dalam hal ini menghapus ketergantungan libperl5.20 dari freeradius:

dpkg-deb -x freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius
dpkg-deb -e freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius/DEBIAN
sed -i  -e 's/, libperl5.20 (>= 5.20.2)//g' freeradius/DEBIAN/control
dpkg-deb -b freeradius freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb

Ini memungkinkan Anda untuk menginstal paket tanpa perlu mengetahui ketergantungan yang ada.

Jika Anda menginstal versi paket tertentu secara manual maka Anda mungkin juga ingin berhenti apt-get upgradememperbarui paket di masa mendatang:

apt-mark hold freeradius
A.Badger
sumber