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 Ŀ¼À
ij·Ýµµ°¸Çåµ¥µÄÄÚÈÝ¡£ µ±ÄúÓöµ½Ä³Ò»¸ö³ÌʽÌ×¼þ£¬ Ëü¿ÉÒÔ½¨Á¢×Ô¼ºµÄµµ°¸Ç嵥ʱ£¬
Õâ¸öÑ¡Ïî±ãÏÔµÃÏ൱²»´í£¬ ÄúÖ»ÐëÒªÒýÓø÷ݵµ°¸Çåµ¥£¬ ²»±ØÔÙ×ÔÐÐÐÁ¿àµØÁгö¡£
ÔÚµµ°¸ÁбíÀ Óиö×î´óµÄ×¢ÒâÊÂÏ ±ãÊÇĿ¼µÄÉ趨¡£ Èç¹ûÄú²»Ð¡ÐĽ« /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ˮľÇ廪վ¡Ã¾«»ªÇø