BBSˮľÇ廪վ¡Ã¾«»ªÇø

 
                            RPM HOWTO (RPM at Idle) 
 
                      ×÷Õß: Donnie Barnes, djb@redhat.com 
 
                               ÒëÕß: marr@cc.nccu.edu.tw 
 
                              v2.0, 8 April 1997 
 
 
                                 CONTENTS 
 
1. Introduction ............................................................. 1 
 
2. Overview ................................................................. 1 
 
3. General Information ...................................................... 2 
   3.1  Acquiring RPM ....................................................... 2 
   3.2  RPM Requirements .................................................... 2 
 
4. Using RPM ................................................................ 2 
 
5. Now what can I really do with RPM? ....................................... 4 
 
6. Building RPMs ............................................................ 5 
   6.1  The rpmrc File ...................................................... 5 
   6.2  The Spec File ....................................................... 6 
   6.3  The Header .......................................................... 7 
   6.4  Prep ............................................................... 10 
   6.5  Build .............................................................. 11 
   6.6  Install ............................................................ 11 
   6.7  Optional pre and post Install/Uninstall Scripts .................... 11 
   6.8  Files .............................................................. 11 
   6.9  Building It ........................................................ 12 
   6.10 Testing It ......................................................... 14 
   6.11 What to do with your new RPMs ...................................... 14 
   6.12 What Now? .......................................................... 14 
 
7. Multi-architectural RPM Building ........................................ 14 
   7.1  Sample spec File ................................................... 14 
   7.2  Optflags ........................................................... 15 
   7.3  Macros ............................................................. 15 
   7.4  Excluding Architectures from Packages .............................. 16 
   7.5  Finishing Up ....................................................... 16 
 
8. Copyright Notice ........................................................ 16 
 
 
 
 
 
                                       i 
 
 
 
 
1.  Introduction 
 
RPM Ö¸µÄÊÇ Red Hat Package Manager Ö®Ëõд£¬ ËäÈ»Ãû³ÆÉϰüº¬Öø Red Hat µÄ×ֺţ¬ 
µ«ÆäԭʼÉè¼ÆÀíÄîÊDzɿªÊÕʽµÄ£¬ ÓÃÒâÔÚì¶ÈÃÕâ¸ö³ÌʽÄÜÌṩ¸øËùÓÐÈËʹÓᣠ͸¹ý rpm 
µÄ¹ÜÀí£¬ Ê¹ÓÃÕß¿ÉÒÔ½«Ä³¸öÐÂÈíÌåµÄ source code£¬ ÖØÐÂÕûÀí°ü×°³ÉÁíÒ»ÖÖ source Óë 
binary µÄµµ°¸ÐÍʽ£¬ Èç´ËÒ»À´£¬ ÎÒÃÇ¿ÉÒÔÇáËɵØÓÉ binary ÐÍʽµÄµµ°¸£¬ 
½øÐа²×°ÓëÌ×¼þ×·×Ù¹ÜÀíµÄ¹¤×÷£¬ ¶ø source ÐÍʽµÄµµ°¸£¬ 
Ò²ºÜ·½±ãµØÄܹ»ÔÙ±»ÖØÐÂÕûÀí°ü×°¡£ Í¬Ê±£¬ rpm ¹ÜÀíÖøÒ»·Ý×ÊÁϿ⣬ 
ÀïÍ·°üº¬ÁËËùÓеijÌʽÌ×¼þµÄµµ°¸×ÊÁÏ£¬ Í¸¹ýÕâ·Ý×ÊÁϿ⣬ 
ÎÒÃÇ¿ÉÒÔ½øÐгÌʽÌ×¼þ֮ȷÈÏÓë²éѯ¹¤×÷¡£ 
 
Red Hat ¹«Ë¾¹ÄÀøÆäËûЭÁ¦³§ÉÌ£¬ Ò»Í¬·¢Õ¹¼°Ê¹ÓàRPM ì¶ËüÃǵĠdistribution µ±ÖС£ 
RPM Ï൱¾ßÓе¯ÐÔ£¬ Æä²Ù×÷·Ç³£¼òµ¥£¬ ÌṩϵͳÀ©³ä·¢Õ¹µÄ»ù´¡£¬ ÁíÒ»·½Ã棬 
ËüµÄ·¢Õ¹ÍêÈ«¹«¿ª£¬ ¶øÇÒ¿ÉÃâ·ÑÈ¡µÃ£¬ 
ʹÓÃÕß¿ÉÒԻظ²ÈκγÌʽÂëÉϵĴíÎóÓëÐÞÕýÄÚÈÝ¡£ Ö»ÒªÔÚ·ûºÏ GPL µÄÐû¸æÌõ¼þÏ£¬ 
´ó¼Ò¿ÉÒÔ×ÔÓɵØÊ¹Óü°´«²¥ RPM ³Ìʽ¡£ 
 
Èç¹ûÄúÏë»ñµÃÓйؠRPM ¸üÏêϸµÄÎļþ˵Ã÷£¬ ¿ÉÒԲο¼ Ed Bailey Ëù׫֮ Maximum RPM 
Ò»Êé¡£ Õâ±¾Êé¿ÉÓÉ www.redhat.com1  ÏÂÔØ»ò¹ºÂòµ½¡£ 
 
 
2.  Overview 
 
Ê×ÏÈ£¬ ÈÃÎÒÃÇÏÈÀ´Á˽â RPM ±³ááµÄÉè¼ÆÕÜѧ£¬ ÆäÉè¼ÆµÄÄ¿µÄÖ®Ò»£¬ 
±ãÊÇÔÊÐíʹÓÃÕßÄܹ»Ê¹ÓḴ¿¾»¡¹µÄ source µµ°¸¡£ ¹Øì¶´Ëµã£¬ ÎÒÃDZØÐë»ØËÝÖÁ RPP 
³Ìʽ£¬ ( ÕâÊÇÒ»¸öÔçÆÚËùʹÓõijÌʽÌ×¼þ¹ÜÀíϵͳ£¬ ²»¹ý£¬ ááÀ´ RPM µ¹Ã»ÓÐÓÉÆäÑÜÉú 
)£¬ ËüËù²ÉÓõĠsource µµ°¸£¬ ¶¼ÊǾ­¹ý¶îÍâµÄ¡¸ÆÆ½â´¦Àí¡¹¡£ ÀíÂÛÉÏ£¬ 
ʹÓÃÕß¿ÉÒÔ˳³©ÎÞÎ󵨣¬ ´ÓÒ»·Ý RPP Ô­Ê¼µµ£¬ Íê³É install Óë make µÄ¶¯×÷¡£ 
µ«ÊÇÕâÑù´¦Àí¹ýµÄ source µµ°¸£¬ ÒÑÊÇÃæÃ²È«·Ç£¬ Ê¹ÓÃÕß¿ÉÄÜÎÞ´ÓµÃÖª£¬ 
µµ°¸Àïµ½µ×ÄÄЩµØ·½±»¸ü¸Ä¹ý£¬ Í¨³£±ØÐë¶îÍâÈ¡»ØÎ´¾­´¦Àí¹ýµÄ source µµ°¸¡£ ¶ø RPM 
µÄ×ö·¨£¬ ±ãÊÇÈÃʹÓÃÕßÈ¡µÃ¡¸Î´¾­´¦Àí¹ýµÄ source µµ°¸¡¹£¬ Í¬Ê±ÔÙ¸½ÉÏÒ»·Ý¡¸patch 
µµ°¸¡¹£¬ ¿É½åÖ®Íê³É³Ìʽ±àÒëµÄ¹¤×÷¡£ ÎÒÃǺÜÈÝÒ×·¢ÏÖ£¬ ÕâÑùµÄ×ö·¨´øÀ´²»Éٺô¦¡£ 
Ôõ÷áËµÄØ£¿ ¾Ù¸ö×´¿öΪÀý£¬ ÔÚ Red Hat Linux Ï£¬ Èç¹ûij¸öаæµÄ³ÌʽÎÊÊÀÁË£¬ 
Äú¿ÉÄÜûÓбØÒªÔÙÖØÍ·¿ªÊ¼×ö compile ¶¯×÷£¬ Ïȹ۲졸patch µµ°¸¡¹µÄÄÚÈÝ£¬ 
¿´¿´ÊÇ·ñÓÐÄÄЩ²¿·Ý²ÅÊÇÄúÐèÒª×öµÄ¡£ Èç´ËÒ»À´£¬ 
ËùÓÐÄÚº¬µÄ³ÌʽԤÉèÖµ±ãºÜÈÝÒ׿´³öÀ´¡£ 
 
ÁíÒ»·½Ã棬 RPM Ò²¾ßÓÐÇ¿´óµÄ²éѯ¹¦ÄÜ£¬ Äú¿ÉÒÔÕë¶ÔÕû¸ö³ÌʽÌ×¼þµÄ×ÊÁϿ⣬ 
»òÊÇÄ³Ð©ÌØ¶¨µÄµµ°¸£¬ ½øÐвéѯµÄ¶¯×÷£¬ Ò²¿ÉÒÔÇáËɵزé³ö£¬ 
 
____________________ 
 
1. <URL:http://www.redhat.com> 
 
RPM HOWTO (RPM at Idle)                                                       1 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       2 
 
 
 
ij¸öµµ°¸ÊÇÊôì¶Äĸö³ÌʽÌ×¼þ£¬ »òÊÇËü´ò´ÓÄÄÀïÀ´µÄ¡£ RPM µµ°¸±¾ÉíÊǾ­¹ýѹËõµÄ£¬ 
µ«Äú»¹ÊÇ¿ÉÒÔºÜÈÝÒ×¶ø¿ìËٵأ¬ ²éѯÿ¸ö³ÌʽÌ×¼þµÄÄÚÈÝ£¬ ÒòΪÔÚ³ÌʽÌ×¼þÀ 
ÒѾ­¼ÓÈëÒ»¶ÎÌØÊâµÄ binary header£¬ Ëü¼Ç¼ÁËÈ«²¿²éѯʱËùÐèµÄÄÚÈÝ£¬ ÕâÑùµÄ×ö·¨£¬ 
ʹµÃ²éѯ¹¦ÄܱäµÃÏ൱¿ìËÙ¡£ 
 
