המדריך המלא לפורטאג'

מתוך הויקי של ג'נטו.

קפיצה אל: ניווט, חיפוש

מדריך זה הוא תרגום של מדריך הפורטאג' הרשמי של ג'נטו.

תוכן המדריך מוגן בזכויות יוצרים של כותבי המדריך המקורי.

התרגום בוצע באישור הרשיון שבו פורסם המסמך המקורי, Creative Commons - Attribution / Share Alike.

על התרגום חלים אותם תנאי רשיון כמו למקור התוכן. המדריך תורגם על ידי Oldie.

גישה ישירה לפרקים בודדים
היכרות ראשונה עם הפורטאג' עבודה עם הפורטאג' פורטאג' למתקדמים

דגלי השימוש ערכת הכלים של ג'נטו

תוכן העניינים

[עריכה] ברוך הבא לפורטאג'

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

פורטאג' כתוב כולו בפית'ון (Python) ו-bash, ולכן גלוי במלואו למשתמשים מכיוון ששני השפות הינן שפות-תסריט (Scripting languages).

רוב המשתמשים יעבדו עם פורטאג' על ידי השימוש בכלי הקרוי אימרג' (emerge). פרק זה אינו מיועד לשכפל את המידע הקיים במדריך של אימרג' (emerge man page). כדי להכיר את כל אופציות אימרג' במלואן, אנא התיעץ בעמוד המדריך:

קוד: קריאת דף העזרה של אי-מרג'
# man emerge

[עריכה] העץ של הפורטאג'

[עריכה] Ebuilds

כאשר אנו מדברים על חבילות, אנו מתכוונים בדרך כלל לכותרים של תוכנות שזמינות למשתמשי ג'נטו דרך העץ של פורטאג'. העץ של פורטאג' הינו אוסף של ebuilds, קבצים שמכילים את כל המידע הדרוש לפורטאג' כדי לתחזק את התוכנה (התקנה, חיפוש, שאילתה ועוד). כברירת מחדל, ebuilds אלו נמצאים ב usr/portage/ . בכל פעם שאתה מבקש מפורטאג' לבצע פעולה מסוימת הקשורה לכותרי תוכנה, הוא ישתמש ב-ebuilds הנמצאים במחשבך. על כן חשוב לעדכן באופן שוטף את העץ של פורטאג' (ה-ebuilds), כך שפורטאג' ידע על תוכנות חדשות, עידכוני בטיחות וכו'.

[עריכה] עידכון העץ של פורטאג'

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

קוד: עדכון עץ הפורטאג'
# emerge sync

אם אין באפשרותך לבצע עידכון בגלל מגבלות חומת-אש, תוכל עדיין לעדכן את עץ פורטאג' על ידי השימוש בתצלום מצב של עץ פורטאג' המעודכן מידי יום. הכלי emerge-webrsync מביא ומתקין באופן אוטומטי את עץ הפורטאג' העדכני ביותר למערכת שלך:

קוד: הרצת emerge-webrsync
# emerge-webrsync

[עריכה] תחזוקת תוכנה

[עריכה] חיפוש אחר תוכנה

כדי לחפש תוכנה בעץ פורטאג', באפשרותך להשתמש ביכולות החיפוש הבנויות בתוך אימרג'. כברירת מחדל, emerge --search(או emerge -s) מחזיר את שמות החבילות שכותרתן מתאימה (חלקית או במלואה) למונח החיפוש. לדוגמה, כדי לחפש את כל החבילות שיש להן pdf בשם:

קוד: חיפוש אחר חבילות ששמן מכיל את המחרוזת pdf
# emerge --search pdf

אם ברצונך לחפש גם בתקציר המתאר כל חבילת תוכנה, תוכל להשתמש באפשרות searchdesc-- (או S-):

קוד: חיפוש עבור חבילות שקשורות ל-pdf
# emerge --searchdesc pdf

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

קוד: דוגמא לפלט הפקודה 'emerge --search'
*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

[עריכה] התקנת תוכנה

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

קוד: התקנת גנומריק
# emerge gnumeric

מאחר ותוכנות רבות תלויות אחת בשניה, כל נסיון להתקין חבילת תוכנה מסוימת עשוי לגרום להתקנתן של תוכנות נוספות אשר התוכנה המבוקשת תלויה בהן. אל דאגה, פורטאג' מטפל בכל התלויות והקשרים היטב. אם ברצונך לברר מה פורטאג' יתקין כאשר תבקש להתקין חבילה מסוימת, הוסף את התג pretend--. פורטאג' לא יתקין דבר, אולם יראה מה בכוונתו להתקין. לדוגמה:

