بحكم اقتراب صدور دبيان غنو/لينوكس (Debian GNU/Linux) و دبيان غنو/كي.فري.بي.إس.دي (Debian GNU/kFreeBSD) أردت الحصول على آخر التحديثات و كانت ضمنها تحديثات تصحيحية (بمعنى بسيطة) لأبون أوفس الحزمة المكتبية؛ رغم ذلك عليك تحميل كل حزمها؛ العملية مزعجة بالنسبة لي لثلاثة أسباب:
1. تحميل ما يزيد عن 65ميجيا لأكثر من مرة (لاستخدامي لعدد من الألات الافتراضية الدبيانية)
2. تثبيتها يأخد دقيقتين أو ثلاثة و نشاط كبير للقرص الصلب. (في غنو/لينوكس تعودنا السرعة و الفعالية)
3. لن أستخدمها على الإطلاق.
تحميل الفوارق متاح على دبيان مثل فيدورا لكن لا أريد أن أشتك فيها إن ظهرت أية علل في النظام لأنه ما زال قيد التطوير و التصحيح.
الحل الذي أستخدمه دائما هو تحديد كل الحزم للترقية باستثناء تلك التي لها علاقة بأوبن أوفيس، العملية يدويا و بواسطة برنامج مدير الحزم الرسومي Synaptic. اليوم أردت أن أقوم بشيء مختلف هو تجميد الإصدار كي لا يحضى بالترقية إلى بعد صدور دبيان 6. هذه التجرية كلفني بحث و تجارب لقرابة الساعتين.
سأبد بالخلاصة. هناك ثلاثة أدوات يمكن استخدماها لتسيير الحزمة (تثبيتها، حدفها،...) على دبيان و هي:
من خلال تجربتي مع دبيان و أبونتو، النقطتين الوحيدتين المترسختين في ذهني بخصوص تلك الأدوات هي:
الآن كيف يمكن تجميد اصدار حزمة ما كي تمنع ترقيتها على دبيان؟
أولا، سأفترض أننا نريد تجميد حزمة python-uno إحدى اعتمادات أوبن أوفيس.
ثانيا، هناك ثلاثة طرق تختلف حسب الأداة المستخدمة:
1. تجميد الحزم باستخدام أداة dpkg (تقابل أداة rpm على فيدورا)
كي نتأكد أنها فعلا أصبحت متجمدة سنجرب:
و ستكون النتيجة كما يلي:
الآن، عندما سنقوم بالترقية مستقبلا باستخدام الأداة apt-get (مثال: apt-get upgrade) سيظهر في مخرجاتها:
xx upgraded, xx newly installed, xx to remove and xx not upgraded
xx يستبدل بعدد الحزم.
الآن، للرجوع عن التجميد سنستخدم:
و لنتأكد أنها فعلا أصبحت قابلة للترقية:
و ستكون النتيجة كما يلي:
2. تجميد الحزم باستخدام أداة aptitude
كي نتأكد أن عملية التجميد أصبحت مفعلة سنجرب:
و ستكون النتيجة كما يلي:
حرفي ih يدلان على أن الحزمة مثبتة Installed و مجمدة/محبوسة Hold.
للرجوع عن التجميد سننفذ:
مستقبلا عند الترقية باستخدام aptitude upgrade مثلا، فإنها ستراعي حالة التجميد/عدم التجميد لكل الحزم. (هي تفعل ذلك دائما، كي لا يفهم العكس)
3. تجميد الحزم باستخدام الأداة الرسومية synaptic
من على synaptic و بعد تحديد الحزم(ـة) نختار Lock Version من على القائمة Package كما في الصورة أدناه.
هذا كل شيء في ما يخص تجميد الإصدارات. و للتذكير مرة ثانية، هذه الأدوات - إن لم يتم تصحيح تصرفها دون أن أعلم بذلك أو لخطأ مني - لا تكترث لتجميدات بعضها البعض.
معلومات إضافية للمتقدمين:
Synaptic عند تجميد حزمة ما، تنشئ ملف preferences على /var/lib/synaptic/ و تضع فيه معلومات تلك الحزمة على شكل:
المعلومات الملونة تتغير حسب الحزمة. و يمكن ملء ذلك الملف يدويا إذا أردنا على هذه الشاكلة:
أيضا للحصول على كل الحزمة المثبتة التي تبدأ بكلمة openoffice سننفذ:
و لتنضيف المخرجات أكثر سننفذ:
الطريقة الثانية للحصول على قائمة الحزم تلك (من بين طرق أخرى ربما أفضل) هي:
أيضا:
كل معلومات الحزم (الاسم، الاصدار، الوصف، الاعتمادات،...) مخزنة على ملف نصي يدعى status متواجد داخل /var/lib/dpkg
مثال:
المزيد من التفاصيل على صفحات التوثيق:
مصادر أخرى مفيدة:
1. تحميل ما يزيد عن 65ميجيا لأكثر من مرة (لاستخدامي لعدد من الألات الافتراضية الدبيانية)
2. تثبيتها يأخد دقيقتين أو ثلاثة و نشاط كبير للقرص الصلب. (في غنو/لينوكس تعودنا السرعة و الفعالية)
3. لن أستخدمها على الإطلاق.
تحميل الفوارق متاح على دبيان مثل فيدورا لكن لا أريد أن أشتك فيها إن ظهرت أية علل في النظام لأنه ما زال قيد التطوير و التصحيح.
الحل الذي أستخدمه دائما هو تحديد كل الحزم للترقية باستثناء تلك التي لها علاقة بأوبن أوفيس، العملية يدويا و بواسطة برنامج مدير الحزم الرسومي Synaptic. اليوم أردت أن أقوم بشيء مختلف هو تجميد الإصدار كي لا يحضى بالترقية إلى بعد صدور دبيان 6. هذه التجرية كلفني بحث و تجارب لقرابة الساعتين.
سأبد بالخلاصة. هناك ثلاثة أدوات يمكن استخدماها لتسيير الحزمة (تثبيتها، حدفها،...) على دبيان و هي:
- apt-get : الأداة الإفتراضية تعمل من على سطر الأوامر.
- aptitude : أيضا مثبتة بشكل افتراضي على دبيان. كانت افتراضية على أبونتو أيضا، لكن تمت إزالتها. هذه الأداة أذكى من apt-get و هي تعمل من على سطر الأوامر أيضا.
- synaptic : أداة بواجهة رسومية لمن يخاف سطر الأوامر. سيتم الاستغناء عنها لاحقا في اصدارات مقبلة لأبونتو و ستعوض بـ"مركز برمجيات أبونتو"
من خلال تجربتي مع دبيان و أبونتو، النقطتين الوحيدتين المترسختين في ذهني بخصوص تلك الأدوات هي:
- لا تخلط بين apt-get و aptitude. إن كنت تفضل aptitude إستمر في استخدامها.
- باستثناء منت دبيان لينوكس، لم تعمل معي خاصية تجميد الإصدارات يوما. و على النت هناك من تعمل معه و هناك من لا.
الآن كيف يمكن تجميد اصدار حزمة ما كي تمنع ترقيتها على دبيان؟
أولا، سأفترض أننا نريد تجميد حزمة python-uno إحدى اعتمادات أوبن أوفيس.
ثانيا، هناك ثلاثة طرق تختلف حسب الأداة المستخدمة:
1. تجميد الحزم باستخدام أداة dpkg (تقابل أداة rpm على فيدورا)
echo "python-uno hold" | dpkg --set-selections
كي نتأكد أنها فعلا أصبحت متجمدة سنجرب:
dpkg --get-selections | grep python-uno
و ستكون النتيجة كما يلي:
python-uno hold
الآن، عندما سنقوم بالترقية مستقبلا باستخدام الأداة apt-get (مثال: apt-get upgrade) سيظهر في مخرجاتها:
xx upgraded, xx newly installed, xx to remove and xx not upgraded
xx يستبدل بعدد الحزم.
الآن، للرجوع عن التجميد سنستخدم:
echo "python-uno install" | dpkg --set-selections
و لنتأكد أنها فعلا أصبحت قابلة للترقية:
dpkg --get-selections | grep python-uno
و ستكون النتيجة كما يلي:
python-uno install
2. تجميد الحزم باستخدام أداة aptitude
aptitude hold python-uno
كي نتأكد أن عملية التجميد أصبحت مفعلة سنجرب:
aptitude search python-uno
و ستكون النتيجة كما يلي:
ih python-uno - Python-UNO bridge
حرفي ih يدلان على أن الحزمة مثبتة Installed و مجمدة/محبوسة Hold.
للرجوع عن التجميد سننفذ:
aptitude unhold python-uno
مستقبلا عند الترقية باستخدام aptitude upgrade مثلا، فإنها ستراعي حالة التجميد/عدم التجميد لكل الحزم. (هي تفعل ذلك دائما، كي لا يفهم العكس)
3. تجميد الحزم باستخدام الأداة الرسومية synaptic
من على synaptic و بعد تحديد الحزم(ـة) نختار Lock Version من على القائمة Package كما في الصورة أدناه.
هذا كل شيء في ما يخص تجميد الإصدارات. و للتذكير مرة ثانية، هذه الأدوات - إن لم يتم تصحيح تصرفها دون أن أعلم بذلك أو لخطأ مني - لا تكترث لتجميدات بعضها البعض.
معلومات إضافية للمتقدمين:
Synaptic عند تجميد حزمة ما، تنشئ ملف preferences على /var/lib/synaptic/ و تضع فيه معلومات تلك الحزمة على شكل:
Package: python-uno
Pin: version 1:3.2.1-10
Pin-Priority: 1001
المعلومات الملونة تتغير حسب الحزمة. و يمكن ملء ذلك الملف يدويا إذا أردنا على هذه الشاكلة:
dpkg-query -W -f='Package: ${Package}\nPin: version ${Version}\nPin-Priority: 1001\n\n' python-uno >> /var/lib/synaptic/preferences
أيضا للحصول على كل الحزمة المثبتة التي تبدأ بكلمة openoffice سننفذ:
dpkg --get-selections | grep -i openoffice
و لتنضيف المخرجات أكثر سننفذ:
dpkg --get-selections | grep -i openoffice | cut -f1
الطريقة الثانية للحصول على قائمة الحزم تلك (من بين طرق أخرى ربما أفضل) هي:
dpkg -l "openoffice*" | grep ^ii
أو
dpkg -l | grep -i openoffice | grep ^ii
أيضا:
كل معلومات الحزم (الاسم، الاصدار، الوصف، الاعتمادات،...) مخزنة على ملف نصي يدعى status متواجد داخل /var/lib/dpkg
مثال:
cat /var/lib/dpkg/status | less
المزيد من التفاصيل على صفحات التوثيق:
مصادر أخرى مفيدة:
ليست هناك تعليقات:
إرسال تعليق