ÁíÒ»ÏîÇ¿´óµÄ¹¦ÄÜ£¬ ±ãÊdzÌʽÌ×¼þµÄÍêÕûÈ·ÈÏ¡£ Èç¹ûÄúµ£ÐÄÎó¿³Ä³¸öµµ°¸£¬ 
¶øËüÕýÊÇij¸ö³ÌʽÌ×¼þµÄÖØÒª²¿·Ý£¬ ÄÇ÷á×ö¸ö¡¸È·È϶¯×÷¡¹¾ÍÐÐÁË¡£ 
ÈçÓÐÈκβ»Õý³£µÄµØ·½£¬ ±ã»á֪ͨÄú£¬ Õâʱºò£¬ Äú¿ÉÒÔÊÓÇé¿öÖØÐ°²×°¸Ã³ÌʽÌ×¼þ£¬ 
¶øÇÒËùÓÐ֮ǰµÄÉ趨µµ£¬ ¶¼»áÍêºÃµØ±»±£´æÏÂÀ´¡£ 
 
ÎÒÃǷdz£¸ÐлÀ´×Ô BOGUS distribution µÄ¸ßÊÖÃÇ£¬ ËûÃÇÌṩÁËÐí¶àÒâ¼û¹¹Ï룬 
ááÀ´Ò²¶¼±»²ÉÓÃì¶ RPM µ±ÖС£ ËäÈ» RPM ÍêÈ«ÊÇÓÉ Red Hat Software Ëù׫д£¬ 
µ«Æä²Ù×÷ģʽÊǸù¾Ý BOGUS (PM Óë PMS) ËùдµÄ³ÌʽÂë¡£ 
 
 
3.  General Information 
 
3.1  Acquiring RPM 
 
×îºÃÇÒ×î¼òµ¥µÄ·½·¨£¬ µ±È»¾ÍÊǰ²×° Red Hat Linux ÂÞ£¬ Èç¹ûÄúµÖËÀ²»´Ó£¬ 
ÄÇ÷áÒÀÈ»¿ÉÒÔ´Ó FTP Õ¾£¬ ×¥È¡Ô­Ê¼³Ìʽ»ØÀ´°²×°¡£ ³Ìʽµµ°¸µÄλÖÃÊÇ ftp.redhat.com2 
¡£ 
 
3.2  RPM Requirements 
 
˳ÀûÖ´ÐРRPM µÄ×î´óÌõ¼þ£¬ ¾ÍÊÇ¡¸ÒªÓР2.4.2 °æÒÔÉϵĠcpio ³Ìʽ¡¹¡£ RPM 
Ö÷ÒªÊÇÉè¼Æ¸ø Linux Ê¹Óõ쬠µ«¶Ôì¶ÆäËû Unix ÏµÍ³µÄÏàÈÝÐÔÒ²Ï൱²»´í£¬ ÊÂʵÉÏ£¬ 
ËüÒѾ­Ë³ÀûÔÚ SunOS¡¢ Solaris¡¢ AIX¡¢ Irix¡¢ AmigaOS ¼°ÆäËûϵͳÉÏÍê³É compile 
¶¯×÷¡£ ÖµµÃ×¢ÒâµÄÊÇ£¬ Óɲ»Í¬ Unix ×÷ҵƽ̨Ëù±àÒë³öÀ´µÄ binary ³ÌʽÌ×¼þ£¬ 
ÊDz»Äܱ˴ËÏàÈݵġ£ 
 
ÉÏÊöÖ»Êǰ²×° RPM µÄ×îµÍÐèÇ󣬠Èç¹ûÏëÒªÓÉ source µµ°¸½¨ÔìÆð£¬ ÄÇ÷áÄú»¹ÐèÒª gcc£¬ 
make Ö®ÀàµÄ±àÒ빤¾ß³Ìʽ£¬ ÕâºÍ½¨ÔìÒ»°ã³ÌʽÌ×¼þ²¢ÎÞ¶þÖ¡£ 
 
 
4.  Using RPM 
 
RPM ¿ÉÒÔÓÃì¶°²×°³ÌʽÌ×¼þÉÏ£¬ ×î¼òµ¥µÄ²Ù×÷¸ñʽÈçÏ£º 
 
     rpm -i foobar-1.0-1.i386.rpm 
 
 
ÁíÒ»¸ö¼òµ¥µÄ²Ù×÷¡õÀý£¬ ÊÇÓÃì¶½â³ýijһ¸ö³ÌʽÌ×¼þµÄ°²×°£º 
 
     rpm -e foobar 
 
½ÓÏÂÀ´µÄÖ¸Áî¡õÀý½ÏΪ¸´ÔÓ£¬ µ«Ëü·Ç³£ÓÐÓ㬠¿ÉÒÔÈÃÄú͸¹ý FTP À´°²×°³ÌʽÌ×¼þ¡£ 
Èç¹ûÄúÄܹ»Á¬ÉÏÍøÂ·£¬ Ï밲װij¸öеijÌʽÌ×¼þʱ£¬ ËùÐèÏ´ïµÄÖ¸Á 
±ãÊÇÔÚµµ°¸Ç°¼ÓÉÏÊʵ±µÄ URL ¸ñʽ£¬ ÀýÈ磺 
 
     rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm 
 
____________________ 
 
2. <URL:ftp://ftp.redhat.com/pub/redhat/code/rpm> 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       3 
 
 
 
ÇëÌØ±ð×¢Ò⣬ RPM Ä¿Ç°ÒÑÔÊÐí͸¹ý FTP À´½øÐвéѯ»ò°²×°¡£ 
 
ÉÏÊö¶¼ÊÇЩ¼òµ¥µÄÖ¸Á rpm »¹ÓÐÐí¶à²»Í¬µÄÑ¡Ïʽ£¬ ÕâЩ¿ÉÓÉ Usage 
µÄ˵Ã÷Öп´³ö£º 
 
     RPM version 2.3.9 
     Copyright (C) 1997 - Red Hat Software 
     This may be freely redistributed under the terms of the GNU Public License 
 
     usage: rpm {--help} 
            rpm {--version} 
            rpm {--initdb}   [--dbpath <dir>] 
            rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test] 
                             [--replacepkgs] [--replacefiles] [--root <dir>] 
                             [--excludedocs] [--includedocs] [--noscripts] 
                             [--rcfile <file>] [--ignorearch] [--dbpath <dir>] 
                             [--prefix <dir>] [--ignoreos] [--nodeps] 
                             [--ftpproxy <host>] [--ftpport <port>] 
                             file1.rpm ... fileN.rpm 
            rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test] 
                             [--oldpackage] [--root <dir>] [--noscripts] 
                             [--excludedocs] [--includedocs] [--rcfile <file>] 
                             [--ignorearch]  [--dbpath <dir>] [--prefix <dir>] 
                             [--ftpproxy <host>] [--ftpport <port>] 
                             [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm 
            rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R] 
                             [--scripts] [--root <dir>] [--rcfile <file>] 
                             [--whatprovides] [--whatrequires] [--requires] 
                             [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>] 
                             [--provides] [--dump] [--dbpath <dir>] [targets] 
            rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>] 
                             [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts] 
                             [--nomd5] [targets] 
            rpm {--setperms} [-afpg] [target] 
            rpm {--setugids} [-afpg] [target] 
            rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>] 
                             [--dbpath <dir>] [--nodeps] [--allmatches] 
                             package1 ... packageN 
            rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile  <file>] 
                             [--sign] [--test] [--timecheck <s>] specfile 
            rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm 
            rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm 
            rpm {--resign} [--rcfile <file>] package1 package2 ... packageN 
            rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN 
            rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>] 
                                package1 ... packageN 
            rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>] 
            rpm {--querytags} 
 
Äú¿ÉÒÔÔÚ RPM µÄ man page À ÕÒµ½ÕâЩѡÏîµÄÏêϸ˵Ã÷¡£ 
 
 
 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       4 
 
 
 
5.  Now what can I really do with RPM? 
 
RPM ÊǸö·Ç³£ÓÐÓõŤ¾ß£¬ ¶øÇÒÈçÄúËùÖªµÄ£¬ Ëü¾ßÓÐÐí¶àÑ¡ÏÄÜ¡£ 
ÈÃÄúÁ˽âÕâЩ¹¦ÄܵÄ×îºÃ·½Ê½£¬ ±ãÊÇʵ¼Ê½éÉܼ¸¸ö¡õÀý£¬ 
Ç°ÃæÎÒÃÇÒѾ­Ìá¹ý°²×°Óë½â³ý°²×°µÄ¼òµ¥Àý×Ó£¬ µ×ÏÂÊÇһЩ¶îÍâµÄ¡õÀý£º 
 
   · ¼ÙÉè˵£¬ Äú²»Ð¡ÐÄÎóɾÁ˼¸¸öµµ°¸£¬ µ«²»È·¶¨µ½µ×ÊÇÄÄЩµµ°¸£¬ 
     ÄúÏë¶ÔÕû¸öϵͳ½øÐÐÈ·È϶¯×÷£¬ ÒÔÁ˽âÄÄЩ²¿·Ý¿ÉÄÜÒѾ­ÒÅË𣬠Äú¿ÉÒÔÕâÑù×ö£º 
 
          rpm -Va 
 
   · ¼ÙÉè˵£¬ ÄúÅöµ½Ò»¸öÈϲ»³öÀ´µÄµµ°¸£¬ ÏëÒªÖªµÀËüÊÇÊôì¶ÄÄÒ»¸ö³ÌʽÌ×¼þµÄ»°£¬ 
     Äú¿ÉÒÔÕâÑù×ö£º 
 
          rpm -qf /usr/X11R6/bin/xjewel 
 
 
     Æä½á¹û»áµÃµ½£º 
 
          xjewel-1.6-1 
 
   · Èç¹ûÄúÕÒµ½Ò»¸öеĠRPM µµ°¸£¬ È´²»Çå³þËüµÄÄÚÈÝ£¬ ÏëÒª»ñµÃÏà¹ØµÄ×ÊѶ£¬ 
     ¿ÉÒÔÕâÑù×ö£º 
 
          rpm -qpi koules-1.2-2.i386.rpm 
 
 
     Æä½á¹û»áµÃµ½£º 
 
          Name        : koules                      Distribution: Red Hat Linux Colgate 
          Version     : 1.2                               Vendor: Red Hat Software 
          Release     : 2                             Build Date: Mon Sep 02 11:59:12 1996 
          Install date: (none)                        Build Host: porky.redhat.com 
          Group       : Games                         Source RPM: koules-1.2-2.src.rpm 
          Size        : 614939 
          Summary     : SVGAlib action game with multiplayer, network, and sound support 
          Description : 
          This arcade-style game is novel in conception and excellent in execution. 
          No shooting, no blood, no guts, no gore.  The play is simple, but you 
          still must develop skill to play.  This version uses SVGAlib to 
          run on a graphics console. 
 
   · Èç¹ûÄúÏëÁ˽âij¸ö RPM µµ°¸£¬ »áÔÚϵͳÀï°²×°ÄÄЩµµ°¸£¬ Äú¿ÉÒÔÕâÑù×ö£º 
 
          rpm -qpl koules-1.2-2.i386.rpm 
 
 
     Æä½á¹û»áÊÇ£º 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       5 
 
 
 
          /usr/doc/koules 
          /usr/doc/koules/ANNOUNCE 
          /usr/doc/koules/BUGS 
          /usr/doc/koules/COMPILE.OS2 
          /usr/doc/koules/COPYING 
          /usr/doc/koules/Card 
          /usr/doc/koules/ChangeLog 
          /usr/doc/koules/INSTALLATION 
          /usr/doc/koules/Icon.xpm 
          /usr/doc/koules/Icon2.xpm 
          /usr/doc/koules/Koules.FAQ 
          /usr/doc/koules/Koules.xpm 
          /usr/doc/koules/README 
          /usr/doc/koules/TODO 
          /usr/games/koules 
          /usr/games/koules.svga 
          /usr/games/koules.tcl 
          /usr/man/man6/koules.svga.6 
 