קוד: התקנת גנומריק - מה צפוי לקרות
# emerge --pretend gnumeric

כאשר אתה מבקש מפורטאג' להתקין חבילת תוכנה, הוא יטען את קוד המקור של התוכנה מהאינטרנט (אם צריך) ויאחסן אותה (כברירת מחדל) ב usr/portage/distfiles/ (קוד המקור מגיע כקובץ מכווץ). לאחר מכן פורטאג' יפתח, יהדר ויתקין את התוכנה. אם כל רצונך הוא שפורטאג' יוריד את הקבצים מבלי לבצע התקנה הוסף את התג fetchonly-- לפקודת אימרג':

קוד: הורדת קוד המקור עבור גנומריק
# emerge --fetchonly gnumeric

[עריכה] הסרת תוכנה

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

קוד: הסרת גנומריק (gnumeric) מהמערכת
# emerge --unmerge gnumeric

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

[עריכה] עדכון המערכת שלך

כדי להחזיק את המערכת שלך במצב מושלם (וגם את עידכוני הבטיחות האחרונים) עליך לעדכן את המערכת שלך באופן קבוע. מאחר ופורטאג' בודק את ה-ebuilds שנמצאים בעץ פורטאג', עליך לעדכן קודם כל את העץ. כאשר עץ הפורטאג' מעודכן, תוכן לעדכן את המערכת שלך כל ידי emerge --update world:

קוד: עדכון המערכת שלך
# emerge --update world

פורטאג' יבדוק אם יש גרסה חדשה יותר עבור התוכנות שהתקנת. אולם הוא יבדוק רק את אלו שהתקנת במפורש, לא את אלו שהותקנו כתוצאה מתלות. אם ברצונך לעדכן את כל התוכנות ללא יוצא מן הכלל, עליך להוסיף את התג deep-- :

קוד: עדכון כל המערכת שלך
# emerge --update --deep world

אם שינית דגלי שימוש (USE flags) לאחרונה אולי תרצה להוסיף את התג newuse-- .לאחר הוספתו, פורטאג' יבדוק אם השינוי מצריך התקנה של חבילות חדשות או הידור מחדש של קיימות:

קוד: ביצוע עדכון מלא
# emerge --update --deep --newuse world

[עריכה] חבילות חליפיות Stub Packages

חבילות מסוימות בעץ פורטאג' אינן מכילות תוכן ממשי אך משמשות להתקנת אוסף של חבילות. לדוגמא חבילת kde תתקין סביבת KDE מושלמת על גבי מחשבך על ידי משיכת חבילות שונות הקשורות ב-KDE על ידי הגדרתן כחבילות ש-KDE תלוי בהן.

אם תבקש אי פעם להסיר חבילה שכזו מהמחשב, להרצת emerge --unmerge לא תהיה השפעה רבה שכן החבילות התלויות ישארו במערכת.

לפורטאג' יש את היכולת להסיר חבילות "יתומות" (תוכנות שהחבילה שהם הותקנו בגללה הוסרה). אולם מאחר והתלויות של התוכנה משתנות באופן מתמיד, עליך לעדכן את המערכת במלואה, כולל שינויים חדשים שישמת על ידי שינוי דגלי שימוש (USE flags). לאחר מכן תוכל להריץ emerge --depclean כדי להסיר תלויות יתומות. לאחר שזה נעשה, עליך לבנות מחדש את הישומים שקושרו באופן דינמי לחבילות שהוסרו זה עתה וכבר אין בהם צורך. כל זה מושג עלידי שלושת הפקודות הבאות:

קוד: הסרת תלויות יתומות
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

revdep-rebuild מסופק עם חבילת ערכת הכלים של ג'נטו (Gentoolkit); אל תשכח להתקין אותה לפני כן:

קוד: התקנת ערכת הכלים של ג'נטו
# emerge gentoolkit

[עריכה] כאשר פורטאג' מתלונן...

[עריכה] אודות חריצים, וירטואלים, ענפים ארכיטקטורות ופרופילים

ובאנגלית: About SLOTs' Virtuals' Branches' Architectures and profiles. כפי שציינו קודם, לפורטאג' יש עוצמה רבה והוא תומך בתכונות שאינן קיימות בכלי תחזוקת תוכנה אחרים. כדי להבין זאת נסביר מאפיינים אחדים של פורטאג' מבלי לגלוש לפירוט יתר.

