فبراير 24، 2011

أداة kernel-remover لإزالة الأنوية القديمة من على أبونتو و دبيان

لن أخفي عليكم اعجابي بأداة Yum لإدارة الحزم بصيغة rpm من على سطر الأوامر في الفترة الأخيرة لكن موضوع اليوم ليس بصددها بل هو مخصص لأداة kernel-remove التي نجدها على مستودع توزيعة aptosid و التي تقوم بازالة كل النسخ السابقة للنواة.

aptosid هي توزيعة غنو/لينوكس مبنية على الفرع الغير مستقر (unstable) المسمى sid لتوزيعة دبيان. هذا الفرع لا يوجد له أي قرص تثبيت رسمي على عكس الفرع الاختباري (testing) حيث يمكن الحصول على قرصه من هذه الصفحة.

لتثبيت دبيان الغير مستقر يجب تثبيت أساس نظام دبيان الاختباري أو المستقر أولا ثم تعديل ملف المستودعات /etc/apt/sources.list ليستعمل الفرع unstable و من ثم إكمال عملية الترقية و التثبيت. أو استعمال توزيعة aptosid التي تأتي بواجهتي كيدي (kde) و إكس إف سي إي (Xfce)، عدم توفير جنوم (Gnome) كخيار راجع إلى قرار المطورين.

توزيعة aptosid ليست تفرعا عن دبيان بل هي دبيان سيد (sid) نفسها مع مستودع إضافي يضم أدواة تساعد في إعداد النظام و نواة مخصصة و معدلة لتلائم الحواسب المكتبية و تقدم أحسن أداء عليها.

كما سبق، أداة رسومية kernel-remover تصلح لإزالة كل حزم الأنوية السابقة. لكن لم؟
كأية توزيعة تخضع لتطوير مستمر، يتم دفع نسخ أحدث للنواة بشكل دوري، كل نسخة تأخد ما بين 60 و 120 ميجا من مساحة القرص و لا مشكلة في ذلك إن اقتصر الأمر على ثلاثة أو أربع لكن إن زادة يصبح مظهر قائمة الإقلاع بشع و لا دور لها و ربما قد تتسبب - بعد توالي الترقيات - في نفاد مساحة قسم الإقلاع إن كان مستقلا و بمساحة محدودة.

هناك طريقتين للحصول على أداة kernel-remover.


الطريقة 1:
تحميلها يدويا من هنا ثم تثبيتها. مثال:

wget -q -erobots=off -r -l1 -nd -N -A.deb http://aptosid.com/debian/pool/main/k/kernel-remover/

sudo dpkg -i kernel-remover*.deb

الطريقة 2:
باضافة مستودع aptosid الأساسي إلى ملف المستودعات على دبيان أو أبونتو ثم تثبيت kernel-remover بواسطة أداة إدارة الحزم apt-get

echo 'deb http://aptosid.com/debian/ sid main' | sudo tee -a /etc/apt/sources.list

sudo apt-get update
sudo apt-get -t aptosid/main --allow-unauthenticated install aptosid-archive-keyring
sudo apt-get update
sudo apt-get -t aptosid/main install kernel-remover



مستخدمي أبونتو يحتاجون إلى خطوة إضافية لأن أداة su-to-root لا تأتي مثبتة بشكل افتراضي كما هو الحال مع دبيان، و لذلك سنعدل مشغل البرنامج المتواجد على القائمة إما بتعديل خيارات القائمة أو بتنفيذ الأمر التالي:
sudo sed -i 's/su-to-root -X -c/gksu/g' /usr/share/applications/aptosid/kernel-remover.desktop

الآن عند تشغيل kernel-remover من القائمة ستظهر نافدة بها الأنوية المثبتة و من بينها النواة الحالية؛ نختار تلك التي لا نريد ثم نظغط على الزر موافق.



أيضا هناك طريقة بديلة تعتمد كليا على سطر الأوامر.
sudo apt-get purge $(dpkg -l 'linux-*' | grep ^ii | cut -d ' ' -f3 | grep -E '(l.+)-(i.+|h.+)-([0-9]+)' | grep -iv $(uname -r | cut -d '-' -f 1-2))