ÉÏÊöÖ»ÊÇһЩ¡õÀý£¬ µ±Äú¶Ô RPM Óú¼ÓÊìϤʱ£¬ Ó¦¸ÃÄÜÏë³öÆäËû¸ü¶àµÄ´´Òâ×éºÏ¡£ 
 
 
6.  Building RPMs 
 
Èç¹ûÄú¿ÉÒÔ×Ô¸ö¶ùÈ¡µÃËùÐèµÄÈíÌ壬ÄÇ÷ὨÔì RPM µµ°¸Ò²ÊǷdz£¼òµ¥µÄ¡£ 
 
½¨Ôì RPM µµ°¸µÄ»ù±¾²½ÖèÈçÏ£º 
 
   · È·¶¨ÄúµÄ /etc/rpmrc ÒѾ­·ûºÏϵͳËùÐ裬 Íê³ÉÉ趨¡£ 
 
   · È¡»ØËùÒª½¨ÔìµÄ source code¡£ 
 
   · ½øÐÐËùÐèµÄ source µµ°¸ patch ¶¯×÷£¬ ÒÔʹµÃÎÒÃÇÄÜ˳ÀûµØ build Õû¸ö³Ìʽ¡£ 
 
   · Îª³ÌʽÌ×¼þ׫дһ·Ý spec µµ°¸¡£ 
 
   · È·ÈÏÿ¸öµµ°¸¶¼ÔÚÕýÈ·µÄĿ¼λÖᣠ
 
   · Ê¹ÓàRPM À´ build Õû¸ö³ÌʽÌ×¼þ¡£ 
 
Èç¹ûÒ»ÇвÙ×÷ÕýÈ·£¬ RPM ±ãÄÜ˳Àû build Íê³É binary Óë source ³ÌʽÌ×¼þ¡£ 
 
6.1  The rpmrc File 
 
ĿǰΪֹ£¬ RPM ÏµÍ³Î¨Ò»µÄÉ趨µµ£¬ ÊÇ͸¹ý /etc/rpmrc µµ°¸À´¹ÜÀí¡£ 
ÆäÄÚÈÝ¡õÀýÈçÏ£º 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       6 
 
 
 
     require_vendor: 1 
     distribution: I roll my own! 
     require_distribution: 1 
     topdir: /usr/src/me 
     vendor: Mickiesoft 
     packager:  Mickeysoft Packaging Account <packages@mickiesoft.com> 
 
     optflags: i386 -O2 -m486 -fno-strength-reduce 
     optflags: alpha -O2 
     optflags: sparc -O2 
 
     signature: pgp 
     pgp_name: Mickeysoft Packaging Account 
     pgp_path: /home/packages/.pgp 
 
     tmppath: /usr/tmp 
 
µµ°¸ÖеĠrequire_vendor ÕâÒ»ÐÐÐðÊö£¬ ÓÃÒÔ¿ØÖÆ RPM ÊÇ·ñÐëÒªÕÒѰ vendor 
ÄÇÒ»ÐÐÐðÊö£¬ ¶ø verdor µÄ×ÊѶ¿ÉÄÜÀ´×Ô /etc/rpmrc »òÊÇ spec µµ°¸µÄ header ´¦¡£ 
Èç¹ûÄú°ÑÉÏÊöµÄºÅÂë¸ÄΪ 0£¬ ±ãÄܰÑÕâÏîѰÕÒ¹¦Äܹرա£ ÕâÑùµÄÉ趨·½Ê½£¬ Í¬ÑùÊÊÓÃì¶ 
require_distribution Óë require_group µÄÐðÊöÉÏ¡£ 
 
½ÓÏÂÀ´£¬ ÎÒÃÇ¿´µ½ distribution ÕâÒ»ÐУ¬ Äú¿ÉÒÔÔÚ´ËÉ趨£¬ »òÊÇÈÕááÔÚ spec µµ°¸µÄ 
header ´¦É趨¡£ µ±ÎÒÃÇÔÚij¸ö distribution ÉÏ build ³ÌʽÌ×¼þʱ£¬ 
¾ÍËã²»ÐèÒª²éѯÉ趨£¬ ´ËÐÐÄÚÈݵÄÉ趨ÕýÈ·£¬ Ò²ÊÇÄܹ»´øÀ´Ðí¶à±ãÀû¡£ vendor 
ÄÇÒ»ÐеÄ×÷Ó㬠ºÍÉÏÊöµÄ distribution ·Ç³£ÏàËÆ£¬ µ«ÆäÄÚÈݲ¢²»ÏÞ¶¨ ( ÀýÈçÊÇ Joe's 
Software »ò Rock Music Emporium )¡£ 
 
RPM Ä¿Ç°Ö§Ô®¡¸¶àƽ̨¼Ü¹¹¡¹µÄ³ÌʽÌ×¼þ build ¹¦ÄÜ£¬ ÎÒÃÇ¿ÉÒÔÔÚ rpmrc µµ°¸ÀïÖ¸¶¨ 
``optflags'' ±äÊý£¬ µ±½øÐгÌʽÌ×¼þ build ¶¯×÷ʱ£¬ ±ã¿ÉÒÀ¾ÝËùÐèµÄƽ̨ÀàÐÍ£¬ 
Ó¦ÓÃÌØ¶¨µÄ±äÊýÄÚÈÝ¡£ ÎÒÃǽ«»áÔÚ½ÓÏÂÈ¥µÄÕ½ÚÀ ËµÃ÷ÈçºÎʹÓÃÕâЩ±äÊý¡£ 
 
³ýÁËÉÏÊöµÄ macro É趨Í⣬ »¹ÓÐÐí¶àÆäËûµÄÉ趨·½Ê½£¬ Äú¿ÉÒÔʹÓ㺠
 
     rpm --showrc 
 
 
À´²é¿´ÏµÍ³µÄ tag Óë¿É¹©Ê¹ÓõĠflag ÓÐÄÄЩ¡£ 
 
6.2  The Spec File 
 
ÔÚ´ËÎÒÃǽ«ÌÖÂÛ spec µµ°¸µÄÉ趨¡£ build Ò»¸ö³ÌʽÌ×¼þʱ£¬ ÎÒÃÇÐèҪʹÓõ½ spec 
µµ°¸£¬ ÆäÄÚÈÝΪ¸Ã³ÌʽÌ×¼þµÄ˵Ã÷£¬ ¶îÍ⻹°üÀ¨Ò»Ð©Ö¸Á ÓÃÒÔָʾÕû¸ö build 
µÄ¹ý³Ì£¬ »¹ÓÐÒ»·Ýµµ°¸ÁÐ±í£¬ ÓÃÒÔ±íʾ³ÌʽÌ×¼þÖеĵµ°¸£¬ ·Ö±ð±»°²×°µ½ÄÄÀï¡£ 
 
spec µµ°¸µÄÃüÃû·½Ê½£¬ ×îºÃÊÇ×ñÑ­±ê×¼µÄ¹ßÀý£¬ Æä¸ñʽӦ¸ÃΪ package name-dash- 
version number-dash-release number-dot-spec¡£ 
 
ÕâÀïÎÒÃǾÙÒ»¸öСÐ͵Ġspec µµ°¸ÎªÀý (vim-3.0-1.spec)£º 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       7 
 
 
 
     Summary: ejects ejectable media and controls auto ejection 
     Name: eject 
     Version: 1.4 
     Release: 3 
     Copyright: GPL 
     Group: Utilities/System 
     Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz 
     Patch: eject-1.4-make.patch 
     Patch1: eject-1.4-jaz.patch 
     %description 
     This program allows the user to eject media that is autoejecting like 
     CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines. 
 
     %prep 
     %setup 
     %patch -p1 
     %patch1 -p1 
 
     %build 
     make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" 
 
     %install 
     install -s -m 755 -o 0 -g 0 eject /usr/bin/eject 
     install -m 644 -o 0 -g 0 eject.1 /usr/man/man1 
 
     %files 
     %doc README COPYING ChangeLog 
 
     /usr/bin/eject 
     /usr/man/man1/eject.1 
 
6.3  The Header 
 