עם פורטאג' גרסאות שונות של אותה חבילת תוכנה יכולות להתקיים בו זמנית על גבי המערכת. בזמן שהפצות אחרות נוטות לתת שם לחבילות שלהם לפי הגרסה (כמו freetype ו- freetype2), פורטאג' משתמש בטכנולוגיה הקרויה חריץ (אני מודה: Slot נשמע יותר טוב...המשמעות של חריץ פה הינה בדומה לחריץ הרחבה במחשב). ebuild מצהיר על חריץ מסוים לגרסה שלו. מספר ebuild עם חריצים שונים יכולים להתקיים בו זמנית באותה מערכת. לדוגמה לחבילת freetype יש זוג ebuild עם "SLOT="1 ו- "SLOT="2 .

ישנן חבילות שמספקות פונקציונליות דומה אולם ממומשות בצורה שונה. לדוגמא metalogd ,sysklogd וגם syslog-ng הינן רשמי-אירועים למערכת. ישומים הנשענים על מציאותו של "רשם-ארועים" אינם יכולים להניח שרק metalogd נמצא מכיוון שהרשמים האחרים גם הם מהווים בחירה טובה. פורטאג' מאפשר להגדיר וירטואלים, virtuals: כל רשם-אירועים מספק virtual/syslog כך שהישומים יכולים לסמוך על מציאותו של virtual/syslog ללא קשר לזהותו של רשם-האירועים שהותקן.

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

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

כל התקנת ג'נטו תואמת לפרופיל (profile) מסוים אשר מכיל בן השאר רשימת חבילות הדרושות למערכת כדי לתפקד באופן נורמלי.

[עריכה] חבילות חסומות - Blocked Packages

קוד: ‏אזהרת פורטאג' לגבי חבילות חסומות (עם האופציה pretend--)
[blocks B     ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)
קוד: ‎אזהרת פורטאג' לגבי חבילות חסומות (ללא האופציה pretend--)
!!! Error: the gnome-base/bonobo-activation package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers. 

Ebuilds מכילים שדות מסוימים המודיעים לפורטאג' מהם התלויות של החבילה. קיימים 2 סוגים של תלויות: תלויות בנייה, המוגדרות ב DEPEND ותלויות זמן-ריצה המוגדרות על ידי RDEPEND. כאשר אחת מן התלויות מסמנת במפורש חבילה או וירטואל כלא תואם, אזי מופעלת החסימה.

כדי לתקן חסימה, אתה יכול לבחור לא להתקין את החבילה או להסיר (unmerge) את החבילה החוסמת. בדוגמה הנ"ל, אתה יכול לבחור בן לא להתקין את libbonobo או לחילופין להסיר את bonobo-activation לפני שתנסה שוב להתקין את libbonobo.

[עריכה] חבילות ממוסכות - Masked Packages

קוד: אזהרת פורטאג' לגבי חבילות ממוסכות
!!! all ebuilds that could satisfy "bootsplash" have been masked. 
קוד: אזהרת פורטאג' לגבי חבילות ממוסכות - סיבה
!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

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

  • arch~ פירושה שהישום אינו בדוק מספיק בכדי לשימו בענף היציב. יש להמתין בן ימים ספורים לכמה שבועות ולנסות שוב.
  • arch- או -* פירושו שהישום אינו עובד על גבי הארכיטקטורה של מחשב זה. אם אתה מאמין שהחבילה אכן עובדת, הוסף דו"ח שגיאה באתר באגזילה של ג'נטו.
  • package.mask פירושו שהחבילה מוגדרת כפגומה, לא יציבה או גרוע יותר וסומנה בכוונה תחילה כ"לא-לשימוש".
  • profile פירושו שהחבילה נמצאה כלא מתאימה לפרופיל הנוכחי. במידה ותנסה להתקינו, הישום יכול לגרום לנזק למערכת שלך או שבפשטות אינו מתאים לפרופיל שאתה עושה בו שימוש.

[עריכה] תלויות חסרות Missing Dependencies

קוד: אזהרת פורטאג' לגבי תלות חסרה
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem. 

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

[עריכה] שם ebuild דו-משמעי / רב-משמעי

קוד: אזהרת פורטאג' לגבי שם אי-בילד דו-משמעי
!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

לישום אותו אתה רוצה להתקין יש שם המתאים ליותר מחבילת תוכנה אחת. אתה צריךלהוסיף לשם גם את הקטגוריה שלו. פורטאג' יראה לך את האפשרויות הקיימות שתוכל לבחור מתוכן.

[עריכה] תלות מעגלית

קוד: אזהרת פורטאג' לגבי תלות מעגלית
!!! Error: circular dependencies: 

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 

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

[עריכה] כשלון בטעינת החבילה

