لن أخفي عليكم اعجابي بأداة 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