µµ°¸ header µÄ²¿·Ý£¬ Óм¸¸öÌØ¶¨µÄÀ¸Î»ÄÚÈÝ£¬ Äú±ØÐë¼ÓÒÔÉ趨Íê³É£¬ 
ÁíÍ⻹Óм¸µã×¢ÒâÊÂÏî¡£ Äú±ØÐëÉ趨Íê³ÉµÄÀ¸Î»ÄÚÈÝÈçÏ£º 
 
   · Summary: ÒÔÒ»Ðг¤¶ÈµÄÃèÊö£¬ À´ËµÃ÷³ÌʽÌ×¼þµÄÄÚÈÝ¡£ 
 
   · Name: Õâ¸öµµ°¸Ãû³Æ±ØÐëÓëÄú×¼±¸Ê¹ÓõĠrpm µµÃûÒ»Ö¡£ 
 
   · Version: Õâ¸ö°æ±¾Ãû³Æ±ØÐëÓëÄú×¼±¸Ê¹ÓõĠrpm µµÃûÒ»Ö¡£ 
 
   · Release: Õâ¸ö·¢ÐÐÐòºÅ±ØÐëÓëÄú×¼±¸Ê¹ÓõĠrpm µµÃûÒ»Ö¡£ ( Ò²¾ÍÊÇ˵£¬ 
     Èç¹ûÎÒÃÇÍê³ÉÒ»¸ö³ÌʽÌ×¼þ£¬ µ«ÊÂáá·¢ÏÖËüÓÐЩССµÄÎÊÌ⣬ ±ØÐëÖØÐ build 
     Ò»´Î£¬ ´ËʱеijÌʽÌ×¼þ£¬ Æä·¢ÐÐÐòºÅ±ãÊÇ 2 ºÅ )¡£ 
 
   · Icon: Èç¹ûÄúʹÓÃÁËÆäËû¸ß½×µÄ°²×°¹¤¾ß³Ìʽ ( ÏñÊÇ Red Hat µÄ ``glint'' ³Ìʽ 
     )£¬ ÄÇ÷áÕâÀï¿ÉÒÔÖ¸¶¨ÆäÏà¶ÔÓ¦µÄͼʾµµ£¬ Ëü±ØÐëÊÇÒ»¸ö gif µµ°¸£¬ 
     ¶øÇÒ±ØÐëλ춠SOURCES Ä¿Â¼¡£ 
 
   · Source: ÕâÀïÖ¸¶¨ÁËÄÇЩ¡¸Î´¾­´¦Àí¹ýµÄ source µµ°¸¡¹µÄ HOME Ä¿Â¼£¬ 
     µ±ÄúÏëÒªÖØÐÂÈ¡µÃ source µµ°¸£¬ »òÊǼì²ìÊÇ·ñÓÐа汾ʱ£¬ 
     ¾ÍÐèÒªÓõ½Õâ¸öÉ趨¡£ ×¢ÒâÊÂÏ ÕâÀïµÄµµÃû£¬ 
     ¡¸Îñ±Ø¡¹ÓëÄúϵͳÉϵĵµ°¸Ãû³ÆÒ»Ö ( Ò²¾ÍÊÇ˵£¬ ÏÂÔØ source µµ°¸áᣬ 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       8 
 
 
 
     ²»ÒªÈ¥±ä¸üÆäµµ°¸Ãû³Æ )¡£ Í¬Ê±£¬ Äú¿ÉÒÔÖ¸¶¨Ò»¸öÒÔÉϵĠsource µµ°¸£¬ 
     ·½Ê½ÈçÏ£º 
 
          Source0: blah-0.tar.gz 
          Source1: blah-1.tar.gz 
          Source2: fooblah.tar.gz 
 
 
     ÕâЩµµ°¸¶¼»áµ½ SOURCES Ä¿Â¼µ×Ï ( Ïà¹ØµÄĿ¼½á¹¹ËµÃ÷£¬ »áÔÚááÃæµÄ "The 
     Source Directory Tree" Õ½ÚÀï¼ÓÒÔÌÖÂÛ )¡£ 
 
   · Patch: Èç¹ûÄúÐèÒªÖØÐÂÏÂÔØ patch µµ°¸£¬ ÄÇ÷áÆäĿ¼λÖÃÉ趨춴ˡ£ ×¢ÒâÊÂÏ 
     ÕâÀïµÄµµÃû£¬ ±ØÐëÓëÄúϵͳÉÏʹÓõĠpatch µµ°¸Ãû³ÆÏà·û£¬ ÁíÒ»·½Ã棬 
     ºÍǰÊö¶à¸ö source µµ°¸µÄÉ趨һÑù£¬ ÄúÒ²¿ÉÒÔÖ¸¶¨¶à¸ö patch µµ°¸Ãû³Æ¡£ 
     Æä¸ñʽ¡õÀýÈçÏ£º 
 
          Patch0: blah-0.patch 
          Patch1: blah-1.patch 
          Patch2: fooblah.patch 
 
 
     ÕâЩµµ°¸¶¼»áµ½ SOURCES Ä¿Â¼µ×Ï¡£ 
 
   · Copyright: ÕâÀïµÄÉ趨£¬ ÓÃÒÔ˵Ã÷³ÌʽÌ×¼þ²ÉÓúÎÖÖ°æÈ¨ÉùÃ÷¡£ Ïñ GPL¡¢ BSD¡¢ 
     MIT¡¢ public domain¡¢ distributable¡¢ commercial µÈ£¬ ¶¼ÊÇÄú¿ÉÒÔÖ¸¶¨µÄ¡£ 
 
   · BuildRoot: Äú¿ÉÒÔÖ¸¶¨Ò»¸öĿ¼£¬ Ëü»á±»µ±×÷ÊÇ build Óë install Ð³ÌʽÌ×¼þµÄ 
     ``root'' Ä¿Â¼£¬ Èç¹ûÄúÏëÔÚʵ¼Ê°²×°Ö®Ç°£¬ ÏÈÐвâÊÔ³ÌʽÄÚÈÝ£¬ 
     ¿ÉÒÔÉÆÓôËÏîÉ趨¡£ 
 
   · Group: ÕâÀïµÄÉ趨£¬ ÓÃ춸߽׵ݲװ¹¤¾ß³Ìʽ ( ÀýÈç Red Hat µÄ ``glint'' 
     ³Ìʽ ) µ±ÖУ¬ ÓÃÒÔ˵Ã÷³ÌʽËùÊôµÄȺ×éλÖᣠĿǰµÄȺ×é¼Ü¹¹£¬ ´óÖÂÈçÏÂËùÊö£º 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                       9 
 
 
 
          Applications 
              Communications 
              Editors 
               Emacs 
              Engineering 
              Spreadsheets 
              Databases 
              Graphics 
              Networking 
              Mail 
              Math 
              News 
              Publishing 
               TeX 
          Base 
              Kernel 
          Utilities 
              Archiving 
              Console 
              File 
              System 
              Terminal 
              Text 
          Daemons 
          Documentation 
          X11 
              XFree86 
               Servers 
              Applications 
               Graphics 
               Networking 
              Games 
               Strategy 
               Video 
              Amusements 
              Utilities 
              Libraries 
              Window Managers 
          Libraries 
          Networking 
              Admin 
              Daemons 
              News 
              Utilities 
          Development 
              Debuggers 
              Libraries 
               Libc 
              Languages 
               Fortran 
               Tcl 
              Building 
              Version Control 
              Tools 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      10 
 
 
 
          Shells 
          Games 
 
 
 
   · %description  Õâ¸ö²¢·ÇÕæµÄÊÇ header ÏîÄ¿£¬ 
     µ«ÄúÓ¦¸ÃÁ¬Í¬ÉÏÊöµÄÏîĿһͬÌîд£¬ Ã¿¸ö¡¸³ÌʽÌ×¼þ¡¹»ò¡¸×Ó³ÌʽÌ×¼þ¡¹£¬ 
     ¶¼Ó¦¸ÃÓÐÒ»¸ö description tag¡£ ÕâÀïÔÊÐíÄúÊäÈë¶àÐÐÄÚÈÝ£¬ 
     Ê¹µÃ³ÌʽÌ×¼þÄܹ»¾ßÓÐÒ»·ÝÍêÕûÏ꾡µÄ˵Ã÷¡£ 
 
6.4  Prep 
 
ÕâÀïÊÇ spec µµ°¸µÄÁíÒ»¸ö¶ÎÂäÕ½ڣ¬ ÓÃÒÔÉ趨Èàsource µµ°¸¾ÍÐ÷£¬ ÒÔ¹©ÏÂÒ»²½µÄ 
build ¶¯×÷¡£ Æ½³£ÎÒÃDZØÐë¾­¹ý setup£¬ ²ÅÄÜʵ¼Ê½øÐРmake ¶¯×÷£¬ 
Òò´ËÔÚ±¾¶ÎÂäÕ½ÚÖУ¬ ÎÒÃǽ«ÊÓÐèÒª½øÐРsource µµ°¸µÄ patch Óë setup¡£ 
 
ÓмþÊÂÖµµÃ×¢ÒâµÄ£º ½ÓÏÂÀ´µÄ¶ÎÂäÉ趨£¬ Êµ¼ÊÉÏÖ»ÊÇÖ¸Ã÷ij¶Î shell scripts µÄλÖ㬠
Äú¿ÉÒÔ½« shell scripts µÄÄÚÈÝ£¬ ÁíÍâÒÔ sh script µÄ·½Ê½¼ÓÒÔ´æµµ£¬ ²¢½« script 
³ÌʽÃû³ÆÖÃì¶ %prep tag Ö®áᣬ ÓÃÒÔÖ´ÐРsource µµ°¸µÄ unpack Óë patch ¶¯×÷¡£ 
µ±È»£¬ ÒÔÔ­ÓÐÖ® macro ÐÍʽÀ´×ö£¬ Ó¦¸ÃÊÇ·½±ãÐí¶àµÄ¡£ 
 
µÚÒ»¸öҪ˵Ã÷µÄ macro ÊÇ %setup¡£ Èç¹ûÎÒÃDzÉÓÃÆä×î¼òµ¥µÄ¸ñʽ ( 
¼´²»¼ÓÈκÎÃüÁîÁвÎÊýµÄÇé¿ö )£¬ Ëü»áµ¥´¿µØ½« source µµ°¸¼ÓÒÔ unpack£¬ ²¢ cd ½øÈë 
source µµ°¸µÄĿ¼¡£ ³ý´ËÖ®Í⣬ Äú»¹¿ÉÒÔʹÓÃÏÂÁеÄÑ¡Ï 
 
   · -n name Õâ¸öÑ¡ÏîÉ趨»á°Ñ build µÄĿ¼ÉèΪ name£¬ Ô­Ô¤ÉèֵΪ $NAME-$VER­ 
     SION£¬ ÆäËû¿ÉÄÜĿ¼Ãû³Æ°üÀ¨ $NAME£¬ ${NAME}${VERSION}£¬ »òÊÇ tar 
     µµ°¸±¾ÉíËùÓõÄĿ¼¡£ ( Çë×¢Òâµ½£¬ ÉÏÊöµÄ ``$'' ±äÊý£¬ ²¢²»ÊÇ spec 
     µµ°¸ÀïµÄ±äÊý£¬ ËüÃÇÔÚÕâÀïÖ»ÊÇÓÃÀ´´ú±íÒ»¸ö¡õÀýÃû³Æ£¬ Äú±ØÐëÔÚ³ÌʽÌ×¼þÀ 
     Ê¹ÓÃʵ¼ÊµÄµµ°¸Ãû³ÆÓë°æ±¾Ãû³Æ )¡£ 
 
   · -c ÔÚ½øÐРuntar ¶¯×÷֮ǰ£¬ »áÏȽ¨Á¢Ò»¸öĿ¼£¬ ²¢ cd ½øÈë¸ÃĿ¼¡£ 
 
   · -b # ÔÚ cd ½øÈë¸ÃĿ¼֮ǰ£¬ »áÏȽ« Source# ½øÐРuntar ¶¯×÷ ( Õâ¸öÑ¡ÏîÓë -c 
     Ñ¡Ïî²¢´æÊ±£¬ ÊÇûÓÐÒâÒåµÄ£¬ ËùÒÔÓ¦±ÜÃâͬʱʹÓà)£¬ ¶øÇÒÕâ¸öÑ¡Ï 
     ½öÊÊÓÃì¶¶à¸ö source µµ°¸µÄ³¡ºÏ¡£ 
 
   · -a # ÔÚ cd ½øÈë¸ÃĿ¼֮áᣬ ÔÙ½« Source# ½øÐРuntar ¶¯×÷¡£ 
 
   · -T Õâ¸öÑ¡Ïî»á¸Ç¹ýÔ­±¾Ô¤ÉèµÄ untar ¶¯×÷£¬ Í¬Ê±ÐèÒªÒ»¸ö -b 0 »òÊÇ -a 0 
     µÄÑ¡ÏîÀ´ÅäºÏ£¬ µ±ÄúʹÓõ½Á½¸öÒÔÉϵĠsource µµ°¸Ê±£¬ ±ãÐèÒª´ËÏÄÜ¡£ 
 
   · -D Ôڽ⿪³ÌʽÌ×¼þ֮ǰ£¬ ²»ÒªÉ¾³ý¸ÃĿ¼¡£ Õâ¸öÑ¡Ïî½öÊÊÓÃì¶Ê¹ÓÃÁ½¸öÒÔÉÏ 
     setup macro Ö®³¡ºÏ£¬ ¶øÇÒÖ»ÄÜÓÃì¶µÚÒ»¸ö setup macro Ö®áá ( 
     Ç§Íò±ðÓÃì¶µÚÒ»¸öÖ®ÄÚ )¡£ 
 