זוהי הודעת פורטאג' לגבי כשלון בטעינת החבילה:

קוד: אזהרת פורטאג' לגבי הורדה כושלת
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

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

[עריכה] חבילה המוגנת על ידי פרופיל המערכת

זוהי אזהרת פורטאג' לגבי חבילה מוגנת-פרופיל:

קוד: אזהרת פורטאג' לגבי חבילת פרופיל-מוגנת
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

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

[עריכה] קבצים וספריות

[עריכה] קבצי פורטאג'

[עריכה] הנחיות תצורה Configuration Directives

תצורת ברירת המחדל של פורטאג' מאוחסנת ב- etc/make.globals/ . כאשר תתבונן בקובץ זה, תבחין שכל תצורת פורטאג' נשלטת על ידי משתנים. בהמשך יתואר לאילו משתנים "מקשיב" פורטאג' ומה משמעותם.

מאחר וחלק גדול מהנחיות התצורה משתנה מארכיטקטורה אחת לשניה, לפורטאג' יש בנוסף קבצי תצורה אשר הינם חלק מן הפרופיל בו אתה משתמש. הפרופיל הנוכחי נבחר על ידי קישור סימלי (symlink) בשם etc/make.profile/ . התצורות של פורטאג' הינם סט מתוך קבצי make.defaults של הפרופיל שלך, ומכל פרופילי האב. אנו נסביר יותר אודות פרופילים וספרית etc/make.profile/ בהמשך.

אם אתה מתכנן לשנות משתנה תצורה (configuration variable) אל תשנה את etc/make.globals/ ולא את make.defaults . במקום זאת תוכל לשנות את etc/make.conf/ אשר לו עדיפות כל פני הקבצים הקודמים. בנוסף קיים גם הקובץ etc/make.conf.example/ . כפי ששמו מרמז, זהו קובץ דוגמה בלבד - פורטאג' אינו קורא אותו.

ניתן בנוסף להגדיר משתנה פורטאג' כמשתנה סביבה (environment variable), אולם אנו איננו ממליצים על כך.

[עריכה] מידע יחודי לפרופיל

כבר נתקלנו בספריה etc/make.profile/ . ובכן, זוהי אינה ספריה ממש אלא קישור סימלי, בדרך כלל אחד מתוך usr/portage/profiles/ אע"פ שביכולתך לצור פרופילים משלך במקום אחר וליצור קישור אליהם. הפרופיל מכיל אינפורמציה יחודית לארכיטקטורה עבור פורטאג', כמו רשימת חבילות השייכות למערכת המתאימה לפרופיל, רשימת חבילות שאינן עובדות (או ממוסכות) עם הפרופיל וכו'.

[עריכה] תצורה המוגדרת על ידי המשתמש

כאשר עליך לאכוף על פורטאג' התנהגות שונה בנוגע להתקנת תוכנה, הענין יגמר בעריכת קבצים בתוך etc/portage/ . ממולץ מאד לעשות שימוש בקבצים בתוך etc/portage/, ומאד לא ממולץ לבצע את האכיפה תוך שימוש במשתני סביבה!

בתוך הספריה etc/portage/ תוכל ליצור את הקבצים הבאים:

  • package.mask מכיל רשימה של חבילות שאינך רוצה שפורטאג' יתקין אותם.
  • package.unmask מכיל רשימה של חבילות שאתה רוצה לאפשר את התקנתן, תוך ידיעה שמפתחי ג'נטו מאד לא ממליצים שתעשה כן.
  • package.keywords מכיל רשימה של חבילות שאתה רוצה לאפשר את התקנתן אע"פ שהחבילה לא נמצאה כמתאימה למערכת או לארכיטקטורה (עדיין).
  • package.use מכיל רשימי של דגלי שימוש (USE flags) שאתה רוצה להשתמש בהם לחבילות מסוימות מבלי להפוך אותם לדגלים של כל המערכת.

מידע נוסף בנוגע לספרייה etc/portage/ ניתן למצוא במדריך:

קוד: קריאת דפי העזרה של הפורטאג'
# man portage

[עריכה] שינוי מיקום של קבצי וספריות פורטאג'

קבצי התצורה שהוזכרו קודם לכן אינם יכולים להיות מאוחסנים במקום אחר - פורטאג' תמיד מחפש את קבצי התצורה באותם המקומות בדיוק. אולם, פורטאג' עושה שימוש במקומות רבים אחרים למטרות כגון: ספרית בנית חבילה, מקום לאיחסון קוד מקור, מקום העץ של פורטאג' וכו'. לכל השימושים הללו יש כברירת מחדל מקומות ידועים מראש, אולם ניתן לשנותם על ידי הכנסת שינויים מתאימים בקובץ etc/make.conf/ . שאר הפרק יוקדש להסבר על המקומות המיוחדים שפורטאג' עושה בהם שימוש, ואיך לשנות את מיקומם במערכת הקבצים שלך.

