ºìÁªLinuxÃÅ»§
Linux°ïÖú

Bash ʵÀý£ºÌ½ÌÖ ebuild ϵͳ

·¢²¼Ê±¼ä:2006-10-28 00:26:36À´Ô´:ºìÁª×÷Õß:soylo
½øÈë ebuild ϵͳ
ÎÒÕæÊÇÒ»Ö±ÆÚ´ý×ÅÕâµÚÈýƪ¡¢Ò²ÊÇ×îºóһƪ Bash ʵÀýÎÄÕ£¬ÒòΪ¼ÈÈ»ÒѾ­ÔÚ µÚ 1 ƪºÍ µÚ 2 ƪÖн²ÊöÁË bash ±à³Ì»ù´¡£¬¾Í¿ÉÒÔ¼¯Öн²ÊöÏó bash Ó¦Óÿª·¢ºÍ³ÌÐòÉè¼ÆÕâÑù¸ü¸ß¼¶µÄÖ÷Ìâ¡£ÔÚ±¾ÎÄÖУ¬½«Í¨¹ýÎÒ»¨ÁËÐí¶àʱ¼äÀ´±àÂëºÍϸ»¯µÄÏîÄ¿£¬Gentoo Linux ebuild ϵͳ£¬À´¸øÄú´óÁ¿Êµ¼ÊµÄ¡¢ÏÖʵÊÀ½çµÄ bash ¿ª·¢¾­Ñé¡£

ÎÒÊÇ Gentoo Linux£¨Ä¿Ç°»¹ÊÇ beta °æµÄÏÂÒ»´ú Linux OS£©µÄÊ×ϯÉè¼ÆÊ¦¡£ÎÒµÄÖ÷ÒªÔðÈÎÖ®Ò»¾ÍÊÇÈ·±£ËùÓжþ½øÖưü£¨ÀàËÆÓÚ RPM£©¶¼ÕýÈ·´´½¨²¢Ò»ÆðʹÓá£ÕýÈçÄú¿ÉÄÜÖªµÀµÄ£¬±ê×¼ Linux ϵͳ²»ÊÇÓÉÒ»¿ÃͳһµÄÔ´Ê÷×é³É£¨Ïó BSD£©£¬¶øÊµ¼ÊÉÏÊÇÓɳ¬¹ý 25 ¸öЭͬ¹¤×÷µÄºËÐİü×é³É¡£ÕâÆäÖаüÀ¨£º

°ü ÃèÊö
linux ʵ¼ÊÄÚºË
util-linux Óë Linux Ïà¹ØµÄÔÓÏî³ÌÐò¼¯ºÏ
e2fsprogs Óë ext2 ÎļþϵͳÏà¹ØµÄʵÓóÌÐò¼¯ºÏ
glibc GNU C ¿â

ÿ¸ö°ü¶¼Î»ÓÚ¸÷×﵀ tar ѹËõ°üÖУ¬²¢Óɲ»Í¬µÄ¶ÀÁ¢¿ª·¢ÈËÔ±»ò¿ª·¢Ð¡×éά»¤¡£Òª´´½¨Ò»¸ö·¢Ðа棬±ØÐë¶Ôÿ¸ö°ü·Ö±ð½øÐÐÏÂÔØ¡¢±àÒëºÍ´ò°ü´¦Àí¡£Ã¿´ÎÒªÐÞ¸´¡¢Éý¼¶»ò¸Ä½ø°üʱ£¬¶¼±ØÐëÖØ¸´±àÒëºÍ´ò°ü²½Ö裨²¢ÇÒ£¬°üȷʵ¸üеúܿ죩¡£ÎªÁ˰ïÖúÏû³ý´´½¨ºÍ¸üаüËùÉæ¼°µÄÖØ¸´²½Ö裬ÎÒ´´½¨ÁË ebuild ϵͳ£¬¸Ãϵͳ¼¸ºõÈ«Óà bash ±àд¡£ÎªÁËÔö¼ÓÄúµÄ bash ֪ʶ£¬ÎÒ½«Ñ­Ðò½¥½øµØÎªÄúÑÝʾÈçºÎʵÏָà ebuild ϵͳµÄ½â°üºÍ±àÒ벿·Ö¡£ÔÚ½âÊÍÿһ²½Ê±£¬»¹½«ÌÖÂÛΪʲôҪ×÷³öijЩÉè¼Æ¾ö¶¨¡£ÔÚ±¾ÎÄĩ⣬Äú²»½ö½«¼«ºÃµØÕÆÎÕ´óÐÍ bash ±à³ÌÏîÄ¿£¬»¹ÊµÏÖÁËÍêÕû×Ô¶¯¹¹½¨ÏµÍ³µÄºÜ´óÒ»²¿·Ö¡£