½ÓÏÂÀ´ÒªËµÃ÷µÄ macro ÊÇ %patch¡£ ËüÊÇÓÃÀ´Ð­Öú×Ô¶¯´¦Àí source µµ°¸¸üÐµĶ¯×÷£¬ 
ÆäÏà¹ØµÄÑ¡ÏîºÜ¶à£¬ Áбí˵Ã÷ÈçÏ£º 
 
   · # »áÒýÓàPatch# µ±×÷ÆäËùÐèÖ®¸üеµ¡£ 
 
   · -p # ÓÐʱ patch(1) Ö¸ÁîÐèÅäºÏÖ¸¶¨ strip µÄĿ¼ÊýÄ¿£¬ 
     Äã¿ÉÒÔÔÚ´ËÑ¡ÏîÖмÓÒÔÉ趨¡£ 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      11 
 
 
 
   · -P ÆäÔ¤ÉèÖ®¶¯×÷ÊÇÒýÓàPatch ( »ò Patch0 )£¬ µ±ÄúʹÓÃÁ½¸öÒÔÉϵĠ%patch 
     macro£¬ ²¢ÇÒÐèÒªÓëµÚÒ»¸ö macro ²»Í¬Ö® patch number Ê±£¬ 
     Õâ¸öÑ¡ÏîÏÔµÃÏ൱ÓÐÓᣠËü»á¸Ç¹ýÔ­±¾µÄÔ¤É趯×÷£¬ ²¢ÇÒÐèÒªÅäºÏÒ»¸ö 0£¬ 
     ÒÔʹµÃÖ÷ÒªµÄ source µµ°¸µÃÒÔ½øÐРuntar ¶¯×÷¡£ 
 
   ·  ÄúÒ²¿ÉÒÔʹÓà%patch#£¬ ¶ø²»±ØÊ¹ÓÃÕâÑùµÄÖ¸Á %patch # -P 
 
ÕâЩӦ¸Ã¾ÍÊÇÈ«²¿ËùÐèÒªÖªµÀÖ® macro ËµÃ÷£¬ Á˽âËüÃÇÖ®áᣬ ÄúÒ²¿ÉÒÔ͸¹ý sh Ö® 
script ¸ñʽ£¬ É趨²»Í¬µÄ setup ·½·¨£¬ ÔÚ %build macro ( ÔÚÏÂÒ»Õ½ÚÖлáÌá¼° ) 
֮ǰ£¬ ÄúËùÉ趨֮ËùÓÐÑ¡Ï ¶¼ÊǾ­ÓÉ sh À´Ö´ÐУ¬ Äú¿ÉÒÔÔٲο¼Ò»ÏÂǰÊöµÄ¡õÀý£¬ 
»òÐí¿ÉÒÔÊÊÓÃì¶ÄúµÄÐèÒª¡£ 
 
6.5  Build 
 
Õâ¸öÕ½ÚÀ ËùÊö¼°µÄ²¢·ÇÕæÕýµÄ macro¡£ µ±Äú°Ñ source µµ°¸ untar£¬ ²¢ÇÒ patch 
Íê³É£¬ cd ½øÈëĿ¼֮áᣬ ¿ªÊ¼×¼±¸ build ¶¯×÷ʱ£¬ ±ãÊÇÔÚÕâÀïÉ趨ÄÇЩ¿ØÖÆ build 
¶¯×÷µÄÖ¸Áî¡£ ¶øÕâЩָÁî¶¼»¹ÊÇ´«¸ø sh£¬ ËùÒÔÈκΠsh Ö®Ö¸Á ¶¼¿ÉÒÔÔÚ´ËÖ¸¶¨ ( 
°üÀ¨ comments ÔÚÄÚ )¡£ ÔÚ spec µµ°¸ÀïµÄÿһ¶ÎÂäÕ½ÚÉ趨ÖУ¬ 
ÄúµÄĿǰËùÔÚĿ¼λÖ㬠¶¼»á±»ÖØÐÂÉ趨Ϊ source directory µÄ×îÉϲ㣬 
ËùÒÔÇëÀμÇÔÚÐÄ£¬ ±ØÒªÊ±£¬ Äú¿ÉÒÔ cd ½øÈëÏà¹ØµÄ×ÓĿ¼¡£ 
 
6.6  Install 
 
ÕâÀïËùÉ趨µÄ£¬ Í¬ÑùÒ²²»ÊÇ macro£¬ »ù±¾ÉÏ£¬ ÄúÖ»ÐëÒªÔÚ´ËÉ趨һЩ install 
ËùÐèÖ®Ö¸Áî¡£ Èç¹ûÄú´òËãÔÚ³ÌʽÌ×¼þÀ ÌṩÍêÕûµÄ make install Ö¸ÁîÉ趨£¬ 
ÄÇ÷áÇëÔÚ±¾¶ÎÂäÉ趨ÖÐÍê³É£¬ ²»È»£¬ ÄúÒ²¿ÉÒÔ¸ü¸Ä makefile µµ°¸À Óйؠmake 
install µÄ²¿·Ý£¬ È»áá½öÔÚ±¾¶ÎÂäÉ趨ÖÐÖ¸¶¨ make install¡£ »òÊÇ£¬ Ò²¿ÉÒÔ°ÑÕû¸ö 
install µÄÖ¸Áî½»¸ø sh À´×ö¡£ ¼Çס£¬ ÄúµÄĿǰËùÔÚĿ¼λÖ㬠Ӧ¸ÃÒѱ»ÖØÐÂÉ趨Ϊ 
source directory µÄ×îÉϲ㡣 
 
6.7  Optional pre and post Install/Uninstall Scripts 
 
³ÌʽÌ×¼þÔÚ°²×°Óë½â³ý°²×°Ö®Ç°áᣬÄú¿ÉÒÔÖ¸¶¨ script£¬ Ê¹ÆäÊÓÇé¿ö¼ÓÒÔÖ´ÐС£ 
½øÐдËÏ×÷µÄÖ÷ÒªÔ­ÒòÖ®Ò»£¬ ±ãÊÇÓöµ½Èçϵij¡ºÏ£¬ Æ©Èç˵£¬ 
ÎÒÃÇÔÚ°²×°»ò½â³ý°²×°Ò»Ð©º¬ÓРshared library µÄ³ÌʽÌ×¼þʱ£¬ ÐèÒªÖ´ÐРldconfig¡£ 
¸÷ʽ script ËùÐèÖ® macro Ãû³ÆÈçÏ£º 
 
   · %pre Ö´ÐРpre-install scripts µÄ macro¡£ 
 
   · %post Ö´ÐРpost-install scripts µÄ macro¡£ 
 
   · %preun Ö´ÐРpre-uninstall scripts µÄ macro¡£ 
 
   · %postun Ö´ÐРpost-uninstall scripts µÄ macro¡£ 
 