מסמך זה אינו מיועד לתת 100% כיסוי של כל הפרטים. לשם כך אנא קרא את דפי המידע של פורטאג' ו- make.conf :

קוד: קריאת דפי העזרה של הפורטאג' ושל ה-make.conf
# man portage
# man make.conf

[עריכה] איחסון קבצים

[עריכה] עץ פורטאג'

מיקום ברירת המחדל של עץ פורטאג' הינו usr/portage/ . מיקום זה מוגדר על ידי המשתנה PORTDIR. כאשר תעביר את מיקום עץ פורטאג' למקום אחר (על ידי שינוי משתנה זה), אל תשכח לשנות גם את הקישור הסימלי etc/make.profile/ בהתאם.

עקב הצורה בה עובד פורטאג' עם משתנים, המשתנים הבאים לא יבחינו בשינוי שחל ב- PORTDIR, ויתכן ותרצה גם לשנותם: PKGDIR, DISTDIR, RPMDIR.

[עריכה] חבילות בינאריות בנויות מראש

אע"פ שפורטאג' כברירת מחדל, אינו עושה שימוש בחבילות בינאריות בנויות מראש, יש לו תמיכה נרחבת בהן. כאשר תבקש מפורטאג' לעבוד עם חבילות מוכנות מראש, הוא יחפש אותן ב- usr/portage/packages/ . מיקום זה מוגדר על ידי המשתנה PKGDIR.

[עריכה] קוד מקור

קוד המקור של ישומים מאוחסן כברירת מחדל ב- usr/portage/distfiles/. מיקום זה מוגדר על ידי המשתנה DISTDIR.

[עריכה] קבצי RPM

אע"פ שפורטאג' אינו יכול להשתמש בקבצי RPM, הוא יכול ליצר כאלה על ידי שימוש בפקודה ebuild (ראה The Ebuild Application). המקום בו פורטאג' מאכסן קבצי RPM כברירת מחדל הוא usr/portage/rpm/. מיקום זה מוגדר על ידי המשתנה RPMDIR.

[עריכה] בנית תוכנה

[עריכה] קבצים זמניים של פורטאג'

כברירת מחדל, פורטאג' מאחסן קבצים זמנים ב- var/tmp/portage/ . מיקום זה מוגדר על ידי המשתנה PORTAGE_TMPDIR.

עקב הצורה בה עובד פורטאג' עם משתנים, המשתנים הבאים לא יבחינו בשינוי שחל ב- PORTAGE_TMPDIR, ויתכן ותרצה גם לשנותם: BUILD_PREFIX.

[עריכה] ספריית בניה

פורטאג' יוצר ספריות בנייה יחודיות לכל חבילה שמבוצע עליה אמרג' בתוך var/tmp/portage/ . מיקום זה מוגדר על ידי המשתנה BUILD_PREFIX.

[עריכה] מיקום מערכת קבצים קיימת

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

[עריכה] יכולות רישום אירועים

[עריכה] רישום אירועים עבור Ebuild

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

[עריכה] קביעת תצורה על ידי משתנים

[עריכה] תצורת פורטאג'

כפי שצוין קודם לכן, תצורת פורטאג' נקבעת על ידי הרבה משתנים שביכולתך לקבוע את תוכנם בקובץ etc/make.conf/ . אנא התייחס למדריך של make.conf בכדי לקבל מידע מלא ושלם יותר:

קוד: קריאת דפי העזרה של ה-make.conf
# man make.conf

[עריכה] אפשרויות בנית קוד יחודיות

[עריכה] אפשרויות מהדר (קומפיילר) וקובע תצורה (Configurator)

כאשר פורטאג' בונה ישומים, הוא מעביר את התוכן של המשתנים הבאים למהדר ולסקריפט הקונפיגורציה (תרגום תרגום, אבל אם הייתי רושם "תסריט קביעת התצורה" גם אני לא הייתי מבין מה רשמתי):

  • CFLAGS & CXXFLAGS קובעים את הדגלים למהדר C וגם ++C (אשר מושפע מ- CXXFLAGS).
  • CHOST קובע את הידע לגבי תצורת המעבד (CPU) עבור סקריפט הקונפיגורציה של הישום.
  • MAKEOPTS מועבר לפקודת make ובדרך כלל תוכנו מציין את כמות העיבוד המקבילי שיהיה בזמן הידור. ניתן למצוא מידע נוסף לגבי אפשרויות make בדף המדריך (man make)

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

