מנהל חבילות אולטימטיבי ללינוקס

משתמשי לינוקס תמיד מתגאים במנהלי החבילות של ההפצה שלהם: apt, aptitude, yum, yast, pacman ועוד… לדעתי לא צריך להתגאות כ"כ במנהלי החבילות, מפני שכולם סובלים מאותה בעיה מהותית, שמקשה מאוד על משתמשי לינוקס: בעיית התלויות.

במערכות הפעלה אחרות (חלונות, IOS, אנדרויד, BSD) כל חבילת תוכנה מכילה בדר"כ את כל רכיבי התוכנה הדרושים להפעלתה. נכון: יש חריגים (נניח תוכנות שתלויות בגרסה מסויימת של NET.), אבל בדר"כ רוב התוכנות ניתנות להתקנה קלה ופשוטה יחסית.

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

ב- BSD, למשל, חבילת תוכנה נארזת כך שהיא מכילה את כל החבילות הדרושות להפעלתה. נכון, החבילה תהיה גדולה יותר בנפח, אבל אין את כל הסיבוך הקיים בלינוקס. ב- BSD הגדילו לכת ומאפשרים להריץ את התוכנה באזור "הסגר" (JAIL): החבילה תרוץ בסביבה מבודדת, מבלי שהיא תוכל להשפיע על תוכנות אחרות במערכת ההפעלה.

הייתי רוצה לראות פתרון דומה בלינוקס, ומוזר לי מאוד שעד היום אף חברה לא ניסתה לפתח פתרון דומה. היום רוחב הפס או גודל הדיסק לא מהווה בעיה. הפצה אידיאלית מבחינתי תכיל גרעין לינוקס (Kernel) מאוד יציב שיכיל תמיכה רחבה בהתקני חומרה. הוא לא חייב להיות החדשני ביותר, וניתן ליצור גם מס' Kernels ברמת יציבות שונה (כך שאולי הקרנל החדשני ביותר יתמוך בחומרה חדשה יותר, אבל רוב המשתמשים אולי ירצו להשתמש ב- kernels ישנים ויציבים יותר). Manjaro מיישמת רעיון זה ומאפשרת מעבר פשוט מאוד בין Kernels שונים.

מעבר לקרנל, ההפצה חייבת להכיל חבילות תוכנה שמאפשרות את X, את מנהל החלונות ועוד… לדעתי כל אחד מהמרכיבים הנ"ל אמור להיות עצמאי ולהכיל את כל רכיבי התוכנה הדרושים להפעלתו. חבילות אלה לא חייבות להתשדרג בצורה תכופה והן יהוו את השלד של מערכת ההפעלה.

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

inxi

inxi הוא כלי שבעזרתו ניתן לקבל אינפורצמיה על חומרת המחשב (דגם, יצרן, דרייברים ועוד…).
למרות שמדובר בפקודה שמריצים במסוף, הפלט המתקבל מסודר ויפה:

הרצה של הפקודה inxi ללא פרמטרים תציג פרטים כלליים על כל חומרת המחשב

הדגל b- יציג אינפורמציה טובה יותר על חומרה זאת (אבל עדיין מדובר ברשימה בסיסית)

קיימים דגלים שימושיים נוספים:

  • ‏‏‏p- יציג פרטים על Partition
  • ‏D- יציג פרטים על הכונן הקשיח
  • ‏n- יציג פרטים על כרטיס הרשת
  • ‏F- יציג רשימה מפורטת על כל חומרת המחשב
  • ‏s- יציג פרטים על חיישנים שונים (מדי טמפרטורה, סיבובי מאווררים ועוד…)

מדובר במס' דוגמאות בלבד (כדאי להריץ man inxi וללמוד על אפשרויות נוספות שהכלי מאפשר לצפות בהם)

BRO – תשובה קצרה וקולעת

bro היא פקודה לשיתוף מידע חברתי של פקודות לינוקס.
הסבר: נניח שאתם רוצים לדעת כיצד לבצע פעולה מסויימת בעזרת rsync. אם תסתכלו ב- man pages של rsync תקבלו עשרות עמודים של הסבר. אין ספק שהמידע שתקבלו מאוד מקיף, אך לכו תמצאו מחט בערימה של שחת… שיטוט באינטרנט יספק תשובות מהירות יותר, אך למה לא להיעזר במידע הקהילתי שמרוכז ב- bropages? הפקודה bro מספקת מידע על פקודה מסויימת בצורה פשוטה ומהירה. כל אחד יכול להוסיף פקודה חדשה למאגר, להעשיר את המידע על פקודה קיימת ואף לדרג את התשובות המוצעות (באמצעות שליחת 'thanks' או 'no').
דוגמאות:

יתן את הפלט הבא:

מספר פקודות שימושיות:

  • bro thanks 4 -‏‎‏ נגיד תודה לתשובה האחרונה שהוצעה
  • bro thanks -‏ נגיד תודה לתשובה הראשונה שהוצעה
  • bro no -‏ נגיד לא לתשובה הראשונה שהוצעה
  • bro add new_command – תוסיף פקודה חדשה לבסיס הנתונים (שם הפקודה new_command)‏ ‏
  • יש להתייחסת ברצינות להערות הקהילה, מפני שלא מתבצע כל סינון ע"י מפתחי התוכנה. דוגמא: אחת התשובות המוצעות לפקודה 'rm' היא הפקודה '/ rm -fr'. מי ששלח את הפקודה ציין שזאת הדרך הטובה ביותר להסיר רוגלות ממערכת ההפעלה… כמובן שהפקודה מסוכנת ותמחק את כל הקבצים במערכת ההפעלה שלכם (אם תריצו אותה כ- root) ולכן היא קיבלה 37 משובים שליליים ורק 3 חיוביים (כך שיש להתייחס ברצינות רבה להערות הקהילה)

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

מה קרה ל- Parted Magic?

Parted Magic היה אחד מכלי ההצלה האהובים עלי ביותר. מפתח ההפצה, פטריק וורנר, החליט לאחרונה שמעתה והלאה הורדת הדיסק תהיה אך ורק בתשלום:

  • 5 דולר להורדת תמונת ראי בודדת (קובץ ISO)
  • 50 דולר למנוי שנתי
  • 25 דולר למשלוח DOK הביתה
  • 10 דולר למשלוח CD הביתה

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

  • פטריק וורנר לא מאפשר להוריד מאתר ההפצה גם גרסאות ישנות של ההפצה
  • פטריק וורנר נעזר רבות בקהילה: אם במידע ישיר (כיצד להתגבר על נושאים טכניים שונים, בדיקות QA, רעיונות לפיתוח, הערות שונות ועוד…) ואם בעזרה עקיפה (תרומות ישירות לחשבונו ב- PayPal ואף עזרה ברכישת חומרה חדשה). בזכות תמיכה זאת הוא בנה לאורך שנים את ההפצה. לי מפריע שאת כל הידע שתרמה הקהילה הוא מחק/הסיר מהאתר. גם את תוכן הפורום הישן הוא מחק ופתח פורום חדש (שאינו משגשג בלשון המעטה…)

מאחר שמדובר בקוד פתוח, פטריק וורנר לא יכל לסגור את קוד המקור, ולכן השאיר בדף הבית קישורים לכל חבילות התוכנה שהוא משתמש בהם. את עבודת האריזה ויצירת ה- CD הוא סגר. עד כאן, כל מה שתיארתי הוא חוקי אבל בעיני מאוד מסריח… יש דרכים רבות להצליח כלכלית כשעובדים עם קוד פתוח. לינוקס מינט היא דוגמא אחת, אבל פטריק וורנר בחר בשיטה ברוטלית במיוחד. אם היה משאיר קישורים להורדת הגרסאות הישנות ומציע, למשל, שרק את הגרסאות החדשות ניתן להוריד בתשלום זה היה נראה אחרת. אם היה משאיר על כנו את הפורום הישן, עם הידע הרב שצבר, זה היה נראה אחרת. כרגע כל המידע שתרמה הקהילה ירד לטמיון ונשאר נחלתו הבלעדית.
אז נכון: מבחינת תנאי הרישיון של הקוד הפתוח כל הפעולות שנקט כנראה שחוקיות. הבעיה שלהם נוגעת יותר למישור האתי/מוסרי, ולכן מסיבה זאת אני לא מתכוון לרכוש ממנו את המוצר. בעולם הקוד הפתוח יש הרבה חלופות (בינתיים אשתמש ב- Gparted ו- UBCD). בעתיד, כשיהיה לי זמן, יתכן שאפתח בעצמי כלי מקביל לכלי הזה.

הפקודה screen – חלק שני

בשבוע שעבר סקרתי את השימוש הבסיסי בפקודה screen. השבוע אכנס קצת יותר לעומק ואציג אפשרויות נוספות לשימוש בתוכנה.
אז אתחיל ואומר שניתן להריץ באופן ישיר פקודה (נניח top) שתרוץ תחת screen מבלי להיכנס לתוכנת screen כך:

ניצן לצאת מה- shell ולחזור לפקודה שהרצנו (top) ע"י הרצת:

לפקודה screen אפשרויות רבות נוספות. את רובם "מפעילים" באמצעות צירוף המקשים CTRL+A ואז בחירה באות מסויימת לביצוע הפעולה. דוגמאות:

  • ? CTRL+A – תציג מסך עזרה
  • C‏ CTRL+A – פותחת sessions נוסף של screen (מבלי שנצטרך להיכנס שוב לשרת)
  • N‏ CTRL+A – מעבירה אתכם ל- session הבא
  • P‏ CTRL+A – מחזירה אתכם ל- session הקודם
  • K‏ CTRL+A – "הורגת" (kill) את תהליך ה- screen הנוכחי
  • Shift S‏ CTRL+A – מפצלת את המסך לרוחב
  • |‏ CTRL+A – מפצלת את המסך לאורך
  • TAB‏ CTRL+A – מעבר בין חלונות מפוצלים
  • ls‏ CTRL+A – הצגת תהליכי screen שרצים


הדרך הטובה ביותר היא כמובן התרגול. יצרתי סרטון קצר שמדגים את השימוש ב- screen (בסרטונים הבאים אנסה להשתמש בעצתו של צפריר כהן ואשתמש ב-ttyrec)