ΪʲôѡÔñ bash£¿
Bash ÊÇ Gentoo Linux ebuild ϵͳµÄ»ù±¾×é¼þ¡£Ñ¡ÔñËü×öΪ ebuild µÄÖ÷ÒªÓïÑÔÓм¸¸öÔ­Òò¡£Ê×ÏÈ£¬ÆäÓï·¨²»¸´ÔÓ£¬²¢ÇÒΪÈËÃÇËùÊìϤ£¬ÕâÌØ±ðÊʺÏÓÚµ÷ÓÃÍⲿ³ÌÐò¡£×Ô¶¯¹¹½¨ÏµÍ³ÊÇ×Ô¶¯µ÷ÓÃÍⲿ³ÌÐòµÄ¡°½ººÏ´úÂ롱£¬¶ø bash ·Ç³£ÊʺÏÓÚÕâÖÖÀàÐ͵ÄÓ¦Óᣵڶþ£¬Bash ¶Ôº¯ÊýµÄÖ§³ÖÔÊÐí ebuild ϵͳʹÓÃÄ£¿é»¯¡¢Ò×ÓÚÀí½âµÄ´úÂë¡£µÚÈý£¬ebuild ϵͳÀûÓÃÁË bash ¶Ô»·¾³±äÁ¿µÄÖ§³Ö£¬ÔÊÐí°üά»¤ÈËÔ±ºÍ¿ª·¢ÈËÔ±ÔÚÔËÐÐʱ¶ÔÆä½øÐз½±ãµÄÔÚÏßÅäÖá£

¹¹½¨¹ý³Ì»Ø¹Ë
ÔÚÌÖÂÛ ebuild ϵͳ֮ǰ£¬ÈÃÎÒÃǻعËһϱàÒëºÍ°²×°°ü¶¼Ç£ÉæÐ©Ê²Ã´¡£ÀýÈ磬ÈÃÎÒÃÇ¿´Ò»Ï "sed" °ü£¬Õâ¸ö×÷ΪËùÓÐ Linux °æ±¾Ò»²¿·ÖµÄ±ê×¼ GNU Îı¾Á÷±à¼­ÊµÓóÌÐò¡£Ê×ÏÈ£¬ÏÂÔØÔ´´úÂë tar ѹËõ°ü (sed-3.02.tar.gz)£¨Çë²ÎÔIJο¼×ÊÁÏ£©¡£ÎÒÃǽ«°ÑÕâ¸öµµ°¸´æ´¢ÔÚ /usr/src/distfiles ÖУ¬½«Ê¹Óû·¾³±äÁ¿ "$DISTDIR" À´ÒýÓøÃĿ¼¡£"$DISTDIR" ÊÇËùÓÐԭʼԴ´úÂë tar ѹËõ°üËùÔÚµÄĿ¼£¬ËüÊÇÒ»¸ö´óÐÍÔ´´úÂë¿â¡£

ÏÂÒ»²½ÊÇ´´½¨ÃûΪ "work" µÄÁÙʱĿ¼£¬¸ÃĿ¼´æ·ÅÒѾ­½âѹµÄÔ´´úÂë¡£ÒÔºó½«Ê¹Óà "$WORKDIR" »·¾³±äÁ¿ÒýÓøÃĿ¼¡£Òª×öµ½Õâµã£¬½øÈëÓÐдȨÏÞµÄĿ¼£¬È»ºóÊäÈ룺

½« sed ½âѹËõµ½ÁÙʱĿ¼

$ mkdir work$ cd work$ tar xzf /usr/src/distfiles/sed-3.02.tar.gz


È»ºó£¬½âѹËõ tar ѹËõ°ü£¬´´½¨Ò»¸ö°üº¬ËùÓÐÔ´´úÂë¡¢ÃûΪ sed-3.02 µÄĿ¼¡£ÒÔºó½«Ê¹Óû·¾³±äÁ¿ "$SRCDIR" ÒýÓà sed-3.02 Ŀ¼¡£Òª±àÒë³ÌÐò£¬ÊäÈ룺

½« sed ½âѹËõµ½ÁÙʱĿ¼