ÕâЩ¶ÎÂäÉ趨µÄÄÚÈÝ£¬ ¿ÉÒÔÊÇÈκΠsh ÐÍʽ֮ script£¬ ²»¹ý£¬ ÄúÎÞÐëÖ¸¶¨¹Ø¼üÐðÊö 
#!/bin/sh¡£ 
 
6.8  Files 
 
±¾¶ÎÂäÉ趨µ±ÖУ¬ Äú±ØÐëÁгö³ÌʽÌ×¼þÄÚÖ®ËùÊôµµ°¸Ãû³Æ¡£ RPM ±¾Éí²¢ÎÞ´ÓµÃÖª£¬ Ö´ÐР
make install Ö®áᣬ µ½µ×ÓÐÄÄЩ binary µµ°¸±»°²×°½øÈ¥£¬ 
Ŀǰ²¢ÎÞËû·¨¿ÉÒÔÖ±½Ó½â¾ö´ËÎÊÌâ¡£ ÓÐЩÈ˽¨ÒéÔÚ install ³ÌʽÌ×¼þµÄǰáᣬ Ê¹Óà
find Ö¸ÁîÀ´´¦Àí£¬ ²»¹ýÔÚÒ»¸ö¶àʹÓÃÕßµÄϵͳÏ£¬ ÕâÓ¦¸ÃÊDz»¿ÉÐе쬠
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      12 
 
 
 
ÒòΪÔÚ³ÌʽÌ×¼þ build µÄ¹ý³ÌÖУ¬ ¿ÉÄÜÓÐÆäËûÓë³ÌʽÌ×¼þ±¾ÉíÎ޹صĵµ°¸±»²úÉú¡£ 
 
ÁíÍ⻹ÓÐһЩ macro£¬ ËüÃÇ¿ÉÓÃÀ´×öÒ»Ð©ÌØÊâµÄ¹¤×÷£¬ ×Ƚ«ÆäÁÐÊöì¶Ï£º 
 
   · %doc ÓÃÒÔ±êʾÔÚ install ³ÌʽÌ×¼þʱ£¬ ÄúËùÏëÒª°²×°Ö® source 
     µµ°¸ÀïµÄ˵Ã÷ÎļþÊÇÄÄЩ£¬ ¶øÕâЩ˵Ã÷Îļþ»á±»°²×°ÔÚ /usr/doc/$NAME-$VER­ 
     SION-$RELEASE¡£ Äú¿ÉÒÔÔÚÃüÁîÁÐÉÏ£¬ ÒÔ´Ë macro Í¬Ê±Ö¸¶¨ºÃ¼¸¸ö˵Ã÷ÎļþÃû³Æ£¬ 
     »òÊÇÒÔ´Ë macro£¬ ¸÷±ðΪËüÃÇÒ»Ò»Íê³ÉÖ¸¶¨¡£ 
 
   · %config ÓÃÒÔ±êʾ³ÌʽÌ×¼þÀïµÄÉ趨µµ°¸ÊÇÄÄЩ£¬ Õâ°üÀ¨Ïñ sendmail.cf¡¢ passwd 
     Ö®ÀàµÄµµ°¸¡£ Èç¹ûÄúÊÂáá uninstall ÁËij¸ö³ÌʽÌ×¼þ£¬ ¶øÇÒËüº¬ÓÐÉ趨µµ°¸£¬ 
     ÄÇ÷áËùÓÐûÓиıäµÄµµ°¸»á±»ÒƳý£¬ ¶øËùÓÐÒѾ­¸Ä±äµÄµµ°¸£¬ 
     »áÔÚÔ­µµ°¸Ãû³ÆÖ®áᣬ ¼ÓÉÏ .rpmsave µÄÑÓÉìÃû³Æ¡£ Í¬ÑùµÄ£¬ 
     Äú¿ÉÒÔÔÚ´ËͬʱÁгö¶à¸öµµ°¸Ãû³Æ¡£ 
 
   · %dir ÔÚµµ°¸ÁбíÖУ¬ ±êÃ÷ijһ¸öÌØ¶¨µÄĿ¼£¬ 
     ÓÃÒÔ˵Ã÷¸ÃĿ¼Ϊij³ÌʽÌ×¼þËùÓµÓС£ Èç¹ûÄúÔÚµµ°¸ÁбíÖÐÖ¸¶¨Ò»¸öĿ¼Ãû³Æ£¬ 
     µ«È´Ã»ÓÐÔÚÇ°Ãæ¼ÓÉÏ%dir macro£¬ ÄÇ÷á¸ÃĿ¼ÄÚ£¬ 
     ËùÓеµ°¸Ä¿Â¼¶¼»á±»°üº¬ÔÚµµ°¸ÁÐ±íµ±ÖУ¬ ²¢ÔÚÉÔáᣬ 
     ±»µ±×÷ÊdzÌʽÌ×¼þµÄÒ»²¿·Ý¶øÈ«±»°²×°½øÈ¥¡£ 
 
   · %files -f <filename> ÔÊÐíÄúÒýÓàsource Ö® build Ä¿Â¼À 
     Ä³·Ýµµ°¸Çåµ¥µÄÄÚÈÝ¡£ µ±ÄúÓöµ½Ä³Ò»¸ö³ÌʽÌ×¼þ£¬ Ëü¿ÉÒÔ½¨Á¢×Ô¼ºµÄµµ°¸Ç嵥ʱ£¬ 
     Õâ¸öÑ¡Ïî±ãÏÔµÃÏ൱²»´í£¬ ÄúÖ»ÐëÒªÒýÓø÷ݵµ°¸Çåµ¥£¬ ²»±ØÔÙ×ÔÐÐÐÁ¿àµØÁгö¡£ 
 
ÔÚµµ°¸ÁбíÀ Óиö×î´óµÄ×¢ÒâÊÂÏ ±ãÊÇĿ¼µÄÉ趨¡£ Èç¹ûÄú²»Ð¡ÐĽ« /usr/bin 
ÁÐÈ룬 ÄÇ÷áÄúµÄ³ÌʽÌ×¼þ£¬ ½«»á°üÀ¨ÏµÍ³Àï /usr/bin µ×ϵÄËùÓеµ°¸¡£ 
 
6.9  Building It 
 
6.9.1  The Source Directory Tree 
 
µÚÒ»¼þÊ£¬ Äú±ØÐëÑ¡¶¨Ò»¸öÊʵ±µÄ build tree£¬ ´ËÏîÉ趨¿ÉÔÚ /etc/rpmrc 
µµ°¸ÀïÍê³É£¬ ¶ø´ó¶àÊýÈË»áÖ±½ÓʹÓà/usr/src¡£ 
 
Äú¿ÉÄÜ»¹ÐèÒª½¨Á¢ÏÂÁеÄĿ¼£¬ Ê¹µÃ build tree µÄÉ趨Äܹ»Íê³É£º 
 
   · BUILD ´ËĿ¼±ãÊÇ RPM ½øÐÐËùÓРbuild ¶¯×÷µÄ¹¤×÷Ŀ¼¡£ 
     Äú²»±ØÌرðµØÔÚÄĸöĿ¼½øÐвâÊÔÐԵĠbuild ¶¯×÷¡£ 
 
   · SOURCES ´ËĿ¼´æ·ÅÖøÄúµÄ¡¸Æðʼ¡¹ (original) Ô­Ê¼ tar µµ°¸¡¢ ÓëÏà¹ØµÄ patch 
     µµ°¸£¬ RPM Ô¤Éè»áѰÕÒ±¾Ä¿Â¼¡£ 
 
   · SPECS ´ËĿ¼´æ·ÅËùÓÐÖ® spec µµ°¸¡£ 
 
   · RPMS ´ËĿ¼´æ·ÅËùÓРbuild ²úÉúÖ® binary ¸ñʽ RPM µµ°¸¡£ 
 
   · SRPMS ´ËĿ¼´æ·ÅËùÓРsource ¸ñʽ RPM µµ°¸¡£ 
 
6.9.2  Test Building 
 
Ê×ÏÈ£¬ Äú´ó¸Å»áÏëҪȡ»Ø source µµ°¸£¬ ÔÚûÓÐʹÓàRPM µÄÇé¿öÏ£¬ 
½øÐÐÒ»´Î¡¸´¿¾»µÄ¡¹ build ¶¯×÷¡£ Æä²½Öè±ãÊÇ£¬ ½â¿ª source µµ°¸£¬ 
½«¸ÃĿ¼Ãû³Æ¸ÄΪ $NAME.org£¬ È»ááÔٴν⿪ source µµ°¸£¬ ÎÒÃÇÐèҪʹÓôËÒ» source 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      13 
 
 
 
À´½øÐРbuild ¶¯×÷¡£ ½øÈë´ËÒ» source Ä¿Â¼£¬ °´ÕÕָʾÀ´½øÐРbuild£¬ 
Èç¹ûÄú±ØÐë±à¼­Èκζ«Î÷£¬ Äú»áÐèÒªÒ»·Ý patch£¬ Ò»µ©ÄúÍê³É build ¹¤×÷£¬ ±ã¿ÉÇå³ý 
source Ä¿Â¼ÀïµÄÄÚÈÝ¡£ ÇëÈ·¶¨½« configure script À ËùÓвúÉúÖ®µµ°¸¼ÓÒÔÇå³ý£¬ 
È»ááÔÙ cd »Øµ½ source Ä¿Â¼Ö®Éϲ㣬 ½ÓÖø±ã¿ÉÖ´ÐÐÕâÑùµÄ¶¯×÷£º 
 
     diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch 
 
 
ÉÏÊöÖ¸Áî»á²úÉúÒ»·Ý patch£¬ ÄúÔÚ spec µµ°¸¿ÉÒÔʹÓõ½Ëü¡£ ×¢Òâµ½ÉÏÃæµÄ ''linux'' 
Ãû³Æ£¬ ËüÖ»ÊÇÒ»¸öÌáʾ×÷Ó㬠»òÐíÄú¿ÉÒÔʹÓÃÆäËûÃû³Æ£¬ ÖîÈç ''config'' »ò 
''bugs'' Ö®ÀàµÄÌáʾÃû³Æ£¬ ÓÃÒÔ˵Ã÷ÄúºÎÒÔÖÆ×÷´ËÒ» patch µµ°¸¡£ Í¬Ê±£¬ 
Äú×îºÃÒ²ÔÚʹÓàpatch µµ°¸Ö®Ç°£¬ Ïȹ۲ìÀïÍ·µÄÄÚÈÝ£¬ È·¶¨ÊÇ·ñÎÞÒâ¼ä°üº¬ÁËÆäËûµÄ 
binary µµ°¸¡£ 
 