ذلك السطر مركب من عدة أجزاء مفصولة بعلامة | . الجزء الأول و الثاني يعرضان معلومات خامة لكل الحزم المثبتة التي تبدأ بكلمة linux-
dpkg -l 'linux-*' | grep ^ii

مثال:
ii  linux-firmware                       1.38.4                                            Firmware for Linux kernel drivers
ii  linux-generic                        2.6.35.27.34                                      Complete Generic Linux kernel
ii  linux-headers-2.6.35-24              2.6.35-24.42                                      Header files related to Linux kernel version 2.6.35
ii  linux-headers-2.6.35-24-generic      2.6.35-24.42                                      Linux kernel headers for version 2.6.35 on x86/x86_64
ii  linux-headers-2.6.35-26              2.6.35-26.46                                      Header files related to Linux kernel version 2.6.35
ii  linux-headers-2.6.35-26-generic      2.6.35-26.46                                      Linux kernel headers for version 2.6.35 on x86/x86_64
ii  linux-headers-2.6.35-27              2.6.35-27.47                                      Header files related to Linux kernel version 2.6.35
ii  linux-headers-2.6.35-27-generic      2.6.35-27.47                                      Linux kernel headers for version 2.6.35 on x86/x86_64
ii  linux-headers-generic                2.6.35.27.34                                      Generic Linux kernel headers
ii  linux-image-2.6.35-24-generic        2.6.35-24.42                                      Linux kernel image for version 2.6.35 on x86/x86_64
ii  linux-image-2.6.35-26-generic        2.6.35-26.46                                      Linux kernel image for version 2.6.35 on x86/x86_64
ii  linux-image-2.6.35-27-generic        2.6.35-27.47                                      Linux kernel image for version 2.6.35 on x86/x86_64
ii  linux-image-generic                  2.6.35.27.34                                      Generic Linux kernel image
ii  linux-libc-dev                       2.6.35-1027.47                                    Linux Kernel Headers for development
ii  linux-sound-base                     1.0.23+dfsg-1ubuntu4                              base package for ALSA and OSS sound systems


الجزء الثالث ينظف المخراجات السابقة
| cut -d ' ' -f3
لتصبح كالتالي:
linux-firmware
linux-generic
linux-headers-2.6.35-24
linux-headers-2.6.35-24-generic
linux-headers-2.6.35-26
linux-headers-2.6.35-26-generic
linux-headers-2.6.35-27
linux-headers-2.6.35-27-generic
linux-headers-generic
linux-image-2.6.35-24-generic
linux-image-2.6.35-26-generic
linux-image-2.6.35-27-generic
linux-image-generic
linux-libc-dev
linux-sound-base


الجزء الرابع يزيد من تنظيف المخرجات بواسطة التعابير المنتظمة/النمطية
| grep -E '(l.+)-(i.+|h.+)-([0-9]+)'
لتصبح كالتالي (أنوية و ترويساتها فقط)
linux-headers-2.6.35-24
linux-headers-2.6.35-24-generic
linux-headers-2.6.35-26
linux-headers-2.6.35-26-generic
linux-headers-2.6.35-27
linux-headers-2.6.35-27-generic
linux-image-2.6.35-24-generic
linux-image-2.6.35-26-generic
linux-image-2.6.35-27-generic

الجزء الخامس سيزيل النواة الحالية التي نعمل عليها من القائمة السابقة
| grep -iv $(uname -r | cut -d '-' -f 1-2)
لتصبح كالتالي (2.6.35-27 هي الحالية حسب مثالنا)
linux-headers-2.6.35-24
linux-headers-2.6.35-24-generic
linux-headers-2.6.35-26
linux-headers-2.6.35-26-generic
linux-image-2.6.35-24-generic
linux-image-2.6.35-26-generic

هذه المخرجات النهائية هي التي ستتوصل بها أداة apt-get purge المتواجدة في بداية السطر


بينما على فيدورا و ما بني عليها يكفي تنفيذ أمر واحد و انتهينا

package-cleanup --oldkernels

ليست هناك تعليقات:

إرسال تعليق