$ cd sed-3.02$ ./configure --prefix=/usr£¨autoconf Éú³ÉÊʵ±µÄ make Îļþ£¬ÕâÒª»¨Ò»Ð©Ê±¼ä£©$ make(´ÓÔ´´úÂë±àÒë°ü£¬Ò²Òª»¨Ò»µãʱ¼ä£©


ÒòΪÔÚ±¾ÎÄÖÐÖ»½²Êö½â°üºÍ±àÒë²½Ö裬ËùÒÔ½«ÂÔ¹ý "make install" ²½Öè¡£Èç¹ûÒª±àд bash ½Å±¾À´Ö´ÐÐËùÓÐÕâЩ²½Ö裬Ôò´úÂë¿ÉÄÜÀàËÆÓÚ£º

ÒªÖ´Ðнâ°ü£¯±àÒë¹ý³ÌµÄÑù±¾ bash ½Å±¾

#!/usr/bin/env bashif [ -d work ]then # remove old work directory if it exists rm -rf workfimkdir workcd worktar xzf /usr/src/distfiles/sed-3.02.tar.gzcd sed-3.02./configure --prefix=/usrmake
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 4 ÌõÆÀÂÛ

  1. soylo ÓÚ 2006-10-28 00:28:13·¢±í:

    ebuild£¬×îÖÕ°æ±¾


    #!/usr/bin/env bashif [ $# -ne 2 ]then echo "Please specify ebuild file and unpack, compile or all" exit 1fisource /etc/ebuild.confif [ -z "$DISTDIR" ]then # set DISTDIR to /usr/src/distfiles if not already set DISTDIR=/usr/src/distfilesfiexport DISTDIRebuild_unpack() { #make sure we're in the right directory cd ${ORIGDIR} if [ -d ${WORKDIR} ] then rm -rf ${WORKDIR} fi mkdir ${WORKDIR} cd ${WORKDIR} if [ ! -e ${DISTDIR}/${A} ] then echo "${DISTDIR}/${A} does not exist. Please download first." exit 1 fi tar xzf ${DISTDIR}/${A} echo "Unpacked ${DISTDIR}/${A}." #source is now correctly unpacked}user_compile() { #we're already in ${SRCDIR} if [ -e configure ] then #run configure script if it exists ./configure --prefix=/usr fi #run make make $MAKEOPTS MAKE="make $MAKEOPTS" } ebuild_compile() { if [ ! -d "${SRCDIR}" ] then echo "${SRCDIR} does not exist -- please unpack first." exit 1 fi #make sure we're in the right directory cd ${SRCDIR} user_compile}export ORIGDIR=`pwd`export WORKDIR=${ORIGDIR}/workif [ -e "$1" ]then source $1else echo "Ebuild file $1 not found." exit 1fiexport SRCDIR=${WORKDIR}/${P}case "${2}" in unpack) ebuild_unpack ;; compile) ebuild_compile ;; all) ebuild_unpack ebuild_compile ;; *) echo "Please specify unpack, compile or all as the second arg" exit 1 ;;esac


    Çë×¢Ò⣬ÔÚÎļþµÄ¿ªÊ¼²¿·ÖÖ´ÐÐ /etc/ebuild.conf¡£ÁíÍ⣬»¹Òª×¢Ò⣬ÔÚȱʡ user_compile() º¯ÊýÖÐʹÓà "$MAKEOPTS"¡£Äú¿ÉÄÜÔÚÏ룬Õâ¹ÜÓÃÂð - ±Ï¾¹£¬ÔÚÖ´ÐÐʵ¼ÊÉÏÊÂÏȶ¨Òå "$MAKEOPTS" µÄ /etc/ebuild.conf ֮ǰ£¬ÎÒÃÇÒýÓÃÁË "$MAKEOPTS"¡£¶ÔÎÒÃÇÀ´ËµÐÒÔ˵ÄÊÇ£¬ÕâûÓÐÎÊÌ⣬ÒòΪ±äÁ¿À©Õ¹Ö»ÔÚÖ´ÐÐ user_compile() ʱ²Å·¢Éú¡£ÔÚÖ´ÐÐ user_compile() ʱ£¬ÒѾ­Ö´ÐÐÁË /etc/ebuild.conf£¬²¢ÇÒ "$MAKEOPTS" Ò²±»ÉèÖóÉÕýÈ·µÄÖµ¡£

    ½áÊøÓï
    ±¾ÎÄÒѾ­½²ÊöÁ˺ܶà bash ±à³Ì¼¼Êõ£¬µ«ÊÇ£¬Ö»´¥¼°µ½ bash ÄÜÁ¦µÄһЩƤë¡£ÀýÈ磬Gentoo Linux ebuild ²úÆ·²»½ö×Ô¶¯½â°üºÍ±àÒëÿ¸ö°ü£¬»¹¿ÉÒÔ£º

    Èç¹ûÔÚ "$DISTDIR" ûÕÒµ½Ô´´úÂ룬Ôò×Ô¶¯ÏÂÔØ
    ͨ¹ýʹÓà MD5 ÏûÏ¢ÕªÒª£¬ÑéÖ¤Ô´´úÂëûÓÐÊܵ½ÆÆ»µ
    Èç¹ûÇëÇó£¬Ôò½«±àÒë¹ýµÄÓ¦ÓóÌÐò°²×°µ½ÕýÔÚʹÓõÄÎļþϵͳ£¬²¢¼Ç¼ËùÓа²×°µÄÎļþ£¬ÒÔ±ãÈÕºó¿ÉÒÔ·½±ãµØ½«°üÐ¶ÔØ¡£
    Èç¹ûÇëÇó£¬Ôò½«±àÒë¹ýµÄÓ¦ÓóÌÐò´ò°ü³É tar ѹËõ°ü£¨ÒÔÄúÏ£ÍûµÄÐÎʽѹËõ£©£¬ÒÔ±ãÒÔºó¿ÉÒÔÔÚÁíһ̨¼ÆËã»úÉÏ£¬»òÕßÔÚ»ùÓÚ CD µÄ°²×°¹ý³ÌÖУ¨Èç¹ûÔÚ¹¹½¨·¢Ðаæ CD£©°²×°¡£

    ÁíÍ⣬ebuild ϵͳ²úÆ·»¹Óм¸¸öÈ«¾ÖÅäÖÃÑ¡ÏÔÊÐíÓû§Ö¸¶¨Ñ¡ÏÀýÈçÔÚ±àÒë¹ý³ÌÖÐʹÓÃʲôÓÅ»¯±êÖ¾£¬ÔÚÄÇЩ֧³ÖËüµÄ°üÖÐÊÇ·ñÓ¦¸ÃȱʡÆôÓÿÉÑ¡µÄ°üÖ§³Ö£¨ÀýÈç GNOME ºÍ slang£©¡£

    ÏÔÈ»£¬bash ¿ÉÒÔʵÏֵŦÄÜÔ¶±È±¾ÏµÁÐÎÄÕÂÖÐËù´¥¼°µÄÒª¶à¡£¹ØÓÚÕâ¸ö²»¿É˼ÒéµÄ¹¤¾ß£¬Ï£ÍûÄúÒѾ­Ñ§µ½Á˺ܶ࣬²¢¹ÄÎèÄúʹÓà bash À´¼Ó¿ìºÍÔöÇ¿¿ª·¢ÏîÄ¿¡£

  2. soylo ÓÚ 2006-10-28 00:27:49·¢±í:

    ʹ´úÂëÄ£¿é»¯
    ¼ÈÈ»´úÂëºÜ¸ß¼¶²¢ÇÒʵÓã¬Äú¿ÉÄܺÜÏë´´½¨¼¸¸ö¸ü¸ß¼¶µÄ ebuild ½Å±¾£¬ÒÔ½â°üºÍ±àÒëËùϲ°®µÄ³ÌÐò¡£Èç¹ûÕâÑù×ö£¬³ÙÔç»áÓöµ½Ò»Ð©²»Ê¹Óà autoconf ("./configure") µÄÔ´´úÂ룬»òÕß¿ÉÄÜÓöµ½ÆäËüʹÓ÷DZê×¼±àÒë¹ý³ÌµÄ½Å±¾¡£ÐèÒªÔÙ¶Ô ebuild ϵͳ×öһЩ¸Ä¶¯£¬ÒÔÊÊÓ¦ÕâЩ³ÌÐò¡£µ«ÊÇÔÚ×ö֮ǰ£¬×îºÃÏÈÏëÒ»ÏÂÈçºÎÍê³É¡£

    ½« "./configure --prefix=/usr; make" Ó²±àÂëµ½±àÒë½×¶ÎµÄÃî´¦Ö®Ò»ÊÇ£º´ó¶àÊýʱºò£¬Ëü¿ÉÒÔÕýÈ·¹¤×÷¡£µ«ÊÇ£¬»¹±ØÐëʹ ebuild ϵͳÊÊÓ¦ÄÇЩ²»Ê¹Óà autoconf »òÕý³£ make ÎļþµÄÔ´´úÂë¡£Òª½â¾öÕâ¸öÎÊÌ⣬½¨Òé ebuild ½Å±¾È±Ê¡Ö´ÐÐÒÔϲÙ×÷£º

    Èç¹ûÔÚ "${SRCDIR}" ÖÐÓÐÒ»¸öÅäÖýű¾£¬Ôò°´ÈçÏÂÖ´ÐÐËü£º
    ./configure --prefix=/usr
    ·ñÔò£¬Ìø¹ýÕâ²½¡£


    Ö´ÐÐÒÔÏÂÃüÁ
    make
    ¼ÈÈ» ebuild Ö»ÔÚ configure ʵ¼Ê´æÔÚʱ²ÅÔËÐÐËü£¬ÏÖÔÚ¿ÉÒÔ×Ô¶¯µØÊÊÓ¦ÄÇЩ²»Ê¹Óà autoconf µ«Óбê×¼ make ÎļþµÄ³ÌÐò¡£µ«ÊÇ£¬ÔÚ¼òµ¥µÄ "make" ¶ÔijЩԴ´úÂëÎÞЧʱ¸ÃÔõô°ì£¿ÐèҪһЩ´¦ÀíÕâЩÇé¿öµÄÌØ¶¨´úÂëÀ´¸²¸ÇºÏÀíµÄȱʡֵ¡£Òª×öµ½ÕâÒ»µã£¬½«°Ñ ebuild_compile() º¯Êýת»»³ÉÁ½¸öº¯Êý¡£µÚÒ»¸öº¯Êý£¨¿É½«Æäµ±³É¡°¸¸¡±º¯Êý£©µÄÃû³ÆÈÔÊÇ ebuild_compile()¡£µ«ÊÇ£¬½«ÓÐÒ»¸öÃûΪ user_compile() µÄк¯Êý£¬¸Ãº¯ÊýÖ»°üº¬ºÏÀíµÄȱʡ²Ù×÷£º

    ²ð³ÉÁ½¸öº¯ÊýµÄ ebuild_compile()

    user_compile() { #we're already in ${SRCDIR} if [ -e configure ] then #run configure script if it exists ./configure --prefix=/usr fi #run make make} ebuild_compile() { if [ ! -d "${SRCDIR}" ] then echo "${SRCDIR} does not exist -- please unpack first." exit 1 fi #make sure we're in the right directory cd ${SRCDIR} user_compile}


    ÏÖÔÚÕâÑù×öµÄÔ­Òò¿ÉÄÜ»¹²»ÊǺÜÃ÷ÏÔ£¬µ«ÊÇ£¬ÔÙÈÌÄÍһϡ£ËäÈ»Õâ¶Î´úÂëÓë ebuild ǰһ°æµÄ¹¤×÷·½Ê½¼¸ºõÏàͬ£¬µ«ÊÇÏÖÔÚ¿ÉÒÔ×öһЩÒÔǰÎÞ·¨×öµÄ -- ¿ÉÒÔÔÚ sed-3.02.ebuild Öи²¸Ç user_compile()¡£Òò´Ë£¬Èç¹ûȱʡµÄ user_compile() ²»Âú×ãÒªÇ󣬿ÉÒÔÔÚ .ebuild ÎļþÖж¨ÒåÒ»¸öеģ¬Ê¹Æä°üº¬±àÒë°üËù±ØÐèµÄÃüÁî¡£ÀýÈ磬ÕâÀïÓÐÒ»¸ö e2fsprogs-1.18 µÄ ebuild Îļþ£¬ËüÐèÒªÒ»¸öÂÔÓв»Í¬µÄ "./configure" ÐУº

    e2fsprogs-1.18.ebuild

    #this ebuild file overrides the default user_compile()P=e2fsprogs-1.18A=${P}.tar.gz user_compile() { ./configure --enable-elf-shlibs make}


    ÏÖÔÚ£¬½«ÍêÈ«°´ÕÕÎÒÃÇÏ£ÍûµÄ·½Ê½±àÒë e2fsprogs¡£µ«ÊÇ£¬¶ÔÓÚ´ó¶àÊý°üÀ´Ëµ£¬¿ÉÒÔÊ¡ÂÔ .ebuild ÎļþÖеÄÈκζ¨ÖÆ user_compile() º¯Êý£¬¶øÊ¹ÓÃȱʡµÄ user_compile() º¯Êý¡£

    ebuild ½Å±¾ÓÖÔõÑùÖªµÀҪʹÓÃÄĸö user_compile() º¯ÊýÄØ£¿Êµ¼ÊÉÏ£¬ÕâºÜ¼òµ¥¡£ebuild ½Å±¾ÖУ¬ÔÚÖ´ÐÐ e2fsprogs-1.18.ebuild Îļþ֮ǰ¶¨Òåȱʡ user_compile() º¯Êý¡£Èç¹ûÔÚ e2fsprogs-1.18.ebuild ÖÐÓÐÒ»¸ö user_compile()£¬ÔòËü¸²¸ÇÇ°Ãæ¶¨ÒåµÄȱʡ°æ±¾¡£Èç¹ûûÓУ¬ÔòʹÓÃȱʡ user_compile() º¯Êý¡£

    ÕâÊǺù¤¾ß£¬ÎÒÃÇÒѾ­Ìí¼ÓÁ˺ܶàÁé»îÐÔ£¬¶øÎÞÐèÈκθ´ÔÓ´úÂ루Èç¹û²»ÐèÒªµÄ»°£©¡£ÔÚÕâÀï¾Í²»½²ÁË£¬µ«ÊÇ£¬»¹Ó¦¸Ã¶Ô ebuild_unpack() ×öÀàËÆÐ޸ģ¬ÒÔ±ãÓû§¿ÉÒÔ¸²¸Çȱʡ½â°ü¹ý³Ì¡£Èç¹ûÒª×öÈκÎÐÞ²¹£¬»òÕßÎļþ°üº¬ÔÚ¶à¸öµµ°¸ÖУ¬ÔòÕâ·Ç³£·½±ã¡£»¹ÓиöºÃÖ÷ÒâÊÇÐ޸Ľâ°ü´úÂ룬ÒÔ±ãËü¿ÉÒÔȱʡʶ±ðÓÉ bzip2 ѹËõµÄ tar ѹËõ°ü¡£

    ÅäÖÃÎļþ
    ĿǰΪֹ£¬ÒѾ­½²Á˺ܶ಻·½±ãµÄ bash ¼¼Êõ£¬ÏÖÔÚÔÙ½²Ò»¸ö¡£Í¨³££¬Èç¹û³ÌÐòÔÚ /etc ÖÐÓÐÒ»¸öÅäÖÃÎļþÊǺܷ½±ãµÄ¡£ÐÒÔ˵ÄÊÇ£¬Óà bash ×öµ½ÕâµãºÜÈÝÒס£Ö»Ðè´´½¨ÒÔÏÂÎļþ£¬È»ºó²¢Æä´æÎª /etc/ebuild.conf ¼´¿É£º

    /ect/ebuild.conf

    # /etc/ebuild.conf: set system-wide ebuild options in this file# MAKEOPTS are options passed to makeMAKEOPTS="-j2"


    ÔÚ¸ÃÀýÖУ¬Ö»°üÀ¨ÁËÒ»¸öÅäÖÃÑ¡Ïµ«ÊÇ£¬Äú¿ÉÒÔ°üÀ¨¸ü¶à¡£bash µÄÒ»¸öÃî´¦ÊÇ£ºÍ¨¹ýÖ´ÐиÃÎļþ£¬¾Í¿ÉÒÔ¶ÔËü½øÐÐÓï·¨·ÖÎö¡£ÔÚ´ó¶àÊý½âÊÍÐÍÓïÑÔÖУ¬¶¼¿ÉÒÔʹÓÃÕâ¸öÉè¼ÆÇÏÃÅ¡£Ö´ÐÐ /etc/ebuild.conf Ö®ºó£¬ÔÚ ebuild ½Å±¾Öж¨Òå "$MAKEOPTS"¡£½«ÀûÓÃËüÔÊÐíÓû§Ïò make ´«µÝÑ¡Ïͨ³££¬½«Ê¹ÓøÃÑ¡ÏîÀ´ÔÊÐíÓû§¸æËß ebuild Ö´Ðв¢ÐÐ make¡£

    ʲôÊDz¢ÐÐ make£¿
    ΪÁËÌá¸ß¶à´¦ÀíÆ÷ϵͳµÄ±àÒëËÙ¶È£¬make Ö§³Ö²¢ÐбàÒë³ÌÐò¡£ÕâÒâζ×Å£¬make ͬʱ±àÒëÓû§Ö¸¶¨ÊýÄ¿µÄÔ´Îļþ£¨ÒÔ±ãʹÓöദÀíÆ÷ϵͳÖеĶîÍâ´¦ÀíÆ÷£©£¬¶ø²»ÊÇÒ»´ÎÖ»±àÒëÒ»¸öÔ´Îļþ¡£Í¨¹ýÏò make ´«µÝ -j # Ñ¡ÏîÀ´ÆôÓò¢ÐÐ make£¬ÈçÏÂËùʾ£º

    make -j4 MAKE="make -j4"

    ÕâÐдúÂëָʾ make ͬʱ±àÒëËĸö³ÌÐò¡£MAKE="make -j4" ×Ô±äÁ¿¸æËß make£¬ÏòÆäÆô¶¯µÄÈκÎ×Ó make ½ø³Ì´«µÝ -j4 Ñ¡Ïî¡£


    ÕâÀïÊÇ ebuild ³ÌÐòµÄ×îÖÕ°æ±¾£º

  3. soylo ÓÚ 2006-10-28 00:27:27·¢±í:

    ebuild£¬ÐÞ¶¨±¾ 2

    #!/usr/bin/env bashif [ $# -ne 2 ]then echo "Please specify two args - .ebuild file and unpack, compile or all" exit 1fiif [ -z "$DISTDIR" ]then # set DISTDIR to /usr/src/distfiles if not already set DISTDIR=/usr/src/distfilesfiexport DISTDIRebuild_unpack() { #make sure we're in the right directory cd ${ORIGDIR} if [ -d ${WORKDIR} ] then rm -rf ${WORKDIR} fi mkdir ${WORKDIR} cd ${WORKDIR} if [ ! -e ${DISTDIR}/${A} ] then echo "${DISTDIR}/${A} does not exist. Please download first." exit 1 fi tar xzf ${DISTDIR}/${A} echo "Unpacked ${DISTDIR}/${A}." #source is now correctly unpacked}ebuild_compile() { #make sure we're in the right directory cd ${SRCDIR} if [ ! -d "${SRCDIR}" ] then echo "${SRCDIR} does not exist -- please unpack first." exit 1 fi ./configure --prefix=/usr make }export ORIGDIR=`pwd`export WORKDIR=${ORIGDIR}/workif [ -e "$1" ]then source $1else echo "Ebuild file $1 not found." exit 1fiexport SRCDIR=${WORKDIR}/${P}case "${2}" in unpack) ebuild_unpack ;; compile) ebuild_compile ;; all) ebuild_unpack ebuild_compile ;; *) echo "Please specify unpack, compile or all as the second arg" exit 1 ;;esac

    ÒѾ­×öÁ˺ܶà¸Ä¶¯£¬ÏÂÃæÀ´»Ø¹Ëһϡ£Ê×ÏÈ£¬½«±àÒëºÍ½â°ü²½Öè·ÅÈë¸÷×Եĺ¯ÊýÖУ¬Æäº¯ÊýÃû·Ö±ðΪ ebuild_compile() ºÍ ebuild_unpack()¡£ÕâÊǸöºÃµÄ²½Ö裬ÒòΪ´úÂëÕý±äµÃÔ½À´Ô½¸´ÔÓ£¬¶øÐº¯ÊýÌṩÁËÒ»¶¨µÄÄ£¿éÐÔ£¬Ê¹´úÂë¸üÓÐÌõÀí¡£ÔÚÿ¸öº¯ÊýµÄµÚÒ»ÐУ¬ÏÔʽ "cd" µ½ÏëÒªµÄĿ¼£¬ÒòΪ£¬Ëæ×Å´úÂë±äµÃÔ½À´Ô½Ä£¿é»¯¶ø²»ÊÇÏßÐλ¯£¬³öÏÖÊèºö¶øÔÚ´íÎóµÄµ±Ç°¹¤×÷Ŀ¼ÖÐÖ´Ðк¯ÊýµÄ¿ÉÄÜÐÔÒ²±ä´ó¡£"cd" ÃüÁîÏÔʽµØÊ¹ÎÒÃÇ´¦ÓÚÕýÈ·µÄλÖ㬲¢·ÀÖ¹ÒÔºó³öÏÖ´íÎó - ÕâÊÇÖØÒªµÄ²½Öè£¬ÌØ±ðÊÇÔÚº¯ÊýÖÐɾ³ýÎļþʱ¸üÊÇÈç´Ë¡£

    ÁíÍ⣬»¹ÔÚ ebuild_compile() º¯ÊýµÄ¿ªÊ¼´¦Ìí¼ÓÁËÒ»¸öÓÐÓõļì²é¡£ÏÖÔÚ£¬Ëü¼ì²éÒÔÈ·±£ "$SRCDIR" ´æÔÚ£¬Èç¹û²»´æÔÚ£¬Ôò´òÓ¡Ò»Ìõ¸æËßÓû§Ê×ÏȽâ°üµµ°¸È»ºóÍ˳öµÄ´íÎóÏûÏ¢¡£Èç¹ûÔ¸Ò⣬¿ÉÒԸıäÕâÖÖÐÐΪ£¬ÒÔ±ãÔÚ "$SRCDIR" ²»´æÔÚµÄÇé¿öÏ£¬ebuild ½Å±¾½«×Ô¶¯½â°üÔ´´úÂëµµ°¸¡£¿ÉÒÔÓÃÒÔÏ´úÂëÌæ»» ebuild_compile() À´×öµ½Õâµã£º

    ebuild_compile() ÉϵÄдúÂë

    ebuild_compile() { #make sure we're in the right directory if [ ! -d "${SRCDIR}" ] then ebuild_unpack fi cd ${SRCDIR} ./configure --prefix=/usr make }


    ebuild ½Å±¾µÚ¶þ°æÖÐ×îÃ÷ÏԵĸĶ¯Ö®Ò»¾ÍÊÇ´úÂëĩβÐ嵀 case Óï¾ä¡£ÕâÌõ case Óï¾äÖ»ÊǼì²éµÚ¶þ¸öÃüÁîÐÐ×Ô±äÁ¿£¬È»ºó¸ù¾ÝÆäÖµÖ´ÐÐÕýÈ·²Ù×÷¡£Èç¹ûÏÖÔÚÊäÈ룺

    $ ebuild sed-3.02.ebuild

    ¾Í»áµÃµ½Ò»Ìõ´íÎóÏûÏ¢¡£ÏÖÔÚÐèÒª¸æËß ebuild ×öʲô£¬ÈçÏÂËùʾ£º

    $ ebuild sed-3.02.ebuild unpack

    »ò

    $ ebuild sed-3.02.ebuild compile

    »ò

    $ ebuild sed-3.02.ebuild all

    Èç¹ûÌṩÉÏÃæËùÁÐÖ®ÍâµÄµÚ¶þ¸öÃüÁîÐÐ×Ô±äÁ¿£¬½«µÃµ½Ò»Ìõ´íÎóÏûÏ¢£¨* ×Ӿ䣩£¬È»ºó£¬³ÌÐòÍ˳ö¡£

  4. soylo ÓÚ 2006-10-28 00:27:00·¢±í:

    ʹ´úÂëͨÓÃ
    ËäÈ»¿ÉÒÔʹÓÃÕâ¸ö×Ô¶¯±àÒë½Å±¾£¬µ«Ëü²»ÊǺÜÁé»î¡£»ù±¾ÉÏ£¬bash ½Å±¾Ö»°üº¬ÔÚÃüÁîÐÐÊäÈëµÄËùÓÐÃüÁîÁÐ±í¡£ËäÈ»¿ÉÒÔʹÓÃÕâÖÖ½â¾ö·½°¸£¬µ«ÊÇ£¬×îºÃ×öÒ»¸öֻͨ¹ý¸ü¸Ä¼¸ÐоͿÉÒÔ¿ìËÙ½â°üºÍ±àÒëÈκΰüµÄÊÊÓýű¾¡£ÕâÑù£¬°üά»¤ÈËÔ±½«Ð°üÌí¼Óµ½·¢ÐаæËùÐèµÄ¹¤×÷¾Í´óΪ¼õÉÙ¡£ÈÃÎÒÃÇÏȳ¢ÊÔÒ»ÏÂʹÓÃÐí¶à²»Í¬µÄ»·¾³±äÁ¿À´Íê³É£¬Ê¹¹¹½¨½Å±¾¸ü¼ÓÊÊÓãº

    еġ¢¸üͨÓõĽű¾

    #!/usr/bin/env bash# P is the package nameP=sed-3.02# A is the archive nameA=${P}.tar.gzexport ORIGDIR=`pwd`export WORKDIR=${ORIGDIR}/workexport SRCDIR=${WORKDIR}/${P}if [ -z "$DISTDIR" ]then # set DISTDIR to /usr/src/distfiles if not already set DISTDIR=/usr/src/distfilesfiexport DISTDIRif [ -d ${WORKDIR} ]then # remove old work directory if it exists rm -rf ${WORKDIR}fimkdir ${WORKDIR}cd ${WORKDIR}tar xzf ${DISTDIR}/${A}cd ${SRCDIR}./configure --prefix=/usrmake


    ÒѾ­Ïò´úÂëÖÐÌí¼ÓÁ˺ܶ໷¾³±äÁ¿£¬µ«ÊÇ£¬Ëü»ù±¾ÉÏ»¹ÊÇÖ´ÐÐͬһ¹¦ÄÜ¡£µ«ÊÇ£¬Èç¹ûÏÖÔÚÒªÒª±àÒëÈκαê×¼µÄ GNU »ùÓÚ autoconf µÄÔ´´úÂë tar ѹËõ°ü£¬Ö»Ðè¼òµ¥µØ½«¸ÃÎļþ¸´ÖƵ½Ò»¸öÐÂÎļþ£¨ÓúÏÊʵÄÃû³ÆÀ´·´Ó³ËüËù±àÒëµÄаüÃû£©£¬È»ºó½« "$A" ºÍ "$P" µÄÖµ¸ü¸Ä³ÉÐÂÖµ¼´¿É¡£ËùÓÐÆäËü»·¾³±äÁ¿¶¼×Ô¶¯µ÷Õû³ÉÕýÈ·ÉèÖ㬲¢Çҽű¾°´Ô¤Ï빤×÷¡£ËäÈ»ÕâºÜ·½±ã£¬µ«ÊÇ´úÂ뻹ÓиĽøÓàµØ¡£Õâ¶Î´úÂë±ÈÎÒÃÇ¿ªÊ¼´´½¨µÄ "transcript" ½Å±¾Òª³¤ºÜ¶à¡£¼ÈÈ»Èκαà³ÌÏîÄ¿µÄÄ¿±êÖ®Ò»ÊǼõÉÙÓû§¸´ÔÓ¶È£¬ËùÒÔ×îºÃ´ó·ù¶ÈËõ¶Ì´úÂ룬»òÕßÖÁÉÙ¸üºÃµØ×éÖ¯´úÂë¡£¿ÉÒÔÓÃÒ»¸öÇÉÃîµÄ·½·¨À´×öµ½Õâµã -- ½«´úÂë²ð³ÉÁ½¸öµ¥¶ÀÎļþ¡£½«¸ÃÎļþ´æÎª "sed-3.02.ebuild"£º

    sed-3.02.ebuild

    #the sed ebuild file -- very simple!P=sed-3.02A=${P}.tar.gz


    µÚÒ»¸öÎļþ²»ÖØÒª£¬Ö»°üº¬ÄÇЩ±ØÐëÔÚÿ¸ö°üÖÐÅäÖõĻ·¾³±äÁ¿¡£ÏÂÃæÊǵڶþ¸öÎļþ£¬Ëü°üº¬²Ù×÷µÄÖ÷Òª²¿·Ö¡£½«Ëü´æÎª "ebuild"£¬²¢Ê¹Ëü³ÉΪ¿ÉÖ´ÐÐÎļþ£º

    ebuild ½Å±¾

    #!/usr/bin/env bashif [ $# -ne 1 ]then echo "one argument expected." exit 1fiif [ -e "$1" ]then source $1else echo "ebuild file $1 not found." exit 1fiexport ORIGDIR=`pwd`export WORKDIR=${ORIGDIR}/workexport SRCDIR=${WORKDIR}/${P}if [ -z "$DISTDIR" ]then # set DISTDIR to /usr/src/distfiles if not already set DISTDIR=/usr/src/distfilesfiexport DISTDIRif [ -d ${WORKDIR} ]then # remove old work directory if it exists rm -rf ${WORKDIR}fimkdir ${WORKDIR}cd ${WORKDIR}tar xzf ${DISTDIR}/${A}cd ${SRCDIR}./configure --prefix=/usrmake


    ¼ÈÈ»ÒѾ­½«¹¹½¨ÏµÍ³²ð³ÉÁ½¸öÎļþ£¬ÎÒ¸Ò´ò¶Ä£¬ÄúÒ»¶¨ÔÚÏëËüµÄ¹¤×÷Ô­Àí¡£»ù±¾ÉÏ£¬Òª±àÒë sed£¬ÊäÈ룺

    $ ./ebuild sed-3.02.ebuild

    µ±Ö´ÐÐ "ebuild" ʱ£¬ËüÊ×ÏÈÊÔͼ "source" ±äÁ¿ "$1"¡£ÕâÊÇʲôÒâ˼£¿»¹¼ÇµÃ ǰһƪÎÄÕÂËù½²µÄÂð£º"$1" ÊǵÚÒ»¸öÃüÁîÐÐ×Ô±äÁ¿ -- ÔÚÕâÀÊÇ "sed-3.02.ebuild"¡£ÔÚ bash ÖУ¬"source" ÃüÁî´ÓÎļþÖжÁÈë bash Óï¾ä£¬È»ºóÖ´ÐÐËüÃÇ£¬¾ÍºÃÏóËüÃÇÖ±½Ó³öÏÖÔÚ "source" ÃüÁîËùÔÚµÄÎļþÖÐÒ»Ñù¡£Òò´Ë£¬"source ${1}" µ¼Ö "ebuild" ½Å±¾Ö´ÐÐÔÚ "sed-3.02.ebuild" Öж¨Òå "$P" ºÍ "$A" µÄÃüÁî¡£ÕâÖÖÉè¼Æ¸ü¸Äȷʵ·½±ã£¬ÒòΪÈç¹ûÒª±àÒëÁíÒ»¸ö³ÌÐò£¬¶ø²»ÊÇ sed£¬¿ÉÒÔ¼òµ¥µØ´´½¨Ò»¸öÐ嵀 .ebuild Îļþ£¬È»ºó½«Æä×÷Ϊ×Ô±äÁ¿´«µÝ¸ø "ebuild" ½Å±¾¡£Í¨¹ýÕâÖÖ·½Ê½£¬.ebuild Îļþ×îÖշdz£¼òµ¥£¬¶ø½« ebuild ϵͳ¸´ÔӵIJÙ×÷²¿·Ö´æÔÚÒ»´¦£¬¼´ "ebuild" ½Å±¾ÖС£Í¨¹ýÕâÖÖ·½Ê½£¬Ö»Ðè±à¼­ "ebuild" ½Å±¾¾Í¿ÉÒÔÉý¼¶»òÔöÇ¿ ebuild ϵͳ£¬Í¬Ê±½«ÊµÏÖϸ½Ú±£ÁôÔÚ ebuild ÎļþÖ®Íâ¡£ÕâÀïÓÐÒ»¸ö gzip µÄÑù±¾ ebuild Îļþ£º

    gzip-1.2.4a.ebuild

    #another really simple ebuild script!P=gzip-1.2.4aA=${P}.tar.gz


    Ìí¼Ó¹¦ÄÜÐÔ
    ºÃ£¬ÎÒÃÇÕýÔÚÈ¡µÃ½øÕ¹¡£µ«ÊÇ£¬ÎÒ»¹ÏëÌí¼ÓijЩ¶îÍ⹦ÄÜÐÔ¡£ÎÒÏ£Íû ebuild ½Å±¾ÔÙ½ÓÊÜÒ»¸öÃüÁîÐÐ×Ô±äÁ¿£º"compile"¡¢"unpack" »ò "all"¡£Õâ¸öÃüÁîÐÐ×Ô±äÁ¿¸æËß ebuild ½Å±¾ÒªÖ´Ðй¹½¨¹ý³ÌµÄÄÄÒ»²½¡£Í¨¹ýÕâÖÖ·½Ê½£¬¿ÉÒÔ¸æËß ebuild ½â°üµµ°¸£¬µ«²»½øÐбàÒ루ÒÔ±ãÔÚ¿ªÊ¼±àÒë֮ǰ²é¿´Ô´´úÂëµµ°¸£©¡£Òª×öµ½Õâµã£¬½«Ìí¼ÓÒ»Ìõ case Óï¾ä£¬¸ÃÓï¾ä½«²âÊÔ "$2"£¬È»ºó¸ù¾ÝÆäÖµÖ´Ðв»Í¬²Ù×÷¡£´úÂëÈçÏ£º