Paket nimadan iborat? Paketlar bilan ishlash tamoyillarini ko'rib chiqishni boshlashdan oldin, paketlarda nima borligi haqida gaplashamiz. Paket, qoida tariqasida, dasturning o'zini kompilyatsiya qilingan shaklda, ya'ni aslida ikkilik fayl shaklida o'z ichiga oladi.
Shuningdek, paketda meta-ma'lumotlar, ya'ni paketlarni boshqarish vositalari tomonidan ishlatiladigan boshqa ma'lumotlar to'g'risidagi ma'lumotlar ko'rsatilgan.
Meta-ma'lumot-bu ma'lum qoidalarga muvofiq tuzilgan tavsif bo'lib, unda paket nomi, versiya va tuzilish raqami, ishlab chiquvchi va uning master-sayti to'g'risidagi ma'lumotlar, fayllar ro'yxati, ularning fayl ierarxiyasidagi holati, bog'liqliklar ro'yxati mavjud. Shuningdek, bu erda dasturni joylashtirish uchun zarur bo'lgan o'rnatish va sozlash skriptlari mavjud bo'lishi mumkin.
O'rnatish skriptlaridan tashqari, paketda o'rnatishdan keyin bajariladigan harakatlar to'plami ham mavjud (masalan, o'rnatishdan keyingi konfiguratsiya). Paket, shuningdek, paket o'chirilgan taqdirda bajariladigan skriptni o'z ichiga oladi.
Keling, Debian uchun paket tuzilishi misolini ko'rib chiqaylik. Bog'liqliklar paket sarlavhasidagi Dependents maydonida aniqlanadi. Bu paketning to'g'ri ishlashi uchun bajarilishi kerak bo'lgan shartlar ro'yxati. Ushbu ma'lumot apt kabi vositalar yordamida kerakli kutubxonalarni, yordam dasturlarini, drayverlarni va boshqalarni o'rnatish uchun ishlatiladi.o'rnatilgan paketning bog'liqliklarini qondiradigan tegishli versiyalarda. Har bir qaramlik uchun siz ushbu shartni qondiradigan versiyalar doirasini cheklashingiz mumkin. Boshqacha qilib aytganda, agar bizga "2.15" ( "libc6 (>= 2.15)") ga teng yoki undan yuqori versiyada libc6 to'plami kerak bo'lsa, unda versiyalarni taqqoslash operatorlari quyidagicha:
<=: less than or equal to;
=: equal to (note that “2.6.1” is not equal to “2.6.1-1”);
>=: greater than or equal to;
>>: greater than.
Endi u yoki bu shaklda uchinchi tomon kutubxonalari va boshqa bog'liqliklardan foydalanmaydigan dasturni tasavvur qilish qiyin. Ya'ni, har qanday murakkab dastur kutubxonalarni yetkazib beradigan paketlarga bog'liq. Bunday holda, paket tizimda allaqachon o'rnatilgan bilan to'qnashganda vaziyat yuzaga kelishi mumkin. Buning eng keng tarqalgan sabablari shundaki, ikkala paket ham bir xil nomdagi va yo'ldagi faylni o'z ichiga oladi yoki bir xil tarmoq portida bir xil xizmatni taqdim etadi yoki bir-birining ishlashiga to'sqinlik qiladi.
Bu erda turli xil javob variantlari mavjud, umuman olganda, paket menejeri, agar u allaqachon o'rnatilgan paket bilan ziddiyatga olib keladigan bo'lsa, paketni o'rnatishni rad etadi. Biroq, yangi paket o'rnatilgan paketni "almashtirishi" aniq ko'rsatilgan vaziyat yuzaga kelishi mumkin, bu holda menejer eski paketni yangisiga almashtirishni afzal ko'radi. Ammo apt menejeri har doim sizning ko'rsatmalaringizga amal qiladi: agar siz yangi paketni o'rnatishga qaror qilsangiz, u avtomatik ravishda muammo tug'diradigan paketni olib tashlashni taklif qiladi.
Bundan tashqari, nizo yuzaga kelganda, quyidagi javob varianti mumkin: paket menejeri paketni o'rnatish boshqa paketni (yoki uning ba'zi versiyalarini) "buzishi" haqida signal beradi va keyin foydalanuvchi bunday vaziyatda nima qilish kerakligini hal qilishi kerak. Shu bilan birga, turli menejerlar bunday vaziyatga boshqacha munosabatda bo'lishadi. Shunday qilib, dpkg allaqachon o'rnatilgan paketni buzadigan paketni o'rnatishdan bosh tortadi. Ammo apt buzilgan paketni yangi versiyaga yangilash orqali muammoni hal qilishga harakat qiladi (u tuzatilgan deb taxmin qilinadi va shu bilan yana mos keladi).
Ushbu turdagi vaziyat orqaga qarab mos kelmaydigan yangilanishlarda yuzaga kelishi mumkin: bu yangi paketni o'rnatish boshqa paketni (yoki uning ba'zi versiyalarini) "buzishini" bildirganda.
Ba'zi paket formatlari o'zgartirilishi mumkin. Masalan, paketlar debni Alien yordam dasturi yordamida boshqa formatlarga o'tkazish mumkin. Misol sifatida biz deb paketini rpm ga aylantiramiz.