6.9.3  Generating the File List 
 
ÏÖÔÚ£¬ ÄúÒѾ­ÓÐÁËÒ»·Ý¿ÉÒÔÄÃÀ´ build µÄ source µµ°¸£¬ 
¶øÇÒÄúÒ²ÖªµÀÈçºÎÍê³ÉÆäÏà¹ØµÄ¶¯×÷£¬ Èç build Óë install µÈ¡£ ¹Û²ì install Ê±£¬ 
ÒÀÐò²úÉúµÄ½á¹û£¬ ÎÒÃǽ«Óɴ˽á¹û£¬ ÔÚ spec µµ°¸Öн¨Á¢Ò»·Ýµµ°¸ÁÐ±í¡£ 
ͨ³£ÎÒÃÇ»áÔÚ½øÐÐÉÏÊö²½ÖèµÄͬʱ£¬ Ò»Æð½¨Á¢ spec µµ°¸£¬ 
Äú¿ÉÒÔÏÈÍê³Éµµ°¸µÄÆðʼ²¿·Ö£¬ ºÍ¼¸¸ö¼òµ¥µÄ²¿·Ö£¬ 
È»ááÔÙ°ÑÆäËû²¿·ÖµÄ²½Öè¼ÓÒÔÍê³É¡£ 
 
6.9.4  Building the Package with RPM 
 
Ò»µ©ÄúÓÐÁËÒ»·Ý spec µµ°¸£¬ Ò»ÇбãÒѾÍÐ÷£¬ Äú¿ÉÒÔ×¼±¸ build µÄ²âÊÔ¶¯×÷¡£ 
×îºÃµÄ·½Ê½£¬ ¾ÍÊÇʹÓÃÀàËÆÏÂÁеÄÖ¸Á 
 
     rpm -ba foobar-1.0.spec 
 
ÅäºÏ -b Ñ¡Ï ÎÒÃÇ»¹¿ÉÒÔʹÓÃÆäËûÓÐÓõÄÑ¡Ï 
 
   · p Ö¸µÄÊÇÖ»Ö´ÐРspec µµ°¸Ö® prep ²¿·Ý¡£ 
 
   · l Õë¶Ô %files ½øÐеµ°¸ÁбíµÄ±È¶Ô¼ì²é¶¯×÷¡£ 
 
   · c Ö´ÐРprep Óë compile µÄ¶¯×÷¡£ µ±Äú²»È·¶¨ source µµ°¸ÊÇ·ñÄܹ» build Ê±£¬ 
     ´ËÑ¡ÏîÏÔµÃÏ൱ÓÐÓᣠ»òÐíÄú»á¾õµÃËü²¢Ã»Óжà´óÓô¦£¬ ÒòΪÄú¿ÉÄÜÏëÒª¼ÌÐøÐ޸Ġ
     source µµ°¸±¾Éí£¬ Ö±µ½ build ááÔÙ¿ªÊ¼Ê¹ÓàRPM£¬ µ«Ò»µ©ÄúÊìϤ RPM 
     µÄÓ÷¨áᣬ »á·¢ÏÖËüµÄ±ãÀûÖ®´¦¡£ 
 
   · i Ö´ÐРprep¡¢ compile¡¢ Óë install¡£ 
 
   · b Ö´ÐРprep¡¢ compile¡¢ install¡¢ ²¢Ö» build ³öÒ»·Ý binary ³ÌʽÌ×¼þ¡£ 
 
   · a Ö´ÐÐËùÓеĠbuild ¶¯×÷ ( °üÀ¨  source Óë binary µÄ³ÌʽÌ×¼þ )¡£ 
 
ÅäºÏ -b Ñ¡Ï ÁíÍ⻹ÓÐһЩϸÏîÑ¡Ïî¿É¹©Ê¹Ó㬠ËüÃÇ·Ö±ðÊÇ£º 
 
   · --short-circuit »áÖ±½ÓÌøÖÁij¸öÌØ¶¨µÄ½×¶Î ( ½ö¿ÉÅäºÏ c Óë i Ñ¡ÏîÀ´Ê¹Óà)¡£ 
 
   · --clean µ±Ö´ÐÐÍê±Ïʱ£¬ ÒƳýÏà¹ØµÄ build tree¡£ 
 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      14 
 
 
 
   · --keep-temps »á°ÑËùÓеĠtemp Óë scripts µµ°¸£¬ ¶¼±£ÁôÔÚ /tmp Ä¿Â¼£¬ 
     Äú¿ÉÒÔʹÓà-v Ñ¡Ï Êµ¼Ê¹Û²ìÓÐÄÄЩµµ°¸±»²úÉú¡£ 
 
   · --test ²¢²»Êµ¼ÊÖ´ÐÐÈκν׶ε͝×÷£¬ µ«ÓÐÖ´ÐРkeep-temp µÄ²¿·Ý¡£ 
 
6.10  Testing It 
 
Ò»µ©ÓÐÁË source Óë binary µÄ rpm µµ°¸£¬ Äú±ØÐë½øÐвâÊÔ¹¤×÷¡£ 
×î¼òµ¥ÇÒ×îºÃµÄ·½Ê½£¬ ¾ÍÊÇʹÓÃÁíһ̨»úÆ÷À´²âÊÔ£¬ Ò²¾ÍÊǽøÐРbuild 
¶¯×÷Ö®ÍâµÄ»úÆ÷¡£ ±Ï¾¹£¬ Äú¸ÕÔÚÄúµÄ»úÆ÷ÉÏ£¬ Íê³ÉÒ»´ó¶ÑµÄ make install ¶¯×÷£¬ 
ÈôÔÚÔ­»úÆ÷ÉÏ×ö²âÊÔ£¬ µ±È»»áÏÔµÃÏ൱˳ÀûÂÞ¡£ 
 
Äú¿ÉÒÔÖ´ÐРrpm -u packagename À´½øÐвâÊÔ£¬ µ«ÕâÑù×ö»¹ÊÇÓÐÔì¼ÙµÄ¿ÉÄÜ£¬ ÒòΪÔÚ 
build µÄ¹ý³ÌÖУ¬ Äú×öÁË make install µÄ¶¯×÷£¬ 
Èç¹ûÄúÔÚµµ°¸ÁбíÖÐÒÅ©ÁËijЩ¶«Î÷£¬ ÄÇ÷áËü²»»á±»½â³ý°²×°£¬ È»ááÄúÔÙ reinstall 
Õâ·Ý binary ³ÌʽÌ×¼þ£¬ ±ã»á·¢ÏÖÕû¸öϵͳ»¹ÊÇÍêÕû¶øÔË×÷Õý³£µÄ£¬ µ«Êµ¼ÊÉϵĠrpm 
µµ°¸»¹ÊÇÓÐÎÊÌâ¡£ Òò´ËÇëÌØ±ð¼Çס£¬ ÓÉì¶ÄúÖ´ÐеÄÊÇ rpm -ba package£¬ 
¶ø´ó¶àÊýµÄÈË£¬ »áÖ»ÒÔ rpm -i package ·½Ê½£¬ À´°²×°ÄúµÄ³ÌʽÌ×¼þ¡£ µ± binary 
µµ°¸¶À×Ô±»°²×°Ê±£¬ Äú±ØÐëÈ·¶¨ÔÚ build »ò install µÄ¶ÎÂäÉ趨ÖУ¬ 
²¢Ã»ÓÐÏà¹ØµÄ²¿·Ý¶ÔÆäÓÐÓ°Ïì¡£ 
 
6.11  What to do with your new RPMs 
 
Ò»µ©Äú×÷³öÁËÒ»·Ý×Ô¼ºµÄ RPM µµ°¸ ( ¼Ù¶¨Õâ·Ýµµ°¸£¬ Ö®Ç°²¢Î´ÒÔ RPM ·½Ê½ÖÆ×÷¹ý )£¬ 
Äú¿ÉÒÔ½«ÄúµÄ×÷Æ·¹±Ï׸ø±ðÈË ( ´Ëʱ¼Ù¶¨ÄúÖÆ×÷µÄ RPM µµ°¸£¬ ÊÇ¿ÉÒÔ×ÔÓÉ´«²¼µÄ )¡£ 
Äú¿ÉÒÔ¿¼ÂǰÑËüÉÏ´«ÖÁ ftp.redhat.com3 ¡£ 
 
6.12  What Now? 
 
Çë»Ø¹ËÉÏÊöµÄÕ½ڣ¬ ÔÚ¡¸Testing¡¹ºÍ¡¸What to do with new RPMs¡¹À 
ÎÒÃÇÏ£ÍûËùÓеĠRPM µµ°¸¶¼Äܱ»Ìṩ³öÀ´£¬ ¶øÇÒÎÒÃÇÏ£ÍûËüÃǶ¼»áÊǺõĠRPM µµ°¸¡£ 
Òò´Ë£¬ Çë¶à»¨Ò»µãʱ¼äºÃºÃµØ²âÊÔËüÃÇ£¬ È»ááÔÙ»¨µãʱ¼ä½«ËüÃÇÉÏ´«£¬ 
ÒÔÔ츣ÆÕÂÞ´óÖÚ¡£ Í¬Ê±£¬ ÇëÈ·¶¨ÄúÖ»ÉÏ´«¿É¹©×ÔÓÉ´«²¼µÄÈíÌå¡£ 
ÉÌÒµÈíÌåÓë¹²ÏíÈíÌåÊDz»Ó¦¸Ã±»ÉÏ´«µÄ£¬ ³ý·ÇËüÃÇÓзÝÐí¿ÉÉùÃ÷ÔÚÉÏÃæ¡£ ÕâÑùµÄÈíÌ壬 
°üÀ¨ÓРNetscape software¡¢ ssh¡¢ pgp µÈ¡£ 
 
 
7.  Multi-architectural RPM Building 
 