[עריכה] אפשרויות Merge

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

[עריכה] הגנה על קובץ תצורה

[עריכה] המקומות המוגנים של פורטאג'

פורטאג' ידרוס קבצים של גרסת תוכנה ישנה בקבצים החדשים יותר במידה וקבצים אלו אינה מאוחסנים במקום מוגן. מקומות מוגנים אלו מוגדרים על ידי המשתנה CONFIG_PROTECT ובדרך כלל אלו הם מיקומים של קבצי תצורה. הספריות ברשימה מופרדות בינהן על ידי תו רווח. שמו של קובץ שהיה אמור להדרס אלמלא ההגנה משונה והמשתמש מוזהר לגבי הימצאותה של גרסה חדשה יותר של קובץ תצורה. באפשרותך לקבל את הערך הנוכחי של CONFIG_PROTECT על ידי פקודת emerge --info:

קוד: הצגת הגדרת ה-CONFIG_PROTECT

{{{2}}}

מידע נוסף לגבי ההגנה שפורטאג' נותן לקבצי תצורה ניתן למצוא בעזרת emerge:

קוד: מידע נוסף על הגנת קובץ ההגדרות
# emerge --help config

[עריכה] ספריות שאינן נכללות

כדי להסיר את ההגנה מתתי-ספריות של מקומות מוגנים, באפשרותך להשתמש במשתנה CONFIG_PROTECT_MASK.

[עריכה] אופציות טעינה

[עריכה] מיקום שרתים

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

  • GENTOO_MIRRORS מגדיר רשימה של מיקומי שרתים אשר מכילים קוד מקור (distfile).
  • PORTAGE_BINHOST מגדיר מיקום של שרת המכיל חבילות בנויות מראש עבור מחשבך.

משתנה שלישי קשור למיקומו של שרת rsync שאתה עושה בו שימוש כאשר הנך מעדכן את עץ פורטאג':

  • SYNC מגדיר את מיקומו של שרת שפורטאג' מביא ממנו את עץ פורטאג'.

ניתן לתת למשתני GENTOO_MIRRORS ו-SYNC ערך באופן אוטומאטי על ידי שימוש בפקודת mirrorselect. יש להתקין את הישום על ידי emerge mirrorselect לפני שתוכל להשתמש בו. למידע נוסף ראה את העזרה המקוונת של mirrorselect:

קוד: מידע נוסף על mirrorselect
# mirrorselect --help

אם סביבת העבודה שלך דורשת ממך שימוש בפרוקסי, באפשרותך להגדיר שרת פרוקסי על ידי המשתנים HTTP_PROXY, FTP_PROXY, RSYNC_PROXY.

[עריכה] פקודות הורדה

כאשר חבילה מוסכה על ידי מפתחי ג'נטו, וברצונך להשתמש בה על אף הסיבות שצויינו בקובץ package.mask (מצוי ב usr/portage/profiles/), יש להוסיף את אותה שורה עצמה בקובץ etc/portage/package.unmask/ . לדוגמה אם החבילה net-mail/hotwayd-0.8= הינה ממוסכת, ניתן להוריד את המיסוך על ידי הוספת שורה זו בקובץ package.unmask:

קובץ: etc/portage/package.unmask/
=net-mail/hotwayd-0.8

[עריכה] קובץ package.mask

כאשר אינך רוצה שפורטאג' ישקול הכנסת חבילה מסוימת או גרסה ספציפית שלה, תוכל לחסום אותה על ידי הוספת השורה המתאימה לקובץ etc/portage/package.mask/ . לדוגמה, אם אינך רוצה שפורטג יתקין גרסאות חדשות של קרנל מעבר לגרסה gentoo-sources-2.6.8.1, יש להוסיף את השורה הבאה לקובץ package.mask:

קובץ: etc/portage/package.mask/
>sys-kernel/gentoo-sources-2.6.8.1

[עריכה] כלי פורטאג' נוספים

[עריכה] etc-update

etc-update הינו כלי שמטרתו להכניס קבצי תצורה חדשים מהצורה ‎._cfg0000_<name הכלי מספק דרך אינטראקטיבית להכנסת קבצי תצורה ומאפשר בנוסף הכנסה אוטומטית של שינויים פשוטים. הקבצים בתצורה הנ"ל מיוצרים על ידי פורטאג' כאשר ברצונו לאחסן קובץ בספריה מוגנת. הספריות המוגנות מוגדרות על ידי המשתנה CONFIG_PROTECT . ההפעלה של etc-update הינה פשוטה למדי:

