הסרת קרנלים ישנים באובונטו

בניגוד להפצות RPM, הפצות על בסיס Debian ובכללם Ubuntu לא מסירות חבילות של קרנלים ישנים, דבר שכבר גרם לי בעיות על /boot מלא ואתחול שכשל בגלל שהחבילה של הקרנל לא הותקנה כמו שצריך. בחיפוש (לא הכי מעמיק) מצאתי הרבה פקודות one-line שבעצם היו אותה פקודה רק בווריאציות שונות (כתיבה טיפה שונה אבל התוצאה זהה) שבעצם הסירו את כל (כולל קרנלים חדשים) החבילות של הקרנלים פרט לקרנל שכרגע בשימוש. לכן חיפשתי משהו שיתאים לדרישה שלי.

הדרישה

הסרה של הקרנלים הישנים

  • עם אפשרות לשמור X עותקים ישנים אחורה (למשל להחזיק תמיד 2 עותקים שעובדים בנוסף לקרנל שרץ)
  • לא להסיר קרנלים חדשים (אחרת מה הטעם, אם אני צריך להתקין אותם שוב)

הסרת כל הקרנלים הישנים עם אפשרות לשמור X גרסאות ישנות – היישום

שורה תחתונה זה מה שיצא לי,

  • הוספתי את המתג  simulate כדי למנוע טעויות של העתק&הדבק – כך שמי שרוצה להריץ את הפקודה יודע מה לעשות.

הסבר

הסקריפט מתחיל מהפקודה dpkg -l ‘linux-image*’ שמקבלת רשימה של כל החבילות שהשם שלהם מתאים ל-REGEX הנ”ל:

לאחר מכן אנו רוצים לסנן את הרשימה ולברור את החבילות המותקנות על המערכת, זאת אנו עושים ע”י סינון של  כל השורות שמתחילות ב-ii, ומדפיסים רק את שם החבילה

שלב הבא יהיה לסנן עוד טיפה את הרשימה כך שתכיל רק את השמות של החבילות של הקרנלים, במקרה זה פשוט סיננתי את השורות שמכילים מספרים.

אוקי, כאן עשיתי משהו מאוד לא בריא, בגדול ויצאתי מתוך הנחה שהרשימה שאני מקבל ממנהל החבילות תמיד תהיה מסודרת מהקרנל הישן לחדש ולכן לא מיינתי את הרשימה, וכדי למנוע בעיה של מיון בעתיד הוספתי לכל שורה מספר סידורי.

במקרה שלי אני רץ עם קרנל – linux-image-3.2.0-44-generic, ואני רוצה לקבל רשימה של כל הקרנלים שהם ישנים יותר מהקרנל שאני מריץ, כך שביקשתי למצוא ברשימה את הקרנל שאני מריץ, ואת כל השורות שמגיעות לפניו.

על פי הדרישה שלי אני רוצה לשמור את הקרנל הקיים, ו-2 גרסאות אחורה – ולכן אני מעוניין להסיר את רק את החבילה linux-image-3.2.0-37-generic. כך שאם אני ממיין את הרשימה הפוך וקופץ 3 שורות, אני אקבל את כל החבילות שאני צריך להסיר, ועל מנת שאוכל לנהל את מספר הגרסאות שאני רוצה להחזיק בצורה פשוטה יותר, השתמשתי במשתנה בתחילת הפקודה.

כעת מה שנשאר זה להעביר את הרשימה ל-xargs ולתת לה להריץ את הפקודה apt-get purge עם רשימה של כל הקרנלים שאנו רוצים להסיר.

 

 

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *