ארכיון יומי: 23 נובמבר, 2010

חבילות התקנה – מידע כללי

לאחרונה אני בונה הרבה (יחסית) חבילות עבור הפצת הלינוקס Arch. והחלטתי שצעד לפני כתיבת מדריך בוויקי של ArchLinux הישראלי, אסביר מעט על חבילות בצורה כללית יותר.

שימו לב שגם אם אתם לא עובדים עם Arch Linux, עדיין המידע כאן מסביר איך חבילות עובדות.

בלינוקס (ובעוד מערכות, לא רק מבוססות מערכת הפעלה, כדוגמת ruby gem או fpmake), חבילה היא אוסף של מספר נושאים:

  1. תאור ומידע אודות מה אנחנו מספקים/עושים
  2. הוראות כיצד יש להתקין את החבילה, ובמידת הצורך מה צריך לבצע לאחר ההתקנה, הסרה, עדכון וכו'
  3. מידע רלוונטי עבור כל קובץ וקובץ שנמצא, כלומר המיקום שהוא צריך להיות בו במערכת.
  4. מה החבילה מספקת (כותרת גדולה, אדבר על כך בהמשך)
  5. מה התלויות האחרות שהחבילה צריכה בשביל להצליח לתפקד, כלומר אילו עוד חבילות.
  6. לאילו ארכיטקטורות היא מתאימה (או לא תלויה בכזו)

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

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

עוד פרט חשוב בחבילות תוכנה של מערכות לינוקס (לפחות החבילות שאני מכיר, RPM, deb וכמובן pacman), אפשר להגיד כי חבילה מסויימת מספקת שם כולל של חבילות (סעיף 4).

נגיד למשל, שאני רוצה ליצור חבילה שכל התפקיד שלה היא לגרום לFirefox להיות דפדפן ברירת המחדל אצלי בלינוקס, אבל אני אצור עוד אחד להגדיר כי Arora הוא כזה, וכך גם Midori, אופרה, Chromium וכו'… כולם מספקים בעצם את אותה חבילה אשר מתנגשת עם חבילה אחרת.

הבעיה היא שאי אפשר לתת ל2 חבילות את אותו השם, ולכן יש להן שמות שונים, אבל עדיין אנחנו צריכים להגיד למנהל החבילות כי מדובר בהתנגשות, אז אנחנו אומרים לו שהחבילה מספקת בעצם חבילה בשם default-browser, כך שלא משנה כמה חבילות (מטא במקרה הזה, הן לא מתקינות כלום, רק משנות הגדרות, וגוררות תלויות שעושות את ההתקנה עצמה -> קרי חבילת Firefox, Arora וכו') לכמות הדפדפנים ברשותנו, עדיין כולם יגידו שהם מספקים חבילה בשם default-browser ובכמה ממנהלי החבילות זה לא מספיק, ואנחנו מגדירים במפורש שהיא מתנגשת עם defaut-browser.

חלק בטח חושבים שיש כאן בעיה לוגית, אבל זו לא קימת בכלל, היות וכל דבר אחר שיספק את default-browser בעצם יתנגש, אבל אני לא יכול להתנגש עם עצמי, ולכן הוא יבקש להסיר קודם את החבילה הקיימת אשר מספקת את default-browser ורק אז להתקין, או ישאל אם אני רוצה להסיר אותה בשביל להתקין את החדשה (תלוי במנהל החבילות/סביבת התקנה למנהל החבילות).

עוד תכונה מעניינית שיש בdeb ובpacman היא האפשרות להמליץ על חבילות. נגיד והתקנת חבילה בשם Firefox ויש בוודאות במאגרים חבילה בשם Firebug. אני יכול להמליץ לך כחלק מהמידע רשימה של "תלויות" אשר הן לא חובה להתקנה אבל מומלצות על ידי להתקנה, כלומר אני אמליץ לך להתקין גם Firebug.

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