Apa yang dimaksud dengan "depend" dan "pre-depend", dan perbedaan antara 2 jenis persyaratan paket ketika saya menginstal sesuatu di Ubuntu?
Apa yang dimaksud dengan "depend" dan "pre-depend", dan perbedaan antara 2 jenis persyaratan paket ketika saya menginstal sesuatu di Ubuntu?
Jawaban:
Seperti yang diambil dari tautan ini: https://www.debian.org/doc/debian-policy/#document-ch-relationships
Ada 5 jenis dependensi:
Arti dari lima bidang ketergantungan adalah sebagai berikut:
Ini menyatakan ketergantungan mutlak. Paket tidak akan dikonfigurasikan kecuali semua paket yang terdaftar di bidang Depend nya telah dikonfigurasi dengan benar. Kolom Depends harus digunakan jika paket dependen diperlukan untuk paket tergantung untuk menyediakan sejumlah fungsionalitas yang signifikan. Bidang Depends juga harus digunakan jika skrip postinst atau prerm mengharuskan paket dependen untuk dibongkar atau dikonfigurasikan agar dapat dijalankan. Dalam hal konfigurasi postinst, paket yang tergantung akan dibongkar dan dikonfigurasikan terlebih dahulu.
Dalam hal prerm atau tindakan postinst lainnya, dependensi paket biasanya akan setidaknya dibongkar, tetapi mereka mungkin hanya "Setengah-Dipasang" jika pemutakhiran dependensi sebelumnya gagal. Akhirnya, bidang Depends harus digunakan jika paket tergantung-diperlukan oleh skrip postrm untuk sepenuhnya membersihkan setelah penghapusan paket. Tidak ada jaminan bahwa dependensi paket akan tersedia ketika postrm dijalankan, tetapi paket dependen lebih mungkin tersedia jika paket menyatakan dependensi (terutama dalam hal penghapusan postrm). Script postrm harus dengan anggun melewati tindakan yang memerlukan dependensi jika dependensi itu tidak tersedia.
Bidang ini seperti Depends, kecuali bahwa itu juga memaksa dpkg untuk menyelesaikan instalasi paket yang dinamai bahkan sebelum memulai instalasi paket yang menyatakan pra-dependensi . Ia bekerja seperti ini, ketika sebuah paket yang menyatakan pra-ketergantungan akan Dibongkar pra-ketergantungan dapat dipenuhi jika paket bergantung sepenuhnya dikonfigurasi, atau bahkan jika paket tergantung hanya dibongkar atau dalam keadaan "Setengah Dikonfigurasi", asalkan mereka telah dikonfigurasi dengan benar di beberapa titik di masa lalu (dan tidak dihapus atau dihapus sebagian karena).
Dalam hal ini, baik versi yang sebelumnya dikonfigurasi dan saat ini belum dibongkar atau "Setengah Dikonfigurasi" harus memenuhi setiap klausa versi di bidang Pra-Tergantung. Ketika paket yang menyatakan pra-dependensi akan dikonfigurasikan, pra-dependensi akan diperlakukan sebagai Tergantung normal. Itu akan dianggap puas hanya jika paket yang tergantung telah dikonfigurasi dengan benar. Namun, tidak seperti dengan Depends, Pre-Depends tidak mengizinkan dependensi sirkular untuk diputus. Jika ketergantungan melingkar ditemukan ketika mencoba untuk menghormati Pra-Dependen, instalasi akan dibatalkan.
Pra-Dependemen juga diperlukan jika skrip awal bergantung pada paket yang disebutkan. Yang terbaik adalah menghindari situasi ini jika memungkinkan. Pra-Dependensi harus digunakan secara hemat, lebih disukai hanya oleh paket-paket yang upgrade atau pemasangan prematurnya akan menghambat kemampuan sistem untuk melanjutkan dengan setiap upgrade yang mungkin sedang berlangsung.
Versi Lebih Kecil:
Istilah "ketergantungan" dapat digunakan secara luas untuk mencakup hubungan "Tergantung" dan "Pra-Tergantung" (dan kadang-kadang bahkan hubungan lain yang lebih lemah), atau dapat digunakan secara sempit sebagai sinonim dari "Tergantung".
Perbedaan antara hubungan paket "Depends" dan "Pre-Depends" adalah bahwa jika X bergantung pada Y, maka Y harus sepenuhnya dikonfigurasikan sebelum X dikonfigurasikan. (Konfigurasi adalah langkah instalasi di mana suatu paket, setelah file-nya dibongkar ke lokasi yang tepat - yaitu, sekali "diinstal" - memiliki perubahan apa pun yang diperlukan yang dibuat sehingga dimungkinkan untuk benar-benar menggunakan perangkat lunak yang disediakannya. Misalnya , konfigurasi server HTTP mungkin melibatkan memastikan ada www
pengguna dengan kemampuan yang tepat dan /var/www
direktori dengan izin yang tepat.) Sebaliknya, jika X pra-tergantung pada Y maka Y harus diinstal dan (biasanya) sepenuhnya dikonfigurasi sebelum X bahkan diinstal .
Lihat Bagian 7.2 dari Manual Kebijakan Debian untuk lebih jelasnya. Saya mengutip dua bagian yang paling relevan di sini, tetapi ada informasi lain di bagian itu (dan dalam bab 7 lebih umum) yang membantu menerangi bagaimana dependensi bekerja.
Depends
Ini menyatakan ketergantungan mutlak. Paket tidak akan dikonfigurasikan kecuali semua paket yang terdaftar di
Depends
bidangnya telah dikonfigurasikan dengan benar (kecuali ada ketergantungan melingkar seperti dijelaskan di atas).The
Depends
lapangan harus digunakan jika bergantung-pada paket diperlukan untuk paket tergantung untuk menyediakan sejumlah besar fungsi.The
Depends
lapangan juga harus digunakan jikapostinst
atauprerm
script memerlukan tergantung-pada paket untuk menjadi dibongkar atau dikonfigurasi untuk menjalankan. Dalam hal konfigurasi postinst, paket yang tergantung akan dibongkar dan dikonfigurasikan terlebih dahulu. (Jika kedua paket terlibat dalam loop ketergantungan, ini mungkin tidak berfungsi seperti yang diharapkan; lihat penjelasan beberapa paragraf kembali.) Dalam kasusprerm
ataupostinst
tindakan lain , dependensi paket biasanya akan setidaknya dibongkar, tetapi mereka mungkin hanya "Setengah Terpasang" jika pemutakhiran dependensi sebelumnya gagal.Akhirnya,
Depends
bidang tersebut harus digunakan jika paket yang tergantung dibutuhkan olehpostrm
skrip untuk membersihkan sepenuhnya setelah penghapusan paket. Tidak ada jaminan bahwa dependensi paket akan tersedia saatpostrm
dijalankan, tetapi paket dependen lebih mungkin tersedia jika paket menyatakan ketergantungan (terutama dalam kasuspostrm remove
). Thepostrm
Script harus anggun melewatkan tindakan yang memerlukan ketergantungan jika itu ketergantungan tidak tersedia.
Pre-Depends
Bidang ini seperti
Depends
, kecuali bahwa itu juga memaksadpkg
untuk menyelesaikan instalasi paket yang dinamai bahkan sebelum memulai instalasi paket yang menyatakan pra-ketergantungan, sebagai berikut:Ketika sebuah paket yang menyatakan pra-dependensi akan dibongkar , pra-dependensi dapat dipenuhi jika paket dependen-on dikonfigurasi secara penuh, atau bahkan jika paket-paket yang tergantung hanya dibongkar atau dalam "Setengah -Configured "state, asalkan mereka telah dikonfigurasi dengan benar di beberapa titik di masa lalu (dan tidak dihapus atau dihapus sebagian sejak itu). Dalam hal ini, baik versi yang sebelumnya dikonfigurasi dan saat ini belum dibongkar atau "Setengah Dikonfigurasi" harus memenuhi klausa versi apa pun di
Pre-Depends
bidang.Ketika paket yang menyatakan pra-dependensi akan dikonfigurasikan , pra-dependensi akan diperlakukan sebagai normal
Depends
. Itu akan dianggap puas hanya jika paket yang tergantung telah dikonfigurasi dengan benar. Namun, tidak seperti denganDepends
,Pre-Depends
tidak mengizinkan dependensi melingkar untuk diputus. Jika ketergantungan melingkar ditemukan ketika mencoba untuk menghormatiPre-Depends
, instalasi akan dibatalkan.
Pre-Depends
juga diperlukan jikapreinst
skrip tergantung pada paket yang disebutkan. Yang terbaik adalah menghindari situasi ini jika memungkinkan.
Pre-Depends
harus digunakan dengan hemat, lebih disukai hanya oleh paket-paket yang upgrade atau pemasangan prematurnya akan menghambat kemampuan sistem untuk melanjutkan dengan setiap upgrade yang mungkin sedang berlangsung.Anda tidak boleh menentukan
Pre-Depends
entri untuk suatu paket sebelum ini telah dibahas padadebian-devel
milis dan konsensus tentang melakukan hal yang telah dicapai. Lihat Dependensi, Bagian 3.5 .