RPM Ä¿Ç°¿ÉÓÃì¶ build ¸÷ʽ×÷ҵƽ̨֮³ÌʽÌ×¼þ£¬ Èç Intel i386¡¢ °²×° Linux Ö® 
Digital Alpha¡¢ Óë Sparc »úÆ÷£¬ ¶øÇÒÓÐÈ˲âÊÔ±¨¸æ£¬ ËµÃ÷ËüÒ²¿ÉÒÔÔÚ SGI Óë HP 
¹¤×÷Õ¾ÉÏʹÓᣠRPM ÓÐÐí¶àÌØÉ«£¬ Ê¹µÃËüÄܹ»ÇáËɵØÖ§Ô®ÔÚ¸÷ʽ×÷ҵƽ̨ÉÏ build 
³ÌʽÌ×¼þ£¬ µÚÒ»¸öÌØÉ«±ãÊÇÔÚ /etc/rpmrc µµ°¸ÀïµÄ ``optflags'' É趨ÏîÄ¿£¬ 
µ±ÎÒÃÇÔÚ build ÈíÌåÌ×¼þʱ£¬ Ëü¿ÉÓÃì¶Ö¸¶¨Æ½Ì¨¼Ü¹¹µÄÏà¹ØÉ趨ֵ¡£ ÁíÒ»¸öÌØÉ«ÊÇ 
spec µµ°¸ÀïµÄ ``arch'' macro ÏîÄ¿£¬ ¸ù¾ÝËùÒª½øÐРbuild µÄƽ̨¼Ü¹¹£¬ 
Äú¿ÉÒÔÖ¸¶¨ËüÃÇÖ´Ðв»Í¬µÄ¹¤×÷¡£ ÁíÒ»¸öÌØÉ«ÊÇÔÚµµ°¸ header ´¦µÄ ``Exclude'' 
É趨ÏîÄ¿¡£ 
 
7.1  Sample spec File 
 
ÏÂÁÐÒÔ ``fileutils'' ³ÌʽÌ×¼þΪÀý£¬ Æä spec µµ°¸µÄ²¿·ÝÄÚÈÝ£¬ ¿ÉÓÃÀ´ÔÚ Alpha Óë 
 
____________________ 
 
3. <URL:ftp://ftp.redhat.com> 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      15 
 
 
 
Intel Æ½Ì¨¼Ü¹¹ÉÏ£¬ ½øÐРbuild µÄ¹¤×÷¡£ 
 
     Summary: GNU File Utilities 
     Name: fileutils 
     Version: 3.16 
     Release: 1 
     Copyright: GPL 
     Group: Utilities/File 
     Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz 
     Source1: DIR_COLORS 
     Patch: fileutils-3.16-mktime.patch 
 
     %description 
     These are the GNU file management utilities.  It includes programs 
     to copy, move, list, etc, files. 
 
     The ls program in this package now incorporates color ls! 
 
     %prep 
     %setup 
 
     %ifarch alpha 
     %patch -p1 
     autoconf 
     %endif 
     %build 
     configure --prefix=/usr --exec-prefix=/ 
     make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s 
 
     %install 
     rm -f /usr/info/fileutils* 
     make install 
     gzip -9nf /usr/info/fileutils* 
 
     . 
     . 
     . 
 
7.2  Optflags 
 
ÔÚ´ËÒ»¡õÀýÖУ¬ Äú¿ÉÒÔ·¢ÏÖ ``optflags'' É趨ÏîÄ¿£¬ ÊÇÈçºÎÓÉ /etc/rpmrc 
µµ°¸Öз¢»Ó×÷ÓᣠÊ×ÏȾö¶¨ÄúËù½øÐРbuild ¶¯×÷µÄ»úÆ÷£¬ ÊÇÄÄÒ»ÖÖÆ½Ì¨¼Ü¹¹£¬ 
Ç뽫ÆäÕýÈ·Ö®É趨ֵ£¬ Ö¸¶¨µ½ RPM_OPT_FLAGS¡£ Äú±ØÐëÕë¶Ô³ÌʽÌ×¼þÖ® Makefile 
µµ°¸£¬ ½øÐРpatch µÄ¶¯×÷£¬ ½«Ò»Ð©Í¨ÓõıäÊýÉ趨ֵ£¬ ¼ÓÒԸıäÒÔÊÊÓÃì¶ÄúµÄ»·¾³ ( 
Èç -m486 Óë -O2 )¡£ Äú¿ÉÒÔ install Õâ·Ý source Ì×¼þ£¬ ½ÓÖø½â¿ª source ²¢¼ì²éÆä 
Makefile µµ°¸£¬ ÒÔ½øÒ»²½ÕÒ³ö¸üºÃµÄÉ趨·½Ê½£¬ È»áá¹Û²ì Makefile µÄ patch ÄÚÈÝ£¬ 
ÒÔÁ˽âÎÒÃDZØÐë×öÄÄЩ¸Ä±ä¡£ 
 
7.3  Macros 
 
%ifarch ´ËÒ» macro É趨ÏîÄ¿ÊǷdz£ÖØÒªµÄ£¬ ÔÚÐí¶à³¡ºÏ£¬ 
ÄúÐëÒªÖ»Õë¶ÔÄ³Ò»ÌØ¶¨Æ½Ì¨¼Ü¹¹£¬ ½øÐÐÒ»Á½¸ö patch ¹¤×÷£¬ ÕâÖÖÇé¿öÏ£¬ RPM 
Äܹ»ÈÃÄú½öÕë¶Ôijһƽ̨¼Ü¹¹£¬ ²ÉÓñØÒªµÄ patch¡£ 
 
 
 
 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      16 
 
 
 
ÔÚÉÏÊö¡õÀýÖУ¬ fileutils ÓиöÌṩ¸ø 64 bit »úÆ÷ʹÓõĠpatch£¬ ºÜÃ÷ÏԵأ¬ ÕâÏî 
patch ½öÐèÒªÓÉ Alpha »úÆ÷Ëù²ÉÓ㬠Òò´Ë£¬ ÎÒÃÇÕë¶Ô 64 bit µÄ patch ²¿·Ý£¬ 
Ôö¼ÓÒ»¸ö %ifarch µÄ macro É趨ÏîÄ¿£¬ Æä¡õÀýÈçÏ£º 
 
     %ifarch axp 
     %patch1 -p1 
     %endif 
 
 
ÕâÑùÄܱ£Ö¤£¬ ³ýÁË Alpha »úÆ÷Ö®Í⣬ ÆäËûƽ̨¼Ü¹¹µÄ»úÆ÷²¢²»»á²ÉÓôˠpatch¡£ 
 
7.4  Excluding Architectures from Packages 
 
Äú¿ÉÒÔÔÚÒ»¸öĿ¼ÄÚ£¬ Í¬Ê±¹ÜÀí¸÷ʽ×÷ҵƽ̨µÄ RPM Ô­Ê¼µµ°¸£¬ 
ÕâÏÄÜʹµÃÎÒÃÇÔÚÖÆ×÷³ÌʽÌ×¼þµÄʱºò£¬ ²»±ØÏÞ¶¨ì¶Ä³Ð©×÷ҵƽ̨ÉÏ¡£ 
Òò´ËÄú¿ÉÒÔÕâÑùÏÂÖ¸Á 
 
     rpm --rebuild /usr/src/SRPMS/*.rpm 
 
 
ʹµÃÕýÈ·µÄ³ÌʽÌ×¼þÄܹ»±» build¡£ 
Èç¹ûÄúÉÐÎ´ÒÆÖ²Ä³¸öÓ¦ÓóÌʽÖÁÄ³Ò»ÌØ¶¨µÄ×÷ҵƽ̨£¬ ¿ÉÒÔ¼ÓÉÏÕâÑùµÄÒ»ÐÐÄÚÈÝ£º 
 
     ExcludeArch: axp 
 
 
µ½ source ³ÌʽÌ×¼þµ±ÖУ¬ spec µµ°¸µÄ header ´¦£¬ È»ááÔÚÔ­±¾½øÐРbuild 
µÄ×÷ҵƽ̨ÉÏ£¬ ÔÙ×öÒ»´Î rebuild ¶¯×÷¡£ ´Ëʱ£¬ Äú¾ÍÓÐÁËÒ»·ÝÔÚ Intel »úÆ÷ÉÏ build 
Íê³ÉµÄ source ³ÌʽÌ×¼þ£¬ Í¬Ê±ËüÒ²ºÜÈÝÒ×±ãÄÜÒÆ¡õÖÁ Alpha »úÆ÷ÉÏ¡£ 
 
7.5  Finishing Up 
 
ʹÓàRPM À´ÖÆ×÷¡¸¶à×÷ҵƽ̨¡¹µÄ³ÌʽÌ×¼þ£¬ Í¨³£»á±È¸÷±ðÔÚ¸ÃÆ½Ì¨ÖÆ×÷À´µÃÈÝÒ×£¬ 
¶øÇÒËæÖøÄúÖÆ×÷Ô½¶àµÄ³ÌʽÌ×¼þ£¬ ÆäЧӦ»á¸ü¼ÓÃ÷ÏÔ£¬ ÒòΪ£¬ 
ÎÒÃÇ¿ÉÒԲο¼ÆäËûÀàËÆµÄԭʼ³ÌʽÌ×¼þÄÚÈÝ£¬ µÃÒÔ´¦ÀíÖÆ×÷ʱÓöµ½µÄÎÊÌâ¡£ 
 
 
8.  Copyright Notice 
 
±¾ËµÃ÷Îļþ¼°ÆäÄÚÈÝ£¬ ¾ùÊܰæÈ¨Ëù±£»¤£¬ ÔÚÔ­Îı£³ÖÍêÕû¡¢ Î´±»¸ü¶¯µÄÇé¿öÏ£¬ 
ÔÊÐí½«Æä×ªÔØ£¬ Ò²¾ÍÊÇ˵£¬ Äú½öÄܶÔÔ­ÎļÓÒÔÖØÐÂÅŰ桢 ÖØÐÂÁÐÓ¡¡¢ »ò½øÐÐת¼¡£ 
 
 
 
 
 
RPM HOWTO (RPM at Idle)                                                      17 
 

BBSˮľÇ廪վ¡Ã¾«»ªÇø