קוד: הרצת etc-update
# etc-update

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

קוד: אפשרויות etc-update
Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

אם תבחר 1-, etc-update יצא מבלי לבצע כל שינוי. אם תבחר 3- או 5-, כל קבצי התצורה הקיימים ברשימה יוחלפו בקבצים חדשים. מכאן שחשוב מאד לבחור תחילה את קבצי התצורה שאסור להם להתעדכן באופן אוטומטי. כל מה שצריך לעשות הוא להקליד את המספר הרשום משמאל לקובץ התצורה.

לדוגמה, נבחר את הקובץ etc/pear.conf/:

קוד: עדכון קובץ הגדרות ספציפי
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

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

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

קוד: פקודות אפשריות עבור מרג' אינטרקטיבי
ed:     Edit then use both versions, each decorated with a header.
eb:     Edit then use both versions.
el:     Edit then use the left version.
er:     Edit then use the right version.
e:      Edit a new version.
l:      Use the left version.
r:      Use the right version.
s:      Silently include common lines.
v:      Verbosely include common lines.
q:      Quit.

כאשר תסיים לעדכן את קבצי התצורה החשובים, תוכל לעדכן באופן אוטומטי את כל שאר בקבצים. etc-update יסיים את פעולתו כאשר לא ימצאו לו קבצי תצורה המיועדים לעדכון.

[עריכה] dispatch-conf

על ידי השימוש ב dispatch-conf תוכל להכניס עדכונים לקבצי התצורה שלך, ובה בעת לשמור הסטוריה של כל השינויים. dispatch-conf שומר את ההבדלים בן קבצי התצורה כטלאים (פאצ' patches) או על ידי שימוש בתוכנת RCS לבקרת גרסות. בדומה ל etc-update, באפשרותך לשמור את קובץ התצורה הקיים כפי שהוא, להחליפו בחדש, לערוך שינויים בקיים, או למזג את השינויים בתהליך אינטראקטיבי. עם כל זה, ל dispatch-conf יש כמה תכונות נוספות:

  • מיזוג אוטומטי של קבצי תצורה שהעדכון בהם הוא רק בשורות של הערות/תיעוד.
  • מיזוג אוטומטי של קבצי תצורה הנבדלים בניהם רק בתווי רווח (whitespace)

לפני העבודה עם dispatch-conf יש לערוך את הקובץ etc/dispatch-conf.conf/ וליצור את המחיצה המוזכרת במשתנה archive-dir ובה נשמר תיעוד השינויים. מידע נוסף על dispatch-conf נמצא במדריך:

קוד: קריאת דפי העזרה של dispatch-conf
# man dispatch-conf

[עריכה] quickpkg

באמצעות quickpkg תוכל ליצור גיבוי של חבילות שכבר הותקנו במערכת שלך. גיבויים אלה ניתנים לשימוש כחבילות מוכנות מראש. הפעלת quickpkg הנה פשוטה: יש להוסיף את שמות החבילות שברצונך לגבות. לדוגמה, נגבה את arts ,procps וגם curl:

קוד: דוגמא לשימוש ב-quickpkg
# quickpkg curl arts procps

החבילות שיבנו יאוחסנו ב usr/portage/packages/All/ . קישורים סימליים (Symbolic links) המצביעים על חבילות אלו ימוקמו ב-‏/usr/portage/packages/<category> }}

[עריכה] סטייה מהעץ הרשמי

[עריכה] שימוש בתת עץ של פורטאג'

[עריכה] הוצאת חבילות / קטגוריות

באפשרותך לבחור חבילות / קטגוריות מסוימות שיעודכנו, ולהתעלם מחבילות / קטגוריות אחרות. אנו משיגים זאת על ידי הכוונת rsync להתעלם מחבילות / קטגוריות בזמן שמבוצע emerge --sync . כברירת מחדל rsync בודק את התוכן של etc/portage/rsync_excludes/ (במידה והקובץ קיים). קובץ זה מכיל רשימה של קטגוריות או חבילות שאינך רוצה ש rsync יעדכן. יש לשים לב שצעד מעין זה עלול לגרום לבעיות של תלות הדדית, שכן חבילות חדשות שמאופשרות עשויות להיות תלויות בגרסה חדשה יותר בחבילות שעידכונן חסום.

[עריכה] הוספת Ebuilds לא רשמיים

[עריכה] הגדרת עץ פורטאג' מקבילי - Portage Overlay

באפשרותך לבקש מפורטאג' לבנות חבילות לא רישמיות שאינן מצויות בעץ פורטאג'. בתחילה יש ליצור מחיצה חדשה (למשל usr/local/overlays/portage/ ) ובה תשמור ebuild לא רשמיים. יש להשתמש באותו מבנה מחיצות הנהוג בעץ פורטאג' הרשמי! הצעד הבא הוא להגדיר משתנה PORTDIR_OVERLAY בקובץ etc/make.conf/ ולאתחלו למחיצה שכבר הגדרת:

קוד: הגדרת קובץ חיצוני ב-etc/make.conf/
PORTDIR_OVERLAY="/usr/local/overlays/portage"
(אפשר לשלב יותר מעץ אחד ברשימה על ידי תו רווח בן מחיצה למחיצה)
PORTDIR_OVERLAY="/usr/local/overlays/portage /usr/local/overlays/bmg-main"

עתה כשתשתמש בפורטאג' הוא יקח בחשבון את ה ebuild הנוספים הנמצאים בעץ שיצרת. הפעלת emerge --sync לא תפגע או תעדכן את המידע המצוי בעץ המקביל.

[עריכה] תוכנה המתוחזקת מחוץ לפורטאג'

[עריכה] השימוש בפורטאג' עם תוכנה המתחזקת את עצמה

בכמה מקרים תרצה להתקין, לשנות תצורה ולתחזק תוכנה בעצמך ללא סיוע פורטאג', אפילו אם התוכנה זמינה בפורטאג' והוא יכול לעשות זאת עבורך. מקרים ידועים הם קוד המקור של הקרנל, דרייברים של nvidia. באפשרותך לידע את פורטאג' לגבי חבילות המותקנות באופן ידני. תהליך זה קרוי הזרקה (injecting) הוא נתמך על ידי הקובץ etc/portage/profile/package.provided/ . לדוגמה, אם ברצונך להודיע לפורטאג' לגבי vanilla-sources-2.6.11.6 שזה עתה התקנת באופן ידני, הוסף את השורה הבאה לקובץ הנ"ל:

קוד: דוגמא לשורה עבור package.provided
sys-kernel/vanilla-sources-2.6.11.6

[עריכה] תוכנת Ebuild

[עריכה] הערת המתרגם
למילה ebuild יש 2 משמעויות בטקסט המקור. כדי להבדיל בינהם בתרגום יצרתי את הכלל הבא:
  • ebuild מתאר את התוכנה הקרויה כך
  • אי-בילד הינו קובץ טקסט המכיל הוראות לבניית תוכנה מקוד מקור

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

[עריכה] אימרג' ו-Ebuild

תוכנת ebuild נותנת קישור ברמה הבסיסית למערכת פורטאג'. תוך שימוש בתוכנה זו ביכולתך לבצע פעולות מסוימות ע"ג אי-בילד ספציפי. לדוגמה, ביכולתך לבצע שלבים מסוימים בתהליך ההתקנה (emerge) באופן ידני. השימוש ב ebuild מיועד בעיקר למטרות פיתוח. מידע נוסף על ebuild ניתן למצוא במדריך למפתח. בכל אופן אנו נסביר כיצד ebuild מופעל על ידי פורטאג' בתהליך ההתקנה של כותר תוכנה, וכיצד להפעיל צעדים שלאחר הכנת התצורה (post-configuration) אשר מאופשרים בהתקנות מסוימות.

[עריכה] התקנה ידנית של תוכנה

[עריכה] טעינת קוד המקור וביצוע בדיקת סיכום (Checksum)

כאשר אתה מפעיל ebuild על גבי קובץ אי-בילד, הוא יבצע בדיקת סיכום (checksum) עבור כל הקבצים שהוזכרו בקובץ המניפסט (Manifest) או בקבצים מהצורה files/digest-<name>-<version>.דבר זה קורה לאחר שקבצי המקור הובאו. על מנת להביא את קבצי המקור תוך שימוש ב ebuild יש להפעיל את פקודת fetch

קוד: הורדת קוד המקור
# ebuild path/to/ebuild fetch

במידה וקוד md5sum אינו תואם לזה הנמצא בקובץ המניפסט, או לחילופין שאחד מקבצי המקור שהורדו אינו תואם לאלו הרשומים ב <files/digest-<package אזי תתקבל הודעת שגיאה בדומה לזו:

קוד: כשלון בדיקות שלמות האי בילד
!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>> your file's digest: f10392b7c0b2bbc463ad09642606a7d6

[