4. ¿ØÖÆ Portage µÄÔË×÷
4.a. É趨µµ°¸±£»¤
±£»¤£¿
Portage ÖªµÀ "±£»¤µµ°¸" µÄµÀÀí¡£Õâ´ú±í×Å,µ±Äú¸üÐÂÈí¼þʱ,Ëü²»»á¼´¿ÌµÄ½«ÀϾɵÄÉ趨µµ¸²¸Ç,µ«ÊÇ»á֪ͨÄúÓиüеİ汾¡£Õâ¼´½«³ÉΪÉ趨µµµÄºÃÓù¤¾ß£¨µµ°¸¶¼·ÅÔÚ /etc£©¡£
ËäÈ»Ëü²»»á¸²¸ÇÕâЩÉ趨µµ,µ«ÊÇËü½«»á½¨Á¢Ðµĵµ°¸ÃüÃûΪ ._cfg000_<name> <name> Ϊ±¾À´µÄµµÃû¡£È»ºó½«»áËæ×ÅʹÓÃÕ߱ȽϺ͸ü¸Ä¡£Äú¿ÉÒÔʹÓà etc-update Ö¸ÁîÀ´ÈÃÄúµÄ¸üж¯×÷¸ü¼Ó±ãÀû¡£ÎÒÃǽ«ÔÙÉÔºó½²½â etc-update¡£
¶¨Òå CONFIG_PROTECT
Portage ²»ÄÜÒÔ¸ö±ðµµ°¸µÄ·½Ê½±£»¤¡£µ«ÊÇËû¿ÉÒÔ±£»¤Õû¸öĿ¼¡£ CONFIG_PROTECT µÄ±äÁ¿½«»áÊÇ´¢´æÕâЩĿ¼µÄ±äÁ¿,°üÀ¨±£»¤Ä¿Â¼ÒÔϵÄ×ÓĿ¼¡£CONFIG_PROTECT ±äÁ¿ÊÇÔÚ /etc/make.globals µÄµµ°¸ÄÚ¶¨Òå,µ«ÊÇÈç¹ûÄúÏëÒª¸ü¸ÄËü,ÄúÓ¦¸Ã¶¨Òå /etc/make.conf £¨ÎªÁËÈ·±£Í³Ò»ÐÔ,ËùÓÐµÄ Portage É趨¶¼»áÔÚ /etc/make.conf µÄµµ°¸ÄÚ£©¡£
Code Listing 1: É趨 CONFIG_PROTECT ·¶Àý
CONFIG_PROTECT="/etc /usr/share/config /usr/kde/3.1/share/config"
Èç¹ûÄúÏëÒª±£»¤Ä³¸öĿ¼,µ«ÊDz»ÊÇËùÓеÄ×ÓĿ¼,Äú¿ÉÒÔ¶¨Òå CONFIG_PROTECT_MASK µÄ±äÁ¿À´ "·´±£»¤" ÕâЩ¡£µ± /etc/make.globals ½«¶¨ÒåΪԤÉèµÄ±äÁ¿,ÄúÓ¦¸Ã´Ó /etc/make.conf ÄÚ½øÐиü¸Ä£º
Code Listing 2: É趨 CONFIG_PROTECT_MASK ·¶Àý
CONFIG_PROTECT_MASK="/etc/init.d"
¹ØÓÚ¸ü¶àµÄµµ°¸±£»¤¿ÉÒÔÔÚ emerge µÄÏÖÔÚ˵Ã÷ÕÒµ½£º
Code Listing 3: Ë÷È¡¸ü¶à¹ØÓÚµµ°¸±¨»§µÄ˵Ã÷
# emerge --help config
etc-update
etc-update ÊÇÒ»¸öÓÃÀ´ÈÚºÏ ._cfg0000_<name> É趨µµ¡£ËüÌṩµÄÊÇ»¥¶¯ÐÔµÄÉ趨Ȼºó¿ÉÒÔ×Ô¶¯ÈÚÈëÉ趨µµ¸ü±ä¡£
Ö´ÐÐ etc-update ÊǷdz£Ö±½ÓµÄ£º
Code Listing 4: Ö´ÐÐ etc-update
# etc-update
µ±ÒªÈÚÈëһЩ¸ü±äʱ,Äú½«»á¿´µ½Ò»¸öµÈ´ý¸üб£»¤µµ°¸µÄÁбí»Ãæ¡£ÒÔÏÂÄú½«»á¿´µ½Ò»Ð©¿ÉÄܵÄÑ¡Ï
Code Listing 5: 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 Ϊ½²½â·¶Àý£º
Code Listing 6: ¸üÐÂÏà¹ØÉ趨µµ
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf[...]End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf1) Replace original with update2) Delete update, keeping original as is3) Interactively merge original with update4) Show differences again
Äú½«¿ÉÒԲ鿴Á½¸öµµ°¸Ö®¼äµÄ²î±ð¡£Èç¹ûÄúÈÏΪ¿ÉÒÔûÓÐÎÊÌâµÄÖ±½Ó¸üÐÂÉ趨µµ,ÊäÈë 1¡£Èç¹ûÄúÈÏΪ¸üеÄÉ趨µµ²»±ØÒª,ÊäÈë 2¡£Èç¹ûÄúÏëÒª½»»¥Ê½µÄ¸üÐÂÄúĿǰµÄÉ趨µµ,ÊäÈë 3¡£
ËäÈ»½²½â½»»¥Ê½µÄÈÚÈëºÜÖØÒª¡£µ«ÊÇΪÁËÍêÕû,ÎÒÃǽ«»áÁгöÒÔÏÂÄú¿ÉÒÔʹÓõÄÖ¸Áî½øÐн»»¥Ê½µÄÈÚÈëÁ½¸öµµ°¸¡£Äú½«»á¿´µ½Á½ÐÐ×Ö£¨Ò»¸öΪÔÀ´µÄ,ÁíÒ»¸öΪ¸üеģ©È»ºóÊäÈëÖ¸Áî½øÈë»Ã棺
Code Listing 7: ½»»¥Ê½ÈÚÈëÖ¸Áî
ed: ±à¼Á½¸ö°æ±¾,²¢ÇÒʹÓÃÒ»¸ö header¡£eb: ±à¼È»ºóʹÓÃÁ½¸ö°æ±¾¡£el: ±à¼È»ºóʹÓÃ×ó±ßµÄ°æ±¾¡£er: ±à¼È»ºóʹÓÃÓұߵİ汾¡£e: ±à¼Ðµİ汾¡£l: ʹÓÃ×ó±ßµÄ°æ±¾¡£r: ʹÓÃÓұߵİ汾s: °²¾²µÄ°üº¬³£Ê¹ÓõÄÐÐÊý¡£v: ÏêϸµÄÏÔʾ°üº¬³¤Ê¹ÓõÄÐÐÊý¡£q: À뿪¡£
µ±ÄúÍê³ÉÖØÒªµÄÉ趨µµ¸üÐÂʱ,ÄúÏÖÔÚ¿ÉÒÔ×Ô¶¯¸üÐÂÆäËüµÄÉ趨µµÁË¡£etc-update ½«»á¹Ø±Õ,ÒòΪËûÕÒ²»µ½¸ü¶à¿É¸üеÄÉ趨µµÁË¡£
4.b. ÍøÂçÑ¡Ïî
È«Çò¶ÔÓ³Õ¾
µ± Gentoo Õý³ÉΪÊÜ»¶ÓµÄ°æ±¾,Ñ¡ÔñµÄ¶ÔÓ³Õ¾Ò²ÊÇÏ൱±ØÒªµÄ¡£Portage ʹÓÃÈý¸ö±äÁ¿À´Ö´ÐиüÐµĹ¤×÷£ºÒ»¸öÊÇ rsync ¶ÔÓ³£¨ÓÃÀ´Í¬²½ÄúµÄ Portage£©,Ò»¸öÊÇ distfile £¨ÓÃÀ´ÏÂÔØÔʼÂ룩ÁíÒ»¸öÔòÊÇÒѱàÒëµÄÌ×¼þ¶ÔÓ³¡£
ËùÓпÉÓÃµÄ distfiles ¶ÔÓ³Õ¾½«¿ÉÒÔµ½ Gentoo ¶ÔÓ¦Õ¾ÍøÒ³ ÕÒµ½¡£ÄúÒ²¿ÉÒÔʹÓà mirrorselect ·½±ãÄúÉ趨¡£µ«ÊÇÈÃÎÒÃÇÏÈ¿´¿´ÕâЩ¸ö±ðµÄ±äÁ¿©ì
SYNC ±äÁ¿°üº¬×ÅÄúËùÏëʹÓÃµÄ rsync ¶ÔÓ³Çåµ¥¡£¾ÙÀýÀ´Ëµ,ҪѡÔñʹÓà rsync://rsync.namerica.gentoo.org/gentoo-portage,Äú½«ÐèÒª°´ÕÕÒÔÏ·½Ê½ÔÚ /etc/make.conf ¶¨Ò壺
Code Listing 8: ÔÚ /etc/make.conf ¶¨Òå SYNC
SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"
GENTOO_MIRRORS ±äÁ¿½«°üº¬×ÅÄúËùÏëʹÓÃµÄ distfiles ¶ÔÓ³Çåµ¥¡£¾ÙÀýÀ´Ëµ,
ftp://ibiblio.org/pub/Linux/distributions/gentoo ΪµÚһѡÔñ,¶ø
http://www.gtlib.cc.gatech.edu/pub/gentoo ΪµÚ¶þ,Äú½«ÐèÒª°´ÕÕÒÔÏ·½Ê½ÔÚ /etc/make.conf ¶¨Ò壺
Code Listing 9: ÔÚ /etc/make.conf ¶¨Òå GENTOO_MIRRORS
GENTOO_MIRRORS="ftp://ibiblio.org/pub/Linux/distributions/gentoo
http://www.gtlib.cc.gatech.edu/pub/gentoo"
PORTAGE_BINHOST ±äÁ¿½«°üº¬×ÅÄúËùÏëʹÓõÄÒѱàÒëÌ×¼þ¶ÔÓ³Çåµ¥¡£¾ÙÀýÀ´Ëµ,ҪʹÓÃ
ftp://login:pass@grp.mirror.site ... «ÐèÒª°´ÕÕÒÔÏ·½Ê½ÔÚ /etc/make.conf ¶¨Ò壺
Code Listing 10: ÔÚ /etc/make.conf ¶¨Òå PORTAGE_BINHOST
PORTAGE_BINHOST="ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp"
Ì×¼þ¾µÏñ
Ðí¶àÌ×¼þÓаüº¬ "mirror://" µÄ SRC ±äÁ¿¡£ÕâÖÖÌ×¼þÔÚÐí¶àÖ÷»úÉÏÓÐËûµÄÔʼÂë (¾ÍÏñ sourceforge,gnu,...)¡£µ± Portage Óöµ½ÕâÖÖµÄ SRC ±äÁ¿,Ëû»á´Ó /etc/portage/mirrors ÖÐÕÒ³öÕæÕýµÄ¾µÏñÕ¾,¶øÈç¹ûûÕÒµ½µÄ»°,¾ÍÔÚ /usr/portage/profiles/thirdpartymirrors Ö®ÖÐÕÒ¡£
Äã¿ÉÒÔÔÚ /etc/portage/mirrors ÖÐÐû¸æÄã×î³£ÓõľµÏñÕ¾¡£ÀýÈç˵,ÄãÏ£ÍûÌ×¼þÐèÒª´Ó sourceforge ÏÂÔØÊ±Ê¹ÓÃ
http://keihanna.dl.sourceforge.net/ ,Äã¿ÉÒÔÊäÈ룺
Code Listing 11: /etc/portage/mirrors ·¶Àý
sourceforge
http://keihanna.dl.sourceforge.net
ÄãÒ²¿ÉÒÔÐû¸æÌØÊâµÄ local ¾µÏñ,Õâ¸ö¾µÏñ×ÜÊǻᱻÏȼì²é,¼´Ê¹ÊÇËû±¾ÉíµÄ SRC ±äÁ¿Ã»ÓÐ "mirror://" »òÊÇËûÒѾÐû¸æËû²»Ó¦¸Ã±»¾µÏñ¡£
Mirrorselect
Èç¹ûÄúÏëʹÓà mirrorselect,ÏȰ²×°Ëü£¨Èç¹ûÄú»¹Ã»°²×°£©¡£
Code Listing 12: °²×° mirrorselect
# emerge mirrorselect
ÏÖÔÚÄú¿ÉÒÔʹÓà mirrorselect ×Ô¶¯Ñ¡Ôñ×îÊʺÏÄúµÄ¶ÔÓ³Õ¾,»òÊÇÊÖ¶¯µÄ´ÓÇåµ¥ÄÚѡȡ¡£¹ØÓÚ¸ü¶àµÄ mirrorselect ˵Ã÷,´ÓÎÄ×ÖģʽִÐÐ mirrorselect,Äú½«»á¿´µ½ mirrorselect µÄ½éÉÜ¡£
Code Listing 13: Ö´ÐÐ mirrorselect
# mirrorselect
ÏÂÔØ
Portage ʹÓà FETCHCOMMAND ºÍ RESUMECOMMAND µÄ±äÁ¿À´ÏÂÔØµµ°¸¡£Äú½«¿ÉÒÔÔÚ /etc/make.conf ºÍ /etc/make.globals ¿´µ½¡£Portage ½«Ê¹Óà wget ΪԤÉ裺
Code Listing 14: Ô¤ÉèµÄ FETCHCOMMAND & RESUMECOMMAND
FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp -P \${DISTDIR} \${URI}"RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
{DISTDIR} µÄ±äÁ¿ÊÇËùÒÔÏÂÔØµÄµµ°¸µÄ´¢´æÄ¿Â¼£¨ /usr/portage/distfiles£©,¶ø ${URI} µÄ±äÁ¿Îª Portage ÐèÒªÏÂÔØµµ°¸¡£
µ± Portage ʹÓÃÔ¤ÉèµÄ wget,Äú¿ÉÒÔÀûÓö¨Òå http_proxy ºÍ ftp_proxy£¨È«²¿Ð¡Ð´£©µÄ·½Ê½¿ªÆô wget µÄ´úÀí·þÎñÆ÷É趨¡£ËäÈ»ÄúÒ²¿ÉÒÔÔÚ /etc/make.conf ÀïÃæÉ趨,µ«ÊÇÎÒÃǽ¨ÒéÄú½« http_proxy ºÍ ftp_proxy ¶¨Òå³É»·¾³±äÁ¿¡£Çë²Î¿¼ »·¾³±äÁ¿ ½âÊÍÈçºÎ¶¨ÒåϵͳµÄ»·¾³±äÁ¿¡£
É趨 rsync
rsync ÊÇÓÃÀ´ÔÚ emerge sync µÄʱºò¸üРPortage Óá£Portage µÄ rsync ʹÓÃ×ÅÈý¸ö±äÁ¿,ËüÃÇ·Ö±ðÊÇ RSYNC_EXCLUDEFROM, RSYNC_RETIRESºÍRSYNC_TIMEOUT¡£
Ò»¸ö·ÀÖ¹ÔÚ emerge sync ʱ"±£»¤"°²×°³ÌÐò±»¸üлòÊÇÒÆ³ýµÄ·½·¨¾ÍÊÇʹÓà RSYNC_EXLUDEFROM ±äÁ¿¡£Ëû¿ÉÒÔÔÚ /etc/portage/rsync_excludes ÄÚÉ趨һ¸ö rsync µÄµµ°¸±£»¤¡£ËäÈ»ÎÒÃDz»½¨ÒéÄúʹÓÃÕâ¸ö·½·¨,ÒòΪÄúÈç¹û²»Ð¡Ðĵϰ»áÆÆ»µÏµÍ³µÄÏàÒÀÐÔ¡£ÎÒÃǽ«ÔÚÉԺ󽲽⽨ÒéʹÓõķ½Ê½, PORTDIR_OVERLAY ¡£
Code Listing 15: RSYNC_EXCLUDEFROM ±äÁ¿
RSYNC_EXCLUDEFROM="/etc/portage/rsync_excludes"
µ± rsync ʧ°ÜµÄʱºò,Ëû½«»á°´ÕÕËùÉ趨´ÎÊýÈ¥ÖØ¸´³¢ÊÔ¡£Õâ¸ö¿ÉÒÔÔÚ RSYNC_RETRIES ÀïÃæÉ趨,Ô¤ÉèΪ 3£º
Code Listing 16: RSYNC_RETRIES ±äÁ¿
RSYNC_RETRIES="3"
Èç¹ûÄúÕýÔÚʹÓÃµÄ rsync ·þÎñÆ÷·Ç³£µÄÂý,rsync ¿ÉÒÔÉ趨ֹͣ½ÓÊÕµÄʱ¼äÉ趨¡£Õ⽫ÊÇÔÚ»¹Ã»µÈµ½ÏìӦǰµÄµÈ´ýÃëÊý¡£Õ⽫ʹÓà RSYNC_TIMEOUT ±äÁ¿,Ô¤ÉèΪ 180£º
Code Listing 17: RSYNC_TIMEOUT ±äÁ¿
RSYNC_TIMEOUT="180"¡¡¡¡¡¡¡¡¡¡¡¡