  RPM gpbP[W̍쐬@ (RPM-BUILD-HOWTO)
  Ía(ӂ邽@),furutaka@Flux.tokai.jaeri.go.jp
  Ή  (ishi), ishioka@PPP01.infoPepper.or.jp
   0.5  96/12/02

  ̕ł́ARPM (Redhat Package Manager) goCipbP[W
  (*.rpm) yу\[XpbP[W (*.src.rpm) ̍쐬@܂B
  A RPM ̋@\́AM̍ŐVłł 2.2.9 ̂̂łB

  : ͂̕ȂȑOɏꂽ̂Ȃ̂ŁA܂ǂ Linux 
  ɂ͂Ă͂܂Ȃӏ܂B (JF Project)
  ______________________________________________________________________

  ڎ

  1. Tv
     1.1 ̕ɏĂ鎖
     1.2 쌠yєzt
     1.3 tB[hobN

  2. RHL ȊÕfBXgr[Vւ RPM ̃CXg[
     2.1 Kvȃt@C
     2.2 CXg[

  3. ݒt@Cƍ쐬c[
     3.1 ݒt@C
     3.2 pbP[W쐬c[
     3.3 lp쐬c[

  4. pbP[W쐬̏ I (pb`̍쐬)
     4.1 ܂ make o悤...
     4.2 uzvCXg[

  5. pbP[W쐬̏ II (spec t@C̋Lq@)
     5.1 spec t@C̗
     5.2 ɓoꂵĂȂ^O
     5.3 %setup }ÑIvV̎gp
        5.3.1 \[X̃fBNgw肷    (%setup -n <name>)
        5.3.2 fBNg쐬Ă\[XWJ  (%setup -c)
        5.3.3 \[XApb`𓖂Ă
     5.4 Undocumented (?) %patch functions

  6. pbP[W쐬
  7. 쐬pbP[W̃eXg
  8. ˑ(dependencies)ɂ
     8.1 ˑ(dependencies)
     8.2 zpbP[W
     8.3 ˑ֌W̎IȒǉ

  9. AhoXgER[X
     9.1 pbP[Wւ̓dqI

  10. 悭gu
     10.1 {ŗpꍇ Seg.Fault 鎖ւ̑΍
     10.2 /etc/rpmrc !
     10.3 RPM AbvO[hۂɃG[o

  11. ӎ

  ______________________________________________________________________

  1.  Tv

  1.1.  ̕ɏĂ鎖

  ̕ł́ARed Hat Software ̊JpbP[W}l[Wgc[
  ARedhat Package Manager (RPM) poCiyу\[XpbP[W
  ̍쐬@Ă܂B

  ̕ł́ARPM pAoCipbP[W̃CXg[yэXV
  @A̖₢킹@⌟ؕ@͉Ă܂BɊւ
  ́A RPM-HOWTO <http://www.redhat.com/support/docs/rpm/RPM-HOWTO/RPM-
  HOWTO.html>, RPM-Tips
  <http://www.redhat.com/support/docs/rpm/Tips/RPM-Tips/RPM-Tips.html>
  y rpm(8)  man page (܂̖͂|)QƂĉB
  RPM-HOWTO ́ARp  <ayamagat@phys.metro-u.ac.jp> 񂪓{ɖ|
  ĉ܂B
  rpm(8)  man page ́AM҂|󂵁A Linux-ML ɗĂ
  ܂B

  ȂA̕ł́ApbP[W}l[W``RPM'' Ƒ啶ŕ\LA
  pčoCipbP[W (*.rpm)yу\[XpbP[
  W(*.src.rpm) ƋʂĂ܂B

  1.2.  쌠yєzt

  ̒̕쌠͌ÍayѐΉɂ̂Ƃ܂B

  ܂Á̕AGPL ɏ]ĎRɔztEpł̂Ƃ܂B

  1.3.  tB[hobN

  ́̕AMҒB package-ML ɂ RPM gppbP[WO
  ̎ʂēȂoyђm܂Ƃ߂̂łB

  ]āAM҂̌ɂLq⌇Ă܂Ă񂪐
  ̂Ǝv܂B

  ǉׂ𔭌Ȃ́AM҂ɂm点΁A
  ̍XVɒ/ǉsȂĎQ܂B

  2.  RHL ȊÕfBXgr[Vւ RPM ̃CXg[

  RPM Ƃ́ARedhat Package Manager ̗ŁA̖̒ʂ Red Hat Software
  (RHS) <http://www.redhat.com/>  Linux fBXgr[V Red Hat
  Linux (RHL)pɊJꂽc[ŁA\tgEFÃCXg[AێA
  pbP[WOsȂ܂B

  ARPM  RHL ȊOł͎gȂł͂܂BނARHS ̖
  XlXȕŌĂ悤ɁAũfBXgr[Vłe
  Ɏgv̂ł (ہAŋ߂ł́AƂ闝R Debian fBXg
  r[V RPM ̃oCipbP[WʂĂł)B
  ARed Hat ȊÕfBXgr[VgpĂ RPM e
  ɎgpłlɁARPM ̃oCi(RPM p) CXg[
  @(݂̂Ƃix86A[LeN`݂̂ł)pӂĂ܂B

  ̐߂ł RHL ȊO ix86 A[LeN`pfBXgr[V
  RPM CXg[@܂B RHL fBXgr[V
  pẮARPM CXg[Ă܂A̐߂͔΂č\
  ܂B (AgpĂ RPM Â̂ŁA̕ŐĂ
  @\ĝɎgȂAƂꍇ́ARed Hat gɂ RPM 
  AbvO[h@ɏ]ĉB)

  2.1.  Kvȃt@C

  RPM gp邽߂ɂ́A

  o  GNU cpio (version 2.4.1 ȍ~̂)

  o  rpm-2.2.9-1.i386.cpio.gz

     KvłB̃t@C

       Red Hat ̖{ƃ~[TCg <ftp://ftp.redhat.com/pub/redhat/code/rpm>

  yсÃ~[TCg̑ΉfBNg (Ⴆ΁A{ȂA

       KDD ̃~[ <ftp://ftp.lab.kdd.co.jp/OS/Linux/packages/red-
       hat/code/rpm>

  )ɂ܂B

  g̃VXeɊ cpio CXg[ĂĂAo[W
  ꍇɂ (Ⴆ Slackware 3.0 Ɋ܂܂Ă ``GNU cpio version
  2.3'') RPM p --quiet ƂIvVĂȂ̂ RPM
  2.2.9 Ƒgݍ킹Ă͎gpł܂B̏ꍇ́AL~[TCg
   cpio  ftp A݃CXg[Ă cpio ƓꊷĂ
  B

  2.2.  CXg[

  Kvȃt@CAroot ɂȂāA ``/'' fBNg

       gunzip < rpm-2.2.9-1.i386.cpio.gz | cpio -ivumd

  Ɠ͂ĉB

   RPM ̎gpf[^x[Xt@C̏܂傤B

  ܂Aroot ̂܂(CWD ͉ł\܂)A RPM ̎gpf[^x[
  Xt@Cu߂̃fBNg쐬܂傤B

       mkdir /var/lib/rpm

  āA

       rpm --initdb

  Ƃ΁A/var/lib/rpm Ƀf[^x[Xt@C쐬܂B

   RPM ̃CXg[͊܂B RPM pāA.rpm oCi
  pbP[W̃CXg[sȂo锤ł!

  3.  ݒt@Cƍ쐬c[

  3.1.  ݒt@C

  RPM ɑ΂ݒ́A

  o  /usr/lib/rpmrc,

  o  /etc/rpmrc,

  o  $HOME/.rpmrc

     Ƃ(ݒ背ẍقȂ)Oނ̃t@CɂsȂĂAv
     X

     /usr/lib/rpmrc
        RHS ̊߂ RPM ̐ݒ肪LqĂ

     /etc/rpmrc
        TCg̐ݒt@C

     $HOME/.rpmrc
        elɐݒsȂ߂̃t@C

     ƂSĂ܂B̒ŁA/usr/lib/rpmrc RPM pbP[W
     Ɋ܂܂Ă܂A/etc/rpmrc y $HOME/.rpmrc ͊e쐬K
     v܂B (RPM o[W 2.2.7 ȑO /etc/rpmrc ztpb
     P[WɊ܂܂ ̂łAo[W 2.2.8 ȍ~͖]܂ݒ
     lS /usr/lib/rpmrc ɏ悤ɂȂ߁AȂ
     ܂B ``/etc/rpmrc !''  ߂QƂĉB܂Ao[
     W 2.2.8 ł̃oOɂẮA ``RPM AbvO[hۂɃG
     [o'' ߂QƂĉB)

  3.2.  pbP[W쐬c[

  RPM ́AfBtHg(A/usr/lib/rpmrc̐ݒ)ł́ApbP[W쐬c
  [̍ŏʃfBNg

       topdir: /usr/src/redhat

  ƂẢɂ

  o  BUILD

  o  RPMS

  o  RPMS/{i386,axp,sparc}

  o  SOURCES

  o  SPECS

  o  SRPMS

     ƂfBNg𗘗p܂B
     RPM ppbP[W root Ƃč쐬邽߂ɂ͕sł
     ŁAΉfBNgc[쐬ĂĉB

  vX̃fBNg

     BUILD
        \[XWJApb`𓖂āAmake sȂ

     RPMS/{i386,axp,sparc}
        oCipbP[W(*.rpm)u
        (gpĂVXe ix86 A[LeN`ȂARPMS/i386 ɒu
        ܂B)

     SOURCES
        \[Xt@CApb`u
        (``glint'' ̎gpACRp gif t@Cɒu
        B)

     SPECS
        pbP[W쐬p̎dl(spec t@C)u

     SRPMS
        \[XpbP[W(*.src.rpm)u

  ߂ɗp܂B

  ̑ɂAmake ďot@C̉ɁuzIɃCXg[v
  ăoCipbP[W쐬邽߂̃fBNg(``BuildRoot:'')p
  ܂B́A쐬epbP[Wɐݒł܂̂ŁA
  ``spec t@C'' ɐ܂B

  3.3.  lp쐬c[

  ȏ̃fBNgc[L΁Aroot ƂăpbP[W쐬鎖
  o܂B

  A/usr/src ȉɂ(炭)݌̖ʃ[Uuv
  ̃z[fBNgȉɃpbP[W쐬pfBNgc[ݒ
  ARPM păpbP[W쐬鎖o܂B

  pbP[W쐬pfBNgc[ʃ[Ũz[fBNgȉ
  ɐݒ肷ɂ́Ã[U $HOME/.rpmrc t@C

       topdir: /home/hogehoge/<mybuilddir>

  ƏĂA<mybuilddir>ȉ BUILD, RPMS,... ƂTufBN
  g쐬ĂΗǂ̂łBł́A[U hogehoge ̃pbP[W
  쐬pfBNgÃz[fBNg̉ <mybuilddir> ɐݒ
  Ă܂ (ܘ_A<mybuilddir> ͂Ȃgpۂ̍쐬pfBN
  gɒuĉ)B

  ȌA /home/hogehoge/<mybuilddir>  <topdir> ƋLq܂B

  4.  pbP[W쐬̏ I (pb`̍쐬)

  4.1.  ܂ make o悤...

  ܂́AIWĩ\[XWJAmake olɂ܂傤B

  ł́A\[Xt@C harehore-1.23.tar.gz Ƃt@Cɕۑ
  ĂƂ܂B

  1. <topdir>/SOURCES  harehore-1.23.tar.gz ė܂B

  2. <topdir>/BUILD ŁAIWi\[XWJ܂BKv(\tg
     ɑ΂)pb`Ă܂傤B
     (VɃfBNgAɃt@CWJûłȂvA[
     JCȕꍇ́AX̂߂ ``harehore-1.23'' ƂfBNg
     쐬ÃfBNgɈڂēWJĉB)

  3. fBNg ``harehore-1.23'' ̖O ``harehore-1.23.orig'' 
     ύX܂B

  4. 1. ̑JԂAĂ ``harehore-1.23'' Ƀ\[Xt@CW
     J܂B

  5. ``harehore-1.23'' ɈڂA܂make o悤ɂȂ܂ŕύX
     ܂B

  6. ܂ make o悤ɂȂAmake clean ̑ɂ\[XE
     fBNg *.o ApbP[W쐬ׂ̈̃pb`
     A<topdir>/SOURCES ɒu܂B
     ̂߂ɁA<topdir>/BUILD 

       diff -uNr harehore-1.23.orig harehore-1.23 > ../SOURCES/hare-
       hore-1.23.patch

  ƂĉB

  4.2.  uzvCXg[

  RPM ́Amake ďooCȋxVXeɃCXg[
  ApăoCipbP[W܂BAł́AVX
  eɊɃCXg[Ăt@C㏑Ă܂\
  ܂BׂɁAfBNgw肵ACXg[
  fBNgc[̍ŏʃfBNgɌĂāÃfBNg
  ȉɁuzIɁvCXg[AoCipbP[W쐬鎖ł
  ܂B

  ŏʃfBNg̎ẃAImakefile pĂvȌꍇ
  ϐ DESTDIR ŁA܂ GNU ̃\tg̏ꍇ Makefile ̒ PREFIX
  (prefix) Ŏw肷鎖o܂B

  A̗lȋ@\pӂĂȂꍇ́ACXg[fBN
  gc[̍ŏʃfBNgwł悤ɁA Makefile 
  Ă܂傤B

  Ⴆ΁Aȉ̗lȉzI Makefile ̈ꕔ

  ----------
  BINDIR=/usr/local/bin
  LIBDIR=/usr/local/lib/harehore
   .......
  install :
          install -s harehore ${BINDIR}
   .......
  ----------

  ɑ΂ẮA

       ----------
       installprefix=$(ROOT)
       BINDIR=$(installprefix)/usr/local/bin
       LIBDIR=$(installprefix)/usr/local/lib/harehore
        .......
       install :
               install -s harehore ${BINDIR}
        .......
       ----------

  ƂlɕύXsȂĉB

   Makefile Ɏ{ύXApatchɂ <topdir>/SOURCES ɒuĂ
  ܂傤B (̕ύX{ĂO߂̍Ōŏqׂ ``diff'' ̑
  sȂ patch ̂ł\܂B)

  5.  pbP[W쐬̏ II (spec t@C̋Lq@)

  ͂悢A.rpm y .src.rpm 쐬ׂ́udlvł spec
  t@C쐬܂B

  5.1.  spec t@C̗

  YY spec t@CɋLqׂڂ̐𗅗񂵂Ă
  ɂł̂ŁAĐ܂傤B

  ł́A҂̈l쐬 plain2-2.54 p spec t@C
  A``plain2-2.54-3.spec'' ɎĐ܂B

  FʏA.rpm ̃t@ĆA
  <pbP[W>-<o[Wԍ>-<[Xԍ>.<A[LeN`>.rpm
  Ƃ܂BႦ΁Ai386 ɍ쐬 plain2 ̃o[W 2.54  3 
  ڂ rpm [Xɑ΂ẮA

       plain2-2.54-3.i386.rpm

  ƂȂ悤ɂ܂B

  ȉɏLspect@C܂BE[͉̐p̃CfbNX
  ŁAۂspect@Cɂ͏Ă܂B

  ---------- plain2-2.54-3.spec ----------
  Summary: Plain2 plain text -> LaTeX/troff converter              1.
  Name: plain2                                                     2.
  Version: 2.54                                                    3.
  Release: 3                                                       4.
  Group: Applications/Publishing/TeX                               5.
  Source: Flux.tokai.jaeri.go.jp:/plain2-2.54.tar.gz               6.
  Copyright:                                                       7.
  Packager: Kazuyoshi Furutaka <furutaka@Flux.tokai.jaeri.go.jp>   8.
  URL: http://Flux.tokai.jaeri.go.jp                               9.
  BuildRoot: /home/furutaka/work/rpm/plain2                       10.
  Patch: Flux.tokai.jaeri.go.jp:/plain2-2.54.patch                11.

  %package docs                                                   12.
  Summary: Documents package of plain2                            13.
  Group: Applications/Publishing/TeX                              14.

  %description                                                    15.
  Plain2 plain text -> LaTeX/troff converter (desc.)              16.

  %description docs                                               17.
  This package contains lots of documentation and Makefile        18.
  for plain2 plain text -> LaTeX/troff converter.

  %prep                                                           19.
  %setup                                                          20.
  %patch -p1                                                      21.
  #%patch -p1                                                     22.

  rm -rf   $RPM_BUILD_ROOT                                        --
  mkdir -p $RPM_BUILD_ROOT/usr/local/bin                          23.
  mkdir -p $RPM_BUILD_ROOT/usr/local/lib/plain2                   --

  %build                                                          --
  cd src                                                          24.
  make                                                            --

  %install                                                        --
  cd src                                                          25.
  make installprefix="$RPM_BUILD_ROOT" install                        --

  %clean                                                          --
  rm -rf $RPM_BUILD_ROOT                                          26.
                                                                  --

  %post                                                           --
  chown -R root.root /usr/local/lib/plain2                        27.
  chown    root.root /usr/local/bin/plain2
  chown -R root.root /usr/doc/plain2-2.54-2                       --

  %files                                                          --
  %dir /usr/local/lib/plain2                                      
  /usr/local/bin/plain2
  /usr/local/lib/plain2/OHP.p2
  /usr/local/lib/plain2/OHP_t.p2                                  28.
  /usr/local/lib/plain2/header.p2
  /usr/local/lib/plain2/header_t.p2
  /usr/local/lib/plain2/jbook.p2                                  
  /usr/local/lib/plain2/supsnum.p2                                --

  %files docs                                                     29.
  %doc doc/*
  ---------- end of plain2-2.54-2.spec ----------

  ł́AeGg[ɂāAԂɐčs܂B

  1.--18. ̓wb_ŁARPM păpbP[W̖₢킹ɑ΂ԓ
  A\[XA[JCuȂǂ̖OLqĂ̂ɗp܂B

  1. ̃pbP[W(spec t@C)̊ȒPȐłB

  2. pbP[W̖OłB

  3. pbP[WɂĂ\[Xt@C̃o[WԍłB
     (Ao[Wԍ̒ɂ̓nCt ``-'' p鎖͏o܂
     B悤Ȃ̂ŁAɃA_[XRA ``_'' gĉ
     B)

  4.  (.rpm y .src.rpm)pbP[W̃[XԍłB
     (\[X̃o[WƂ͊֌W܂B)

  5. Red Hat LiNUX ł̃pbP[W̕ނłB
     ({pztpbP[WW쐬鎞́AƎ̕ނl
     ǂł傤BRHL ł́A Extensions/Japanese ƂKwL܂B
     (Aɂ ktermL܂(^^;;)

  6. {́AIWĩ\[Xt@C̈ꎟzz ftp TCgLq
     B
     Â悤ɋLqAA topdir: ̉ SOURCES fB
     NgɃ\[Xt@CuĂΖ薳lłB)

  7. 쌠LqĂ܂B

  8. ɂ́uRPM pbP[ẄێvsȂĂl̖OƓdq[
     AhXĂ܂B
     (AĂĂ rpm -qił͏񂪕\܂
     B)

  9. ɂ́ApbP[W̃\tgEFAɂĂ̏񖔂͕ւ URL
     Ă܂B
     I RPM ̃^Og\邻łB
     (̃^OA8. Ɠl rpm -qi ł͏񂪕\܂B)

  10.

     oCiEpbP[W쐬ׂɁuzIɁvCXg[sȂ
     ۂ́AŏʃfBNgw肵܂B

  11.
     pb`̒uꏊLq܂B
     (``Source:''(\[X̒uꏊ)ƓlɁA̗lȏŎw肵A
     <topdir>/SOURCES Ƀpb`t@CuĂ΁A薳삷
     悤łB)

     12.--14. ́A\[XɊ܂܂t@C̈ꕔʂ̃pbP[WƂ
     ̃GgłB(ׂẴt@CPpbP[WƂꍇ͕Kv
     ܂B)
     ̗lɂꍇ́A(̗̏ꍇ) t@C܂܂Ȃ
     plain2-2.54-2.i386.rpm ̑ plain2-docs-2.54-2.i386.rpm Ƃ
     t@Ĉ݂܂񂾃pbP[W쐬܂B

  12.
     docs ƂʃpbP[W쐬鎖錾܂B

  13.
     ʃpbP[W̓e̊ȒPȐLq܂B

  14.
     ʃpbP[Wɑ΂镪ނLq܂B(̗ł͓)

  15.
     C̃pbP[W(̗ł plain2-2.54-2.i386.rpm)̐̃^O
     łB

  16.
     C̃pbP[W̋@\(At@xbg 50 x) Lq
     B

  17.
     TupbP[W(̗ł plain2-docs-2.54-2.i386.rpm)̐̃^
     OłB

  18.
     TupbP[W̋@\ȂǂLq܂B

  19.
     \[X BUILD fBNgɓWJApb`𓖂ĂA̍Ɠe
     LqĂ߂̃^OłB

  20.
     ۂɃ\[XWJApb`𓖂Ắׂu}NvłBe
     ́AIvVł́u\[XWJAofBNg cd 
     vƂłB

     IvVɂ
      -n <name>, -c, -b #, -a #, -T, -D AvXA

     -n <name>
        \[XWJ cd fBNg <name> Ƃ܂B
        fBtHgł $NAME-$VERSION łBɂ́AႦ $NAME,
        ${NAME}${VERSION} Ƃ鎖o܂B
        (RPM-HOWTO ɂ͂Ă܂ $NAME  $RPM_PACKAGE_NAME
        ƏȂƃ_ȗlłB)

     -c \[Xt@CWJuOɁvAw肵fBNg쐬A
        cd ܂B -n <name> IvVƑgݍ킹

          %setup -n <name> -c

     Ƃ鎖ɂA<name> ƂfBNg쐬A cd l
     ɂ܂B

     -b #
        WJfBNgcduOɁv # Ԗڂ̃\[X(Source#:)W
        J܂B

     -a #
        WJfBNg cd uŁv # Ԗڂ̃\[X(Source#:) 
        WJ܂B

     -T fBtHgł́A%setupuɁv ``Source:''Ɏꂽ
        \[XWJĂ܂܂BŁÃt@CL鎞́A
        Ԗڈȍ~%setup ł͂̃IvVw肵āAĂ``Source:''
        WJȂlɂ܂Bɐ悾%setup-b 0  -a 0 
        w肵āAC̃\[Xû݁vWJĂȂĂ͂Ȃ܂
        B

     -D fBtHgł́A%setupuɁvBUILD fBNgɓWJ
        Ă܂܂BŁÃIvVw肵āAԖڈ
        ~̃\[XWJۂ(BUILD ɍ쐬Ă)\[XfB
        NgȂlɂ܂B

     Ƃ@\Ă܂Bȏ̃IvVgp@̗̋ ``%setup
     }ÑIvV̎gp'' ߂ɂĉĂ܂̂ŁAQ
     ĉB

  21.
     pb`𓖂Ă邽߂́u}NvłB̃IvV鎖
     o܂B

     #  wb_ Patch#: ŎĂ # Ԗڂ̃pb`𓖂Ă܂B

     -p #
        patch(1) R}hɓnׂAщz\fBNg̊Kw
        # Ŏw肵܂B

     -P fBtHg̓ (Patch  Patch0𓖂Ă) }~A
        C̃\[XG[WJł(Ԃl 0)m߂܂B
        %patch #  -P Ƃ %patch# Ǝw肷鎖o܂B

     ̑ɂAɋLqĂ͂Ȃg̏o@\/IvV
     悤łB ``Undocumented(?) %patch functions''߂Q
     ĉB

  22.
     RgłBRgAEgɂ͍s̍ŏ̕ '#' ɂ܂B

  23.
     uzIɃCXg[vfBNgAVɍ蒼
     ܂BŁARPM_BUILD_ROOT ́Awb_ ``BuildRoot:'' ɂ
     w肵fBNgɓWJ܂B

     ̂悤ɁA%prep  %buildƂe^O̒ł shell R}h
     ĂĎs鎖o܂B

  24.
     %build ͎ۂ make sȂߒ^OłB

  25.
     %install ́ACXg[ߒōsȂƂLq^OłBA
     uBuildRoot: Ŏw肳ꂽfBNgȉɉzIɃCXg[v
     sȂĂ܂B

  26.
     pbP[W쐬IɍsȂLq^OłBĂ\
     Bł́AzCXg[fBNg̏sȂĂ
     B

  27.
     oCiEpbP[W̃CXg[IɐݒXNvg𑖂点
     ߒ̂߂̃^OłB
     (ł́Aʃ[UpbP[W쐬Ă邽߂ɁAt@C̏
     L҂쐬҂ɂȂĂ܂Ă̂ŁAL҂ root ɕύXĂ
     B)

  28.
     %files ́ÃpbP[WLt@CXgĂ߂̃^
     OłBt@Cǂ̃pbP[W̏Lł邩₢킹
     ApbP[W폜ۂȂǂɗp܂B

     ̍ہAet@C %dir, %doc %config ̈Ăo
     ܂B

     %dir
        tꂽfBNgû݁ṽpbP[WL̂̂
        邱Ƃ܂BtɃfBNgw肷ƁA
        fBNgûׂẴt@CṽpbP[Wɑƌ
        􂳂ACXg[܂B

     %doc
        t@Cł鎖܂BfBtHgł
        /usr/doc/$NAME-$VERSION-$RELEASE ɃCXg[܂B

     %config
        ݒt@Cł鎖܂BAbvO[hɂ́AÂ[
        XpbP[Wł̈tꂽt@CɕύXĂ
        ꍇ͂̂܂܏AύXĂꍇ̓t@C
        .rpmsave tĕۑ܂B

  29.
     TupbP[W(̏ꍇ docs) ̏Lt@C߂́A
      %files ^OłBTupbP[WȂꍇ %doc doc/* ̍s
      27. Ɋ܂߂ĂΗǂłB

     ǂłH܂H

  5.2.  ɓoꂵĂȂ^O

  ŗpĂȊOɂAȉ̂悤ȃ^O܂B

     %pre
        CXg[OɍsȂLq^O

     %preun
        ACXg[OɍsȂLq^O

     %postun
        ACXg[ɍsȂLq^O

  Ⴆ΁A%post ɂ́Auʃ[UƂč쐬߃t@C̏L҂
  ̃[UɂȂĂ܂Ăv̂ chown ꍇA chmod 
  Ȃǂɗp鎖o܂B

  5.3.  %setup }ÑIvV̎gp

  5.3.1.  \[X̃fBNgw肷  (%setup -n <name>)

  %setup ZNV -n IvVgƁA\[XWJ cd
  A܂ %build ōƂfBNg̖Ow肷邱Ƃł
  B

  kon ̃\[X(kon-0.99.4g.tar.gz) Ɏ܂傤B̃\[Xt@C
  WJƁA

  drwx--x--x manabe/dsl        0 Apr 17 16:06 1996 kon/
  drwx--x--x manabe/dsl        0 Apr 17 00:53 1996 kon/font/
  -rw------- manabe/dsl     4552 May  8 12:39 1994 kon/font/minix.c
  -rw------- manabe/dsl      491 Apr  6 12:57 1996 kon/font/Makefile
  (ȉ)

  ƁAkon ƂfBNg̉Ƀ\[Xt@CWJ܂B

  ARPM  ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION} ƂfBN
  gȉɃ\[XWJĂ̂ƂāA %setup }Ns
  ͂̃fBNg cd 悤Ƃ܂B

  ̏ꍇ́AP %setup Ƃ̂ł͂ȂA %setup -n kon Ǝw肷
  ΁AL\[XWJ kon ƂfBNg cd ܂B
  A%build̍ۂ̃fBNgōƂ܂BɁȀꍇ
  $RPM_PACKAGE_NAME = kon ł̂ŁA

       %setup -n $RPM_PACKAGE_NAME

  Ƃ鎖o܂B

  ݂ɁARPM ̒Œ`ĂāAspec t@C̒Ŏgo
  ƂĂ͈ȉ̗lȂ̂悤łB (g͕M҂̈l̊ł̗
  łB)

       RPM_ARCH=i386
       RPM_BUILD_DIR=/home/ishioka/local/work/package/redhat/BUILD
       RPM_BUILD_ROOT=/home/ishioka/local/work/package/rpm-tmp
       RPM_DOC_DIR=/usr/doc
       RPM_OPT_FLAGS=-O2 -m486 -fno-strength-reduce
       RPM_OS=Linux
       RPM_PACKAGE_NAME=kon
       RPM_PACKAGE_RELEASE=0
       RPM_PACKAGE_VERSION=0.99.4g
       RPM_ROOT_DIR=/home/ishioka/local/work/package/rpm-tmp
       RPM_SOURCE_DIR=/home/ishioka/local/work/package/redhat/SOURCES

  5.3.2.  fBNg쐬Ă\[XWJ        (%setup -c)

  %setup -c gƁA܂\[XWJfBNg쐬A
  cd ƂŃ\[XWJĂ܂B Ⴆ΁Axc32.tar.gz ̏ꍇA
  \[XWJƎ̂悤ɃJgfBNgɃt@C
  ...

       tar tzvf ../SOURCES/xc32.tar.gz
       -rw-rw-r-- 0/1            3343 Jun 14 07:53 1991 .autocis
       -rw-rw-r-- 0/1            1152 Jun  6 10:56 1991 .uni
       -rw-rw-r-- 0/1             824 Jun  6 10:56 1991 .callhq
       -rw-rw-rw- 0/1            4127 Aug 25 10:17 1991 Makefile

  ̗lȏꍇ́A

       %setup -c -n xc-3.2

  Ǝw肵āA܂ xc-3.2 ƂfBNg cdAɓWJ
  ܂BƂ͕ʂ̏ꍇƂȂłB

  5.3.3.  \[XApb`𓖂Ă

  ȉ̂悤ɕ̃\[XɓWJ邱Ƃł܂.

       Source:  xc32.tar.gz .......... C̃\[X
       Source1: xc32pat.tar.gz ....... Tu\[X1
       Source2: xc32news.tar.gz ...... Tu\[X2

       %prep
       %setup -c ..................... (1)
       %setup -D -a 1 -T ............. (2)
       %setup -D -a 2 -T ............. (3)

  (1) ł C̃\[X(Source: Ŏw肵) WJĂ܂B xc
  ̏ꍇAJgfBNgɃt@ĈŁA -c IvVŐ
  fBNg쐬A cd œWJĂ܂B

  (2), (3)ł̓Tu\[XWJĂ܂A(1) Ɠl̗R
  -c tĂ܂B܂, ꂼ Source[12]: w肷邽߂ -a #
  IvVgĂ܂Bł́A-D IvVgāA (1)œWJ
  fBNgĂ܂ȂlɂĂ܂BĂȂ
  ƁAWJC̃\[XĂ܂̂łI܂AP
  -a 2 Ƃw肷ƁA Source2 u Sourcev WJĂ܂
  ŁA-T IvVw肵Ă܂B

  5.4.  Undocumented (?) %patch functions

  %path }ŃApb`t@CkĂĂ삷悤łB
  (I ``gzip -dc <PatchFile> | patch ...''  sȂĂB)

  ܂A%patch}ÑIvVƂẮA undocumented ł͂܂A
  L̗l patch(1) IvVw肷鎖o悤łB

     -b xxx
        obNAbvƂĕۑt@C̊gq .orig  .xxx 
        ύXB

     -R o[Xpb`{B

     -E pb`𓖂ĂʋɂȂt@C폜B

  6.  pbP[W쐬

  spect@CĂ܂΁AƂ <topdir>/SPECS Ɉڂ RPM 
  găpbP[W쐬邾łB

  RPM \zR}ḧʓIȌ`

       & rpm -bO [쐬IvV] <spect@C>+

  łB

  [쐬IvV] man page ̖|󓙂QƂĒƂɂāAł
  -bO ̕܂B

  -bO  spec t@CŋLqǂ̉ߒ (^O)܂ōƂsȂw
  肷̂łB

     -bp
        %prep ߒ܂ŁAA\[XWJăpb`𓖂ĂƂ܂ō
        ƂsȂ܂B

     -bl
        %files ŋLqꂽt@C̃XǧsȂ܂B

     -bc
        %build ߒ(ʏ͎st@C make Ƃ)܂ōsȂ
        B

     -bi
        %install ߒ(ʏ make install sȂ) ܂łsȂ܂B

     -bb
        (%prep, %build, %install sȂĂ)oCipbP[W쐬
        ܂B

     -ba
        (%prep, %build, %install sȂĂ)oCiyу\[Xpb
        P[W쐬܂B

   [쐬IvV] ɂĐĂ܂B --short-circuit
  ƁA(-bc  -bi ƂƂɗpꍇ) ̑Ỏߒ炸
  ȂړIƂߒs܂B

  āA-bb ܂ -ba w肵ăpbP[W쐬Ă݂܂H܂
  s΁A

  o  <topdir>/RPMS/<arch> ɃoCipbP[W(xxx.<arch>.rpm)A

  o  <topdir>/SRPMS Ƀ\[XpbP[W(xxx.src.rpm)

     oĂ锤łB

  7.  쐬pbP[W̃eXg

  ułAO̍̂ȂāAvȂ?...v

  eXgɊւẮARPM-HOWTO ƏdȂ̂ŁA߂đqׂ鎖
  ͒v܂...

  ɂ̃eXǵA͂SقȂ}VɃCXg[ĎgpĂ݂鎖
  łB

  (pbP[W쐬)̃}VɃCXg[ăeXg
  A(Ⴆrpm -eƂĂAxx make install}Vł́A
  ݒt@CcĂ肵)Sɂ̓eXg邱Ƃo܂B

  EE...

  e Linuxer ɁuȂ̂Ă݂񂾂ǁAgĂ݂Ȃ?v(
  t𚑂)eXgĂ炤̂ǂ̂ł͂Ȃł傤?  (R
  ȂA Linux box ́̕A̕ʂ̃}VɃCX
  g[Ă݂ΗǂłB)

  A܂FBɓnOɁAŒ

       rpm -qp --scripts <PackageName>

  ƂāA%prey%postCXg[XNvgłƂĂȂς/
  ĂȂ?ʂ͊mFĂȂƁAFBȂ܂!!!

  8.  ˑ(dependencies)ɂ

  8.1.  ˑ(dependencies)

  ͔ɂ΂łAɏグ plain2-2.54-3.spec ō
  TupbP[W plain2-docs-2.54-3.i386.rpm Ɋ܂܂t@C
  plain2 ŉHĂ͂߂ TeX ̃t@CƂȂ邽߁A
  plain2-2.54-3.i386.rpm (plain2 {)CXg[ĂȂ΂Ȃ
  ܂B̂悤ȏꍇɂ́Aspec t@C

       Requires:  plain2

  ƋLĂ΁Auplain2-docs-2.54-3.i386.rpm CXg[邽߂
   plain2 ƂpbP[WCXg[ĂȂĂ͂ȂvƂ
  ˑ֌W𖾎Ăo܂B plain2 CXg[
  ĂȂ̂ plain2-docs CXg[悤ƂƁA

       [root@Flux i386]# rpm -ivh plain2-docs-2.54-3.i386.rpm
       failed dependencies:
               plain2 is needed by plain2-docs-2.54-3

  ƕ\ACXg[͍sȂ܂B(ˑ֌W𖳎Ė
  CXg[Ă܂o鎖͏o܂B) ( : ̗lɁATu
  pbP[W Requires: ɃCpbP[Ww肷鎖o܂B)

  Requires: ̎wɂ̓o[Wԍ܂߂鎖o܂BႦ:

  Requires: perl >= 5.003

  ɕ̃pbP[W Requires: Ɏw肷鎖o܂:

       Requires: perl >= 5.003, python

  ( : pbP[W̋؂ `,' ł ` ' ()łǂłB)

  ƂŁARPM ̃o[Wԍ̐VfASY͑̏ꍇ
  ܂Ałł鎖߂ b tĂꍇA
  ̎͗Ⴆ 5.003b  5.003 VƔfĂ܂܂B
  ̂悤ȎԂ邽߂ɁApbP[WɃVAԍtĂ
  o܂B

       Serial: 19

  ̃VAԍpbP[W Requires: Ŏw肷ɂ

       Requires: perl =S 19

  Ƃ܂B

  8.2.  zpbP[W

  ŁApbP[Wgpɂ͂Ȃ炩 fortran RpCK
  vł邪ARpĈ fort77(RpCƌĂԂȂ) ł g77
  łǂƂꍇzĂ݂܂傤Bꍇɂ́AX̃pb
  P[W (fort77  g77) w肷ɁuȂ炩 fortran Rp
  CvƂĉzIȃpbP[W Requires: Ɏw肷鎖o܂:

       Requires:  fortran

  ̎́Afort77  g77 pbP[W

       Provides:  fortran

  Ƃw肪ȂĂāA̂ꂪCXg[Ă
  ΁AˑAɈˑpbP[W𐳏ɃCXg[(
  Ďgp)鎖o܂B

  8.3.  ˑ֌W̎IȒǉ

  A֗Ȉˑ֌WAS Requires: Ŏw肵ȂĂ͂
  ȂƂA܂ł͂܂B܂ÃpbP[Wˑ
  pbP[WŒׂĒǉĂ̂eՂł͂܂B

  ŁARPM ́ApbP[W̃t@CXgɋLCuKvƂ
  ̂ꍇ́A( so ) Requires: Ɏw肳Ă̂
  􂵂ẴpbP[ẄˑXgɎIɒǉčs܂B܂A
  tɂ̃pbP[W鋤LCu so Iɒǉ
  B

  9.  AhoXgER[X

  9.1.  pbP[Wւ̓dqI

  RPM ō쐬pbP[W{ query ɂ\l
  ǂA܂pbP[W ftp ̍ۂɑĂȂ𒲂ׂ
  ɁAepbP[Wɂ͓dqtĂo܂B

  ݂ (version 2.2.9) MD5, SIZE, PGP ̏T|[gĂ܂B

  MD5, SIZE ̏͏ɍsȂ܂B

  PGP ꍇ̓IvVɂĎw肵܂B (PGP ̌̓fB
  tHgł $HOME/.pgp ɒuĂƑz肵Ă܂A
  PGPPATH ŁA $HOME/.rpmrc t@C pgp_path: Ƃs
  ĂɂĕύX鎖o܂B)

  pbP[W̍쐬Ɠ PGP ɂ́AIvV --sign
  tłB

  ̃pbP[W PGP ꍇ́A

       rpm --resign <package>

  Ƃ܂B

  Ȁꍇ͈ȑOtĂ͏Ă܂܂B
  V PGP ǉꍇ́A

       rpm --addsign <package>

  Ƃ܂B

  (łAȂ̌JJĂȂƁA̐l͊m߂悤
  !!!)

  10.  悭gu

  10.1.  {ŗpꍇ Seg.Fault 鎖ւ̑΍

     Q :
        JE  rpm --help Ƃ Segmentation Fault N
        āARPM ł܂̂ł...
        rpm -ivh <package> ͐ɓ܂B

     A :
        RPM ́AΉ邽߂ GNU gettext utility gĂ
        BāAϐ LANGUAGE, LC_CTYPE, LC_ALL, LANG Ԃɒ
        ׂčsAꂩݒ肳Ăꍇ́AΉ gettext 
        RPM.mo t@C /usr/lib/locale/<lang>/LC_MESSAGES/ ɓǂ݂ɍs
        ܂B

        Ƃ낪Aʏ̓{(JE)ł́ALANG=ja_JP.ujis ɐݒ肵Ă
        ̂ŁA/usr/lib/locale/ja_JP.ujis/LC_MESSAGES/RPM.mo ǂ݂ɍs
        ƁA RPM.mo ߂ Segmentation FaultĂ܂A
        ƂɂȂĂ悤łB

        ]āA``export LANG=''ƂāALANG ɂĂ݂ RPM --help
        ɓ삷΁Ał̂ŁA

          export LANGUAGE=C

     ƂĂΗǂłB́A{ꉻ RPM.mo(M҂̈l
     쐬܂) 

          /usr/lib/locale/ja/LC_MESSAGES/

     ɒuA

          export LANGUAGE=ja

     ȂǂƂĂł锤łB

  10.2.  /etc/rpmrc !

     Q :
        RPM AbvO[h /etc/rpmrc ĂȂ̂łB

     A :
        炭o[W 2.2.8 ȍ~gȂ̂ł傤Bo[W
        2.2.8 ȍ~́A]܂fBtHgݒl /usr/lib/rpmrc ɑS
        ċLqĂ邽߁A /etc/rpmrc ͔ztȂȂ܂B
        _A /etc/rpmrc 쐬ĐݒĂ͗LłB

  10.3.  RPM AbvO[hۂɃG[o

     Q :
        RPM AbvO[hۂɃG[\̂łB

     A :
        o[W 2.2.8 ł́A/usr/lib/rpmrc t@C typo A

          bad option 'arch_cnaon' at /usr/lib/rpmrc:50

     Ɠ{Ă܂܂B

     /usr/lib/rpmrc ̏L ``arch_cnaon'' ƂȂĂӏ
     ``arch_canon'' ɒĉB

  11.  ӎ

  ̕ŁA̋͂̕̕𒸂܂BɊӂ̈
  \Ǝv܂B

     Rp  (Rps傳)
        {ɋLq啔̎̏񌹂ƂȂĂ RPM-HOWTO ̖|
        ̘JƂƂɁAeʂĂǂ݉ŔɗL
        vȎEwE𒸂܂B

       (M傳)
        eǂݒAɗLvȎEwE𒸂܂B

     c C (``'' )
        %patch }N̉Bꂽ@\Ɋւ񂹒܂B

     package-ML ̊F
        {̌ƂȂ鑽̋Mdȏyьo񂹉܂B

     X Ms 
        ܂ܑM҂̋߂ Slackware gĂׂɁAM
        ̎ƂA킸(M҂݂ȂH) 
        ̃eXgsȂĉ܂B

