טיפול בחבילות ממוסכות
מתוך הויקי של ג'נטו.
| מסופים / Shellים • X Windows • Portage • ניהול מערכת • מערכות קבצים • קרנל • שונות |
תוכן העניינים |
[עריכה] הקדמה
מאמר זה יראה לך את הדרך הנכונה להתקין חבילות ממוסכות באמצעות emerge. חבילה ממוסכת היא חבילה שנחסמה לשימוש על ידי portage. חבילות בדרך כלל נחסמות על ידי portage משום שהן אינן בדוקות או אינן יציבות. חבילה "ממוסכת" (masked) בדרך כלל אומרת שהיא צריכה עדיין בדיקה, בעוד שחבילה "ממוסכת באופן קשיח" היא חבילה שידוע שהיא אינה יציבה.
[עריכה] כיצד אדע אם חבילה ממוסכת או ממוסכת "באופן קשיח"?
קודם כל, ממוסכת על ידי מילת מפתח כחבילה שנמצאת בבדיקה/לא יציבה:
שים לב ל - masked by: ~keyword
| קוד: דוגמא לחבילה ממוסכת על ידי מילת מפתח |
# emerge gnome-extra/gdesklets-core '''Calculating dependencies''' !!! all ebuilds that could satisfy "gnome-extra/gdesklets-core" have been masked. !!! possible candidates are: - gnome-extra/gdesklets-core-0.26 (masked by: ~keyword) - gnome-extra/gdesklets-core-0.26.1 (masked by: ~keyword) !!! Error calculating dependencies. Please correct. |
לאחר מכן, חבילה ממוסכת באופן "קשיח" (שים לב ל - masked by: package.mask
| קוד: דוגמא לחבילה ממוסכת באופן קשיח |
# emerge -pv filewatcher These are the packages that I would merge, in order: Calculating dependencies !!! All ebuilds that could satisfy "filewatcher" have been masked. !!! One of the following masked packages is required to complete your request: - app-admin/filewatcher-2.4.0 (masked by: package.mask) # Elfyn McBratney <beu@gentoo.org> (28 Apr 2005) # Masked for testing. |
[עריכה] אבל אתה רוצה להתקין את החבילה למרות זאת...
[עריכה] חבילות ממוסכות
השיטה המסורתית הייתה:
| קוד: ביטול מיסוך חבילה בשיטה הישנה |
ACCEPT_KEYWORDS="~x86" emerge gnome-extra/gdesklets-core |
אבל שיטה זו אינה מומלצת כיום. קרא הודעה זו כדי לדעת מדוע ACCEPT_KEYWORDS אינו פתרון טוב... בעקרון הבעייה היא שברגע שתעשה emerge -u world, המערכת תנסה לבצע "שדרוג" לגירסא ישנה יותר לחבילות שהותקנו באמצעות ACCPET_KEYWORDS, וזה יכול, באופן פוטנציאלי, לגרום לשינויים הרסניים ולהרס המערכת שלך. הדגל -U מונע התנהגות זו.
השיטה החדשה היא:
| קוד: ביטול מיסוך חבילה בשיטה החדשה |
echo "=gnome-extra/gdesklets-core-2.10.9" >> /etc/portage/package.keywords |
שים לב: אינך חייב לציין את הארכיטקטורה ב-package.keywords אלא אם כן אתה רוצה להשתמש בארכיטקטורה ששונה מהנוכחית שלך, דבר שאינו מומלץ.
אם emerge אומר שהחבילה מוסכה על ידי מילת המפתח -*, תצטרך לקחת את זה כפי שזה נאמר במקור, ולהשתמש, לדוגמא ב:
| קוד: ביטול מיסוך חבילה עם מילת מפתח מסויימת |
echo "=gnome-extra/gdesklets-core-2.10.9 -*" >> /etc/portage/package.keywords |
עוד מידע בנושא ניתן למצוא במאמר package.keywords.
[עריכה] חבילות ממוסכות באופן קשיח
חבילות הממוסכות באופן קשיח ניתן להתקין על ידי הוספתן באופן פרטני לתוך הקובץ /etc/portage/package.unmask. התחביר לקובץ זה, לעומת זאת, מעט שונה מהתחביר של הקובץ package.keywords:
| קוד: ביטול מיסוך של חבילה ממוסכת באופן קשיח |
echo "=app-admin/filewatcher-2.4.0" >> /etc/portage/package.unmask |
פעולה זו תסיר את המיסוך של גירסא 2.4.0 של app-admin/filewatcher. אם אתה רוצה לבטל את המיסוך עבור כל גירסא אפשרית של החבילה, ציין רק את שם החבילה, כך:
| קוד: ביטול מיסוך של חבילה ממוסכת באופן קשיח בלי תלות בגירסת החבילה |
echo "app-admin/filewatcher" >> /etc/portage/package.unmask |
כמובן, אפשר להשתמש גם באופרטורים < ו- > כמו ב-package.keywords.
שים לב, שחבילה שמוסכה באופן קשיח, בדרך כלל ממוסכת כלא יציבה גם כן. ככל הנראה תצטרך להוסיף את החבילה ל-package.unmask וגם ל-package.keywords.
[עריכה] תסריט עבור etc/portage/package.keywords/
הנה דרך נוחה להתקנת תוכנות אשר מוסכו עם מילת המפתח ארכיטקטורה~
| קוד: usr/local/bin/gimme/ |
#!/bin/bash ############### gimme version 0.5.2a ############### # Script to add package names to package.keywords. # # Originally by Tekmanx, re-written by Hackeron # # re-re-written by Gherald # #################################################### source /sbin/functions.sh [[ $EUID != 0 ]] && ewarn "You are not root!" && exit 1 [ -z "$1" ] && eerror "Please specify a package name (eg. gimme <package-name>)" && exit 1 [ -d /etc/portage ] || mkdir /etc/portage #get fully-qualified ebuild name FQN=`ACCEPT_KEYWORDS="~x86" emerge -p $1 | grep "$1" | grep 'ebuild ' | tail -n 2 | head -n 1 | sed 's/\[ebuild.......\]\ //' | sed 's/\[[[:digit:]].*\]//' | sed 's/-[[:digit:]].*$//'` if [ -z $FQN ]; then # We think there is either none or more than one package matching $1 # so we let the user deal with it emerge $@ --ask ; exit fi EXISTING="$(grep "^ *[\>\<=]*$FQN *" /etc/portage/package.keywords)" if [ -n "$EXISTING" ]; then ewarn "/etc/portage/package.keywords already contains \"$EXISTING\"" emerge $@ --ask ; exit else einfo "Adding $FQN to package.keywords and emerging in 5 seconds."; sleep 5 echo $FQN >> /etc/portage/package.keywords emerge $@ --ask fi |
שמור זאת בקובץ שנקרא "gimme" בספרייה /usr/local/bin, ולאחר מכן, הרץ את הפקודה הבאה:
| קוד: הוספת הרשאת הרצה לקובץ |
|
chmod 755 /usr/local/bin/gimme |
כעת, אתה מוכן להשתמש בתסריט.. לדוגמא:
| קוד: הרצת gimme |
|
gimme gdesklets-core |
[עריכה] תסריט עבור etc/portage/package.unmask/
הנה דרך נוחה לבטל מיסוך של חבילה שמוסכה באופן קשיח על ידי /usr/portage/profiles/package.mask
| קוד: usr/local/bin/unmask/ |
#!/bin/bash
#
# This script will unmask any package masked by the actual profile.
#
# First we search for what is actually masked
# in /usr/portage/profiles/package.mask then add a corresponding
# line in /etc/portage/package.unmask
#
#
# Original by drax@sweon.net
source /sbin/functions.sh
[ "$UID" -ne "0" ] && eerror "You must be root to run this script." && exit
[ -z "$1" ] && eerror "Please state a package name (eg. unmask kde-base/kode)" && exit
[ ! -d /etc/portage ] && einfo "Creating /etc/portage directory" && mkdir /etc/portage
if [ "$(grep "$1"-[0-9] /etc/portage/package.unmask 2>/dev/null)" ]; then
ewarn "$1 already exists in package.unmask"
else
PKG_LINE="$(grep "$1"-[0-9] /usr/portage/profiles/package.mask 2>/dev/null)"
if [ ! $PKG_LINE ]; then
PKG_LINE="$(grep "$1" /usr/portage/profiles/package.mask 2>/dev/null)"
fi
if [ ! $PKG_LINE ]; then
ewarn "Could not find $1 in /usr/portage/profiles/package.mask" && exit 1
else
ebegin "Adding $1 to package.unmask"
echo $PKG_LINE >> /etc/portage/package.unmask
eend $?
fi
fi
|
שוב, שים את הקובץ "unmask" בספריה /usr/local/bin ובצע:
| קוד: הוספת הרשאת הרצה לקובץ |
|
chmod 755 /usr/local/bin/unmask |
כעת אתה מוכן להשתמש בתסריט.. לדוגמא:
| קוד: הרצת unmask |
unmask kde-base/kode |
שים לב שגירסא זו של unmask דורשת את שם החבילה המלא, כולל app-category/
אתה יכול לשלב את שני התסריטים יחד, לדוגמא:
| קוד: הרצת unmask ו-gimme ביחד |
|
unmask kde-base/kode && gimme kode |
תהנה :)
[עריכה] ראה גם
- ספר היד של ג'נטו - ערבוב ענפי תוכנה שונים (אנגלית)
- כיצד להשתמש ב-Portage נכון (אנגלית)
