RPMpbP[W̍쐬

Jun Nishii

Edited by

Yasumichi Akahoshi



Table of Contents
͂߂
XVL^(1999/2/16ȍ~)
rpm֘At@C̐
rpmpbP[W邽߂̏

    ݒ
    makȅ

spect@C

    f[^`
    XNvg
    t@CXg

spect@CƂrpmpbP[W
spect@C̕ϐ`ɂ

    ϐ
    spect@CʂɎgϐ`

TupbP[W̍쐬ɂ
rpmpbP[WƂ̒
rpm-4.0.5ŗpĂGroupꗗ



͂߂

̃hLǵArpmpbP[W̍̏悤ɏ͂߂
łB̃hLgł킩ɂAGĂȂ肷Ǝv
_ɓɒӂďĂ()̂ŁA܂ŉƂȂrpmpbP[WĂ
lɂAɗƂ͂Ǝv܂B

ԈႢ̎wERgEv]΁Ał邾zEPł̂ŁA
͂肢܂B܂Aspect@CƂAƂ킩Ȃ
ƂӌAWłB(M҂͑Ẑ߁AXV͂܂sȂ܂
)B_ł́ArpmbuildɊւĖmłĂArpmpbP[W̃CXg[
̒mAVFXNvg{IȃR}ĥƂ͒mĂƉ肵āA
ȂĂƂ낪܂B

܂ÃhLgł́Aʂ͍Œ̍ڂGȂ\Ȃ̂ŁA rpmpb
P[WɂĂɒm肽ĺA RPM-BUILD-HOWTO (ÍAΉ
AJFɂ܂) Maximum-RPM(płB)ǂ݂܂傤B

ȂA̍̕ŐVłhttp://vinelinux.org/documentations.html ł
B



XVL^(1999/2/16ȍ~)

 E 2004/9/19

      rpmbuild𐄏lAǉB

 E 2004/6/30

      tex`ADocBook SGML`ɕύXB

 E 2000/10/30

      ׂC

      rpm-3.0.5 ȍ~ binary  strip 邱ƂƁAman/info gz邱
        Lq

      Prereq ̐ǉ

      rpm -bp ̐ǉ

 E 2000/3/7

      minor ȃ^C|Lq̏C

      %setup ̋LqC(-a,-b)ђǉ(-q)

      .rpmmacros ̐ .rpmrc ̏ꍇL

 E 1999/9/3

      .rpmmacros ̋Lqǉ(rpm-3.0.x Ή)

      BuildPrereq ɊւLqǉ

 E 1999/2/16

      Summary(ja), %description -l ja, %changelog ɊւLqǉ

      ׂ̑C



rpm֘At@C̐

rpmpbP[W

    oCipbP[WB̍{eł͉܂B

srpmpbP[W

    \[XpbP[WBrpmpbP[W邽߂ɕKvȃ\[Xpb`, spect@C
    ܂ł܂Brpm -ivh <hoge.src.rpm> œWJł܂B(߂Q)

spect@C

    \[Xrpm߂́Amake̎菇pbP[W̏t@CB
    ƁArpmR}hɂrpmpbP[WsrpmpbP[W܂B

Ƃ킯ŁAȉł͎spect@C̏܂B



rpmpbP[W邽߂̏

ݒ

Vine Linuxł́ACXg[ォʃ[UrpmpbP[W̍쐬s
悤ɔzĂ܂Bȉ́AKvȃt@CfBNg폜Ă܂
ꍇ̎QlłB

Note ȉ̍Ƃ́AVine LinuxLvutilspbP[WɊ܂܂mkrpmdirg
     Axɍs܂B[

     $ mkrpmdir ~


     sƃz[fBNgzɕKvrpmfBNgc[
     .rpmmacros쐬ł܂B

     ȂAݒ LANG=ja_JP.eucJP  LANG=C ɂĂB

܂Aȉ̂悤ɁArpmpbP[W邽߂̊𐮂܂傤B

ȉ̂悤ɃfBNg܂B

Vine Linux̃ftHgł/usr/src/vine/ȉɁA BUILD, RPMS/i386, SOURCES,
SPECS, SRPMS ̃fBNgpӂĂ܂B (/usr/lib/rpm/rpmrcɃftHg
LqB architectureɂāAi386̂ɁAsparc肷)

 E RPMS/i386FłrpmpbP[W[܂B

 E SRPMSFłsrpmpbP[W[܂B

 E SPECSFsrpmrpm -ivhœWJƂAspect@C͂ɏo͂܂B

 E SOURCESFrpmpbP[W̂ɕKvȃ\[Xpb`̃ftHg̒uꏊ
    łB܂AsrpmpbP[WWJƂA\[Xt@C͂ɏo͂
    B

 E BUILDFrpmpbP[WƂɁArpmR}h\[XWJAmake
    肷邽߂̍ƂɎgfBNgB tmp݂ȂƂłB

̃fBNg̈ʒuύXƂɂ́A /etc/rpm/macros~/.rpmmacrosŐ
肵܂BႦ΁AɂfBNgS/usr/public/rpmȉɗpӂƂ
ɂ́Aȉ̂悤ɐݒ肵܂B

%_topdir   /usr/public/rpm/


܂AʂɈȉ̂悤ɐݒ肷邱Ƃł܂B

%_rpmdir    /usr/public/rpm/RPMS
%_srcrpmdir /usr/public/rpm/SRPMS
%_specdir   /usr/public/rpm/SPECS
%_sourcedir /usr/public/rpm/SOURCES
%_builddir  /usr/public/rpm/BUILD


rpmdirtopdirݒ肵Ƃɂ́ARPMS/i386(architectureɂĂRPMS/sparc
) ƂȌ݉ȃfBNgĂ̂YȂ悤ɂ܂
B rpmpbP[W鎞rootōsƂ낢֗Ȃ̂łAɊ댯
ł܂B\ȌAʃ[Uō쐬邱Ƃ𐄏܂B̂Ƃɂ́A~
/.rpmmacrosݒ肵āÃz[fBNgȂǂɂ̃fBNgp
܂傤B

ȉł́AŐfBNgPBUILDƂASOURCESƌĂт܂B



makȅ

܂A쐬rpmpbP[W邽߂́A\[XɂāA make,
make install ł悤ɁA蒼āApb`pӂ܂BIWĩ\[XE
fBNghoge.org/AC\[XEfBNghoge/ƂƁA

diff -uNr hoge.org/ hoge/ > hoge.patch


Ƃpatch܂B MakefileƂʂdiffƂĂǂłB\[
Xƃpb`͑O߂Őݒ肵SOURCES̃fBNgɂ܂B

rpm鎞ɂ́Ax\[X make install āȀo̓t@CW߂邱
ƂɂāArpm\z邱ƂɂȂ܂ (̍Ƃ͎Iɍs܂Bq)B
A make install ŁAVXe̊t@C㏑ꂽ肵A
ƂĂ߂łˁB

̂悤ȂƂrpmpbP[W\z邽߂ɁAwfBNg[
gfBNg"/"Ƃ݂ȂāẢɃCXg[sȂ, ɃCXg[
ꂽt@CƂrpm\z邱Ƃł܂B\[XɂẮAႦ
MakefilẽIvVwŁA

make DESTDIR=/tmp/rpm-root/usr/local install


Ǝw肵/tmp/rpm-root/ȉɃoCiEc[ł̂Ă
܂ȀꍇMakefileƏC邱ƂɂȂ܂B̃pb`p
܂傤B



spect@C

āArpmpbP[W쐬邽߂ɂ́Aspect@CLqȂƂ܂B
spect@Cm邽߂́A߂́AMaximum-RPMǂނƂłB
łA悭܂Ƃ܂ĂāApǂ݂₷łBĂƂɏEǂ݂΂낢
킩܂BꂩAÍƐΉRPM-BUILD-HOWTOɂ܂B
rpm -ivh fugafuga-version-revision.src.rpm ƂāAłĂspect@C
Ă̂ǂłB

ȉɂTvƂĊȒPspect@CA̓eɂĐ܂B
ȂƂȂ킩AȃpbP[WĂ݂, ɂ낢肽Ȃ
ɂ悤documentǂłB

---------spec t@C̗ (#n܂śARgsł)--------
#(1)f[^`
Summary: hoge is a harehare horehore
Name: hoge
Version: 1.1
Release: 1
Source: hoge-1.1.tar.gz
Patch: hoge.patch.gz
License: distributable
Group: Local
Packager: Jun Nishii <jun@vinelinux.org>
Buildroot: %{_tmppath}/%{name}-root
Summary(ja): hoge  harehare  horehore ł.

%description
Hoge is a harehare horehore and convenient for fugafuga.
Enjoy!

%description -l ja
hoge  harehare  horehore ŁAfugafuga ƂȂǂƂĂ֗ȃc[
łB݂ȂłȂ悭g܂傤B

%changelog
* Tue Feb 16 1999 Jun Nishii <jun@vinelinux.org>
- added Japanese messages

* Mon Feb 15 1999 Jun Nishii <jun@vinelinux.org>
- first release for version 1.1

#(2)XNvg
%prep       #rpm\zȌłB
rm -rf $RPM_BUILD_ROOT

%setup      #\[XBUILDɓWJ܂B
%patch -p1  #pb`Ă܂B

%build      #makê߂̎菇܂B
make
(cd man; make man)

%install    #install̂߂̎菇܂B
make prefix=${RPM_BUILD_ROOT}/usr/local install
(cd man; make prefix=${RPM_BUILD_ROOT}/usr/local install.man)

%clean      #rpmƂ̌nłB
rm -rf $RPM_BUILD_ROOT

#(3)t@CXg --------------
%files
%defattr(-,root,root)
%doc README
%doc docs/
/usr/bin/hoge.bin
/usr/lib/hoge/
/usr/man/man1/hoge.1.gz
%dir /usr/lib/hoge/
%config /usr/lib/hoge/fuga.conf

---------spec̗͂܂-----------------------------------------


spect@ĆA(1)f[^`ƁA(2)܂܂ȍƂ邽߂scriptX
NvgAāA(3)oCipbP[Włrpm\t@C񋓂
t@CXgȂ܂Bł́A̗݂ȂAe̐܂
B



f[^`

f[^`lsm̂悤ɁApbP[WɊւL镔łB̊e^O
̈Ӗ͈ȉ̒ʂłBXNvgŊϐɑėp̂́A
̊ϐĂ܂B

Summary

    pbP[W̐ȒPɈsŏ܂B^Cĝ悤spect@C̈s
    ڂɏƂłBpŊȌɏ܂傤BSummarýAۉ@\
    ĂA Summary(ja)̂悤ɁA{̃T}[ĂƁAϐ
    LANGUAGE  ja Ȏɂ́A{̂ق\܂BASummary(ja)
    pӂƂɂApSummary͕KpӂĂB܂A{ꂪspect
    @C̎n߂̕ɂƁArpmR}hG[oƂ̂ŁA Summary
    (ja)̓f[^`̉̂قɏق悤łB܂A{ꃁbZ[
    W͕K EUC œĂB

Name

    rpmpbP[W̖OłBϐRPM_PACKAGE_NAMEɐݒ肳܂B

Version

    \[X̃o[W܂BϐRPM_PACKAGE_VERSIONɐݒ肳܂B

Release

    \[XrpmpbP[W̃[XԍłBϐ
    RPM_PACKAGE_RELEASEɐݒ肳܂B

Source

    rpmpbP[W\[XłB the Section called ݒ in the
    chapter called rpmpbP[W邽߂̏Őݒ肵SOURCES̃fBNg
    ɒuĂ܂傤B\[X̓𖾎邽߂ɁA

    Source: ftp://ftp.hogehoge.org/hoge-1.1.tar.gz


    ƏĂƕ֗łBł\[XȂ΁ATv̂悤Ƀt@C
    ݂̂Ă܂B

    ̃\[Xt@CƂɂ,

    Source0: ftp://ftp.hogehoge.org/hoge-1.1.tar.gz
    Source1: ftp://ftp.hogehoge.org/hoge-devel.tar.gz


    Ƃӂɔԍӂė񋓂܂B(Source0  Source ͓Ӗł)

Patch

    Őݒ肵\[XɂĂApb`t@CłBSourceƓłB
    ̃pb`t@CfBNgSOUCESɒuƂ܂傤BƂɂA
    SourceƓlɔԍӂė񋓂ł܂B

License

    쐬rpmpbP[W̃CZX܂BƂ̃\[X COPYING Ȃǂ
    t@CQƂAł邾Ȍɏ܂傤B

Group

    pbP[W̃JeS[܂BglintgƂɂ́AGroup
    ƂÂĕނāAACR\܂Bǂ킩ȂA
    glintNāAACRĂ݂܂傤B the appendix called
    rpm-4.0.5ŗpĂGroupꗗɂRHLŗpĂO[v̈ꗗ
    Blgprpm̂Ƃ́Aڂ͂Ƃ肠LocalƂɂĂ܂܂Bl
    ɔzzƂɂ͐^ʖڂɍl܂傤B

Packager

    rpmpbP[WĂ邠Ȃ̖OłBEmail addressĂƁAv
    ʂƂoO񍐂Ƃ炦ĊƂ܂B

Buildroot

    the Section called ϐ in the chapter called spect@C̕ϐ`
    ɂĂŐ, zCXg[̂߂̃fBNg܂B
    Buildroot̐ݒsȂ΁ARPM_BUILD_ROOTnullłBł́A%
    {_tmppath}, %{name}Ƃ}N𗘗pāA Buildroot`Ă܂B%
    {_tmppath}/usr/lib/rpm/macrosŒ`ĂA /var/tmpw܂B%
    {name}́ApbP[W̖O}NłBė̏ꍇBuildroot  /
    var/tmp/hoge-rootƂfBNgwƂɂȂ܂B}Ng킸ɒ
    ڂ̃fBNgĂ\܂B

%description

    ̃^ỎɁArpmpbP[W̉܂Brpm -qip <rpm-name>ŏoĂ
    łB̃^Oۉ@\Ă܂B{ꃁbZ[W\
    Ƃɂ́A %description -l ja p܂BA{ꃁbZ[Wp
    ƂɂAKpꃁbZ[W͏Ă܂傤.

%changelog

    ɂ́AXṼOĂ܂BK{ł͂܂񂪁AĂȂ
    ƁAǂꂪȂ񂾂킩ȂȂ肷̂ŁAǗyɂȂ悤ɏo邾
    Ă܂傤BȂ, %changeloǵAspect@C̈ԉ(t@CX
    g̉)Ɏė邱Ƃł܂.

Tvspect@Ĉ悤ȎwŁArpmpbP[WƁA
hoge-1.1-1.i386.rpm ƂOrpmł܂ (architecturei386̏ꍇ)B

Tvɂ͏Ă܂񂪁Aɂȉ̂悤ɂ낢ȃ^O܂B
ݒ肵ɎQlɂĉB

Requires

    쐬ĂrpmpbP[W삷̂ɕKvȃpbP[W܂BႦ
    A

    Requires: gs


    ƂāAgsCXg[Ă邱ƂKvȂƂ܂B܂A<,
    >, =, >=, <=gĕKvȃo[WA[XԍƂo܂B
    ́AZq̗ɂ͕KXy[XĂB (Ȃƈ̖O
    ĔFĂ܂܂)

    Requires: ghostscript = 5.10


    Ƃghostscript̃o[W5.10KvȂƂA

    Requires: ghostscript >= 5.10


    Ƃ5.10ȏオKvȂƂ܂BKvȃCuƂł
    B RequireŝƂɂ́A

    Requires: ghostscript >= 5.10, ghostscript-fonts, VFlib = 2.24


    Ȃǂ̂悤ɁA'',''ŋ؂ĕׂ܂B

    rpmpbP[WbuildƂɂ́ÃpbP[WɊ܂܂oCi̎s
    KvȃCuAIRequiresɉ܂(mɂ͕KvȃCu
    soname܂)B rpmpbP[WinstallƂɁAKvȃCu
    VXeɂȂƁA libhoge.so is neededƂāA܂A
    libhoge.soȂƂpbP[WɓĂ邩킩炸ɍ邱Ƃ悭
    ŁAKvȃpbP[WRequiresɏ悤ɐS܂傤B

Provides

    CXg[hoge-1.1-1.rpmgsKv(Requires)ƂĂƂ܂傤B
    AVXeɂgs͂ȂAɓ{ꉻꂽgsłgsjCXg[
    ĂƂ܂B̂ƂAhoge.rpmCXg[悤ƂrpmR}
    h̓G[EbZ[Wo܂B̂悤ȃgu邽߂ɂ́A
    dvipskƂɁA

    Provides: dvips


    ƏĂƁAdvipskdvipspbP[W񋟂邱Ƃ܂B܂A
    Avpdfǂރc[RequiresƂɂ́A xpdfgs(pdfΉ)Provides
    

    Provides: pdf-reader


    ƉzIȃpbP[W(zpbP[W virtual package)ĂƁAȂ
    炩pdf-readerCXg[Ă邱Ƃvł܂B

Conflicts

    RequiresƋẗӖ܂BȂ킿AłȂpbP[Wwł
    ܂Bo[W⃊[XԍwRequiresƓlɂł܂BႦΈȉ
    悤Ɏw肵܂B

    Conflicts: fugefuge >= 1.0, fugafuga = 1.2-1


Obsoletes

    ɁApLaTeX2erpmCXg[Ƃɂ́AÂTeX̃pbP[Wł
    ptex̓ACXg[Ƃ܂傤BȂƂɂ́ApLaTeX2espect
    @Cɂ́A

    Obsoletes: ptex


    ƏĂƁApLaTeX2ẽCXg[ptex͏܂B

Prereq

    pbP[W̃CXg[ɁAɃCXg[ĂׂpbP[W
    ܂BႦ΁Agnome-print pbP[WCXg[ƂɁA urw-fonts
    pbP[WCXg[ĂȂƂȂȂ΁A

    Prereqe: urw-fonts


    ƏĂƁA gnome-print̃CXg[urw-fontsɃCXg[
    Ă邩`FbN܂.

BuildPrereq

    pbP[W̍쐬̎ɁACXg[ĂׂpbP[W܂. 
    , pLaTeX2e pbP[W쐬Ƃ, pTeX pbP[WCXg[
    ĂȂƂȂȂ,

    BuildPrereqe: pTeX


    ƏĂƁApLaTeX2e̍쐬pTeXCXg[Ă邩`FbN
    ܂.

Distribution

    쐬rpmpbP[WȂ炩̃fBXgr[VɊ܂܂鎞Ãf
    BXgr[V܂B

Vendor

    쐬rpmpbP[WɊւӔC𕉂VendorłBȂ炩̃vWFNg
    rpmpbP[WĂ鎞ɂ́ÃvWFNg܂傤

Url

    \[X̏񋟂ĂURL܂BႦΈȉ̂悤ɏ܂B

    URL: http://www.fugahogo.com/hogehoge.html


Prefix

    ̃^OgƁArpmpbP[WCXg[鎞ɃCXg[fBNg
    Rg[ł܂BႦ΁A

    Prefix: /usr


    ƂĂāAt@C`

    %files
    /usr/bin/fuga


    ƒ`ĂƂ܂傤B̃pbP[WCXg[鎞ɁA --prefix /
    usr/local ƃIvVw肷ƁA fuga/usr/local/bin/fuga.binɃCXg
    [܂B

BuildArch

    spect@CgĐrpmpbP[W̃A[LeN`wł
    ܂BႦ΁Aelt@CƂVFXNvgƂ΂܂rpmpbP[W
    Ƃɂ́A i386alphaȂǂ̃A[LeN`ɈˑȂnoarchł邱
    A

    BuildArch: noarch


    Ƃӂɖ܂B̂悤ȎwĂnoarch.rpmƂgq
    rpmpbP[W쐬łāA낢ȃA[LeN`ŋpł܂B

f[^`ɂ́Aɂ낢ȏt邱Ƃł܂B MaximumRPM
ĂB



XNvg

f[^`̎́̕Aȉ̂悤%ɕt^O͂܂AAscript
ō\܂BdvȂ̂́Ae^On܂鎟̃^ȎO܂ł́̕AƗ
bashXNvgƂĎsƂƂłB (FȉŁA%setup, %patch̓X
Nvĝ͂܂\^Oł͂ȂAXNvgŋLqȗ邽߂̃}N
łB)

萳mɂ́Ae^Oꂽ #!/bin/sh -e N(RHLł/bin/sh/bin/
bashsym.linkĂ)Aeϐ(RPM_SOURCE_DIRRPM_PACKAGE_NAMEȂ)`
ꂽA^Ỏ̋LqĂXNvgs܂B

%prep

    \[XmakeCXg[ƑȌ̊Jn^OłBȉŐ
    %setup,%patchȂǂ̃}NpAVFXNvgLqāA\[X̓W
    JȂǂs܂BŁA

    %prep
    rm -rf ${RPM_BUILD_ROOT}


    ƂāA${RPM_BUILD_ROOT}(BuildrootŎw肵fBNg) |邱
    ƂłBÂƂɂ́A Buildroot̐ݒɂ͏\Cĉ
    î킩܂ˁHj

%setup

    %prep͂܂XNvgŁA\[XWJ邽߂̃}NłB %setup
    ƃIvVȂŏƁAȉɍs܂B

     1. the Section called ݒ in the chapter called rpmpbP[W
        ߂̏Ŏw肵fBNgBUILDcdB

     2. wfBNg(-nŎwłBftHg̃fBNǵA $
        {RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}Aq) JgEfBNg
        (BUILD)ɑ݂ΏB

     3. SourceŎw肵tar.gz̃\[XWJB

     4. wfBNg(2̎wfBNgƓ)cdB

     5. ȉsB

        chown -R root .
        chgrp -R root .
        chmod -R a+rX,g-w,o-w .


        (FuserrpmbuildƂɂ́Achown root, chgrp root͎s
        Ȃ̂ōsȂBuserbuildƂɂ́A %files%attrŃt@
        C̑ݒsBq)

    hoge-1.1.tar.gzWJƂɁAhoge-1.1/ƂfBNgłȂA
    IvVȂĂȏ̍Ƃs܂AႦ΁A hoge/ƂfB
    NgłȂÃfBNg̉cdł悤ɁA

    %setup -n hoge


    ܂́A

    %setup -n ${RPM_PACKAGE_NAME}


    Ǝw肵܂B

    ̃\[XƂɂ͈ȉɏqׂIvV-a-bg܂BႦ
    SourceASource1ASource23Ƃɂ́A

    %setup -a 1 -a 2 -n hoge


    ȂǂƂ܂B(ȉ̃IvV̎wQƁB)

    %setupɂ͂܂܂ȃIvV܂A\IȂ̂ȉɎ
    B

    -n <fBNg>

        %setups(͑O)cdfBNg(name)w肷B
        ̃IvVȗƂ́AftHg̃fBNǵA $
        {RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}B

    -c

        wfBNg(-nIvVŎw肵fBNg) 쐬
        (create)AcdɃ\[X̓WJ܂B

    -a <#>

        Source0WJAwfBNg(Ɠ)cd(after)A #Ԗ
        ̃\[X(Source#)̓WJ܂B %setup -a 2 -a 3 ƕ-aIvV
        w肳ꂽɂ́A Source0 WJꂽAwfBNg cd A
        Source2ASource3WJ܂B (Source0̓WJ͍ŏ̈KłB)

    -b <#>

        Source0WJAwfBNg(Ɠ)cdO(before)A #
        ԖڂɎw肳Ă\[X(Source#)̓WJ܂B

    -D

        ɏqׂ悤ɁA%setuṕA܂AwfBNg(Ɠ)AfB
        NgBUILD̉ɂ邩ǂ`FbNāA݂ĂA
        폜ĂA\[X̓WJȂǂ̍Ƃs܂B %setup𕡐Ăт
        ꍇA 2ڂ%setupĂ񂾎ɍŏ%setupœWJfBNg
        Ă͍܂B-DIvV́Â悤ȍ폜sȂ悤
        ܂B(܂g܂)

    -T

        \[X̓WJs܂Bɏqׂ悤ɁAIvVw -a 2  -b
        2 ƂƁA Source0Source2Ŏw肵̂WJ܂B Source2
        WJƂɂ́ÃIvVgāA

        %setup -T -a 2


        Ƃ܂B܂A

        %setup -T -c hoge


        ƂƁApbP[W̓WJ͍s킸AfBNghogeāAcd
        ܂B

    -q

        pbP[W̓WĴƂAWJ̏\܂B

    ̑AMaximumRPMƂ낢̂Ă܂B tar.gzłȂ\[Xt@C
    ́A-TIvV𗘗pāAƃfBNgɈړA

    lha x ${RPM_SOURCE_DIR}/hoge.lzh


    ƂēWJ邱Ƃł܂B

    ܂A%setupɑāAbash scriptāA낢ȍƂsƂo
    B

%patch

    %prep͂܂XNvgŁApatchĂ邽߂̃}NƂĂ͂炫
    B̂悤ɏƁA

    patch -p1 -s < ${RPM_SOURCE_DIR}/<PatchŎw肵t@C>


    ƓƂ̂ŁA%patchg%setup̂Ƃŏ̂悤ɏĂ
    łBIvVȂ%patchƏƁA

    patch -p0 -s < ${RPM_SOURCE_DIR}/<PatchŎw肵t@C>


    N܂B%patch%setup͂܂XNvgɊ܂܂APȂ}N
    ƂĂ͂炫܂B SourceƓlɁAPatch0, Patch1,...ƕ̐ݒɑ΂
    ,

    %patch0 -p1
    %patch1 -p1


    Ǝs邱Ƃo܂B%patchɂ-b <name> (obNAbvEt@C̊g
    qwAftHg.orig)Ȃǂ̃IvV܂()B

%build

    \[XmakeXNvg̊Jnł邱ƂA܂A %setupŎw肵f
    BNgcd}NƂĂ͂炫܂Bȉɂ́AmakesƂ̎菇
    XNvgƂď܂B

%install

    t@CinstallXNvg̊Jnł邱ƂA܂A %setupŎw
    fBNgcd}NƂĂ͂炫܂Bȉɂ́Ainstalls
    ̎菇܂BŁAthe Section called makȅ in the chapter
    called rpmpbP[W邽߂̏ŏqׂ悤ɁAf[^`
    BuildrootŐݒ肵fBNg(${RPM_BUILD_ROOT}) ̉ɑSẴt@CC
    Xg[悤ɁAHv܂傤B MakefileZƂɂ́AC
    patch邩ɁAɁA cp, installR}hpinstallXN
    vĝłB

    ȂArpm-3.0.5ȍ~ł́ACXg[ꂽoCi rpmpbP[Wɂi
    KŎIstrip܂̂ŁA %installbainarystripsKv͂
    B

%clean

    rpmƂ̌ñ^ỎɋLq܂B

XNvgɂ^ÓAقɂA낢날܂BƂ΁Aȉ̃^O
͂ꂼCXg[ACXg[ɋNVFXNvgLq
邽߂̂̂łB

%pre

    rpmpbP[WinstallƂApbP[W̓WJOɍsƂB -pIv
    VɂĂ%post̏ꍇiȉjQƁB

%post

    rpmpbP[WinstallƂApbP[W̓WJɍsƂB
    Ƃ΁ACuCXg[鎞ɂ́A

    %post
    /sbin/ldconfig


    ƂƁAldconfigsB܂A

    %post -p /sbin/ldconfig


    ƁA-pIvVpďƁAVFXNvgN邱ƖڃR}
    hsB܂̃R}hrpmpbP[W̃CXg[ɕKvȃR
    }hƂāAo^B

%preun

    rpmpbP[WuninstallƂAWJt@C̍폜OɍsƂB -p
    IvVɂĂ%post̏ꍇƓlB

%postun

    rpmpbP[WuninstallƂAet@C폜ƂɍsƂ
    B -pIvVɂĂ%post̏ꍇƓlB

̃^Oĝ́AƒӂKvłBڂ́Athe chapter called
rpmpbP[WƂ̒ӂQƂĂB

ȏ̃^ÓA쐬rpmpbP[WinstalluninstallƂ́AsX
Nvg̐ݒɂȂ̂ŁA spect@CrpmpbP[WƂɂ́As
邱Ƃ͂܂B

ɁÃpbP[WCXg[ꂽɋNXNvgLqł܂
B

%triggerin

    pbP[WCXg[ĂÁAꂽɋNXN
    vgBƂ΁A

    %triggerin -- hoge
    echo "hoge is installed"


    ƏĂƁApbP[WhogeCXg[ƂɁALbZ[W\
    ܂Bȉ̂悤ɁAo[Wwł܂B

    %triggerin -- hoge > 3.0
    echo "hoge is installed"


    lɂāApbP[W̍폜OɎs%triggerunApbP[W
    폜Ɏs%triggerpostun܂B̃^OɂẮA /usr/
    share/doc/rpm-4.0.5/triggers ɏڂ܂B

ɁA^OɂĒm肽lMaximumRPM܂傤B



t@CXg

%files͂܂镔ŁArpmpbP[Wɂ߂ރt@C񋓂܂B̂Ƃ
ɒӂĂB

 E ɏt@C͏d炢܂B

 E 񋓂ꂽt@ĆA%docŎw肷̂āA %install܂ł̃XNvg
    ̎sɂāALqʂ̏ꏊ(${RPM_BUILD_ROOT}''/''Ƃ݂Ȃ) 
    install̂łȂƂ܂B

 E 񋓂ꂽt@C userID/groupID ĂƁA rpmpbP[W
    buildłȂƂ܂B

rpmR}h́Aspect@CɊÂrpmpbP[WƂɁA (2)Őݒ肵
ÃXNvgsA ${RPM_BUILD_ROOT}Ƃ݂Ȃ%filesȉŎw肳
ꂽt@CAwʒuinstall悤rpmpbP[W
B

 E hLgEt@C̎w

    %docƂ}Np܂Bspect@Ĉ̗悤ɁA%doc READMEƂƁA
    %setupŎw肵z[fBNgREADMEA ${RPM_BUILD_ROOT}/usr/doc/
    hoge-1.1-1/cpꂽ̂A rpmpbP[Wɉ܂B܂%doćAhL
    gt@C̃CXg[ƃpbP[WÔ߂̃t@Cw𓯎
    s}NƂĂ͂炫܂Bȉ̂悤ɁAfBNgƎwł܂
    B

    %doc doc/


 E rpmɊ܂߂t@C̎w

    ̐΃pXŎw肵܂B

      ʃt@C͂̂܂܎wB(/usr/bin/hoge.bin Ȃ)

      fBNgȉ̑SẴt@CrpmpbP[WɂꂽƂɂ́A
        ̃fBNg܂B(^OȂA/usr/hoge/ Ȃ)BACXg
        [ɂ́ÃfBNgƂȂȂ܂B

      ChJ[hg܂B(/usr/hoge/* Ȃ)

    Warning rpm-3.0.5ȍ~ł́Aman t@C info t@C͎I
            gzipňk܂B %filesmaninfõt@C
            ɂ͊gq.gz̂YȂ悤ɂ܂傤B

 E ^Opt@Cw

    %dir <dir name>

        w肵fBNgpbP[WɊ܂߂B

        ``/usr/hoge/'' = ``%dir /usr/hoge/'' + ``/usr/hoge/*''


        Ă񂶂łB

    %config <file name>

        configt@Cł邱ƂBAbvO[hɂoverwriteꂸA
        t@C.rpmsaveOŕۑ܂B

    %attr(<mode>,<user>,<group>) <file name>

        %filesɗ񋓂t@C̃p[~bVuser IDA group IDݒ肷
        BႦ΁A

        %attr(755,root,root) /usr/lib/hoge


        ƂBꕔ̑ȗ(Ȃ)Ƃɂ - gāA

        %attr(755,-,root) /usr/lib/hoge


        ƂB̃^Op邱ƂɂāA rootĂȂlrpm̃p
        bP[WsB

    %defattr(<mode>,<user>,<group>) (rpm-2.5n)

        ̃ftHglݒ肷.

%files̎w͏Xʓ|ȂƂ܂Bڂ́A%install܂ł́A
XNvgƂŁA %filesȉ͉Ȃ܂܁AxAspect@
C rpm build܂B (rpm -bi hoge.spec ɂĂ͎)B̂ƁA
${RPM_BUILD_ROOT}ȉinstallĂt@CA find R}hŌĂ݂
%files̎w܂B



spect@CƂrpmpbP[W

Vine Linux 3.0rpm-4.0.5̗ppbP[W̃rhrpmbuildR}h𗘗p
悤ɂȂ܂BߋƂ̌݊̂Vine Linuxł́ArpmR}hpł
悤ɂȂĂ܂AIɔp~̗\ł邽ߍrpmbuildR}h
gB

spect@ĆAȉ̂悤ɂāArpmpbP[W܂B

 E rpmsrpm肽Ƃɂ́A(build all)

    rpmbuild -ba hoge.spec


 E Ƃ肠Arpm肽Ƃ(build binary)

    rpmbuild -bb hoge.spec


 E srpm肽Ƃ(build srpm)

    rpmbuild -bs hoge.spec


 E rpmsrpm炸ɁApbP[W̓WJĂ݂ (%build̑O܂łs)
    (build prepA%prepsB)

    rpmbuild -bp hoge.spec


    ́Apb`Ƃɕ֗łB

 E rpmsrpm炸ɁAmake܂eXg (build compileA
    %prep,%buildsB)

    rpmbuild -bc hoge.spec


 E rpmsrpm炸ɁAinstall܂ł܂eXg (build install
    A%prep,%build,%installsB)

    rpmbuild -bi hoge.spec


ȏ̃R}hsƁAsegmentation faultNɂ́A the Section
called ݒ in the chapter called rpmpbP[W邽߂̏ŏqׂ
LANG̎wĊmFĂB܂΁AfBNgRPMS/i386rpmpbP
[WAfBNgSRPMSsrpmpbP[Wł͂łB

, tar.gz `̃\[X̒Ɋ܂܂Ă spec t@Cp build 
ɂ́A -b ̂ -t pāA

rpmbuild -ta hoge.tar.gz


ȂǂƂ܂B



spect@C̕ϐ`ɂ

ϐ

XNvg̊e^O͂܂镔́AɂqׂʂƗbash scriptƂ
ē̂ŁA͈͓̔ŁA

TEXMF=/usr/share/texmf


ƕϐ`ėp邱Ƃł܂B

܂Aȉ̕ϐ͊e^OɊϐƂĒ`܂B

RPM_SOURCE_DIR

    fBNgSOURCES\Bthe Section called ݒ in the chapter
    called rpmpbP[W邽߂̏QƁBftHǵA

    RPM_SOURCE_DIR="/usr/src/redhat/SOURCES"


RPM_BUILD_DIR

    fBNgBUILD\Bthe Section called ݒ in the chapter called
    rpmpbP[W邽߂̏QƁBftHǵA

    RPM_BUILD_DIR="/usr/src/redhat/BUILD"


RPM_DOC_DIR

    %docŎw肳ꂽhLgt@CCXg[邽߂̃fBNg
    \B rpmrct@ĆAdefaultdocdirŎw肷BftHǵA

    RPM_DOC_DIR="/usr/doc"


RPM_OPT_FLAGS

    RpCɃRpCɂ킽ftHg̃IvVw\B rpmrct
    @ĆAoptflagsŎw肷BA[LeN`Ɏw肪łBႦ΁A
    %buildɂĈȉ̂悤Ɏg

    make CFLAGS=${RPM_OPT_FLAGS}


    ftHgarchitecturei386̂Ƃɂ́A

    RPM_OPT_FLAGS="-O2 -m486 -fno-strength-reduce"


RPM_ARCH_FLAGS

    buildsȂĂVXẽA[LeN`\ϐBA[LeN`i386
    ȂA

    RPM_ARCH_FLAGS="i386"


RPM_OS

    buildsȂĂVXeOS킷ϐBLinuxȂA

    RPM_OS="Linux"


RPM_BUILD_ROOT

    BuildrootŐݒ肳ꂽzCXg[̂߂̃fBNg\B (the
    Section called f[^` in the chapter called spect@C
    Buildroot̍Q)

RPM_PACKAGE_NAME

    NameŐݒ肳ꂽpbP[W\B (the Section called f[^` in
    the chapter called spect@CName̍Q)

RPM_PACKAGE_VERSION

    VersionŐݒ肳ꂽo[W\B (the Section called f[^` in
    the chapter called spect@CVersion̍Q)

RPM_PACKAGE_RELEASE

    VersionŐݒ肳ꂽ[Xԍ\B (the Section called f[^` in
    the chapter called spect@CRelease̍Q)



spect@CʂɎgϐ`

Ƃ΁Athe chapter called spect@Cspect@C̗̃f[^`
́A versionƂϐݒ肵āAȉ̂悤ɏƂł܂B

Name: hoge
%define version 1.1
Version: %{version}
Release: 1
Source: hoge-%{version}.tar.gz
Patch: hoge.patch


̕ϐ́A%setup%installȂǂ̃XNvgt@C`ȂǁA spect@C
ŜŎĝŁA܂gƃo[WAbvɒǐspect@C
Ɋył܂B



TupbP[W̍쐬ɂ

傫ȃ\[XmakerpmpbP[WƂȂǁArpmpbP[Wɕ
Ȃ邱Ƃ悭܂BƂ΁AmulerpmpbP[WƂɁA
baserpmpbP[Welc܂ł΁Ã\[Xłelt@C͂ȂĂ
mule̎sɂ͖ȂłA mule.rpm  mule-el.rpm ݂ɂ킯ق
܂B܂ACuJpCN[ht@C\[XɊ܂܂
AvP[Vrpm鎞́AAv{̂ hoge.rpm ƁAJҗp
libhoge.a  hoge.hꂽhoge-devel.rpmɂ킯Ƃł傤BhL
g傫ƁAhoge-docs.rpmʂɍ肽Ƃł傤B

Ƃɂ́Aspect@CύX邾ŁATupbP[W̍쐬
邱Ƃł܂B̓Iɂ́ATupbP[W(ł́AhogẽTupbP[W
hoge-docsƂ)̂߂́Af[^`(%package docsł͂܂AGroupSummary
A%description docsȂǂ)ƁÃTupbP[Wɂt@C
%files docs n܂t@CXgt܂B̗́A
RPM-BUILD-HOWTOɂ܂̂ŁÂl͂QƂĂB

A߂łׂ̂悤ɁATupbP[W̍쐬͕KvŏɂƂǂ߂悤S
|܂傤B



rpmpbP[WƂ̒

 1. dv: V{bNEN%postƂŒȂBԈႦĂ(%postł
    NȂ)%preun%postunō폜Ă͂ȂB

    V{bNEN܂ޑSẴt@C%install܂łŃCXg[āA
    %filesɉׂłB(ڂ͌q)

 2. ܂ׂTupbP[WɕȂ

    TupbP[W̍oƁA₽R̃TupbP[Wl
    邪AAbvO[h̃e(rpm -Uspec̏)ʓ|ɂȂ΂肩
    AǂꂪȂ񂾂ȂȂ肷B͕KvŏɁB

 3. %config͗pȂ

    %config𑽂ƁA%filesɂ킩Â炭Ȃ邱ƂA version up
    ̎ɂ̃̕eɘJ͂悤ɂȂ悭ȂBftHĝ܂
    ŏo邾̐lpł悤configt@CpӂA[U
    %config̐ݒ͕Kvŏłނ悤ɐS|ƁA̐lp₷
    łȀꍇ%file̋Lq肷B

 4. patchgȂ

    configt@C̐ݒMakefileȂǂς肷邽߂Ɋ撣patch낢
    AʂɃt@CpӂSourceɉĂA%install

    cp ${RPM_SOURCE_DIR}/hoge.conf .


    ƂĂ܂قA肷邱ƂBsrpm΂炵ĂÃt@
    CoĂĂ킩₷AAbvf[ĝ߂specCƂy
    肷B

 5. spect@C͂킩₷BO҂ɂ킩悤RgāB

    spect@C̓\[X̃Abvf[gɑΉďCAO҂ĕKv
    ɉď肷邱ƂBÂĂ낢Ȑݒ肷镡G
    ̂A|[^reBdĊȌɏ̃ê߂
    ͋gB܂AbuildłȂȂ悤ȂƂ悤A spect@
    C̃XNvgŁAȃR}hĂԂ悤ȂƂ͔AʓIȃR}
    hgpɂƂǂ߂ׂB

1͓ɏdvłB悭A%post ŁAV{bNEN͂āA %preun ł
̃N폜悤spect@C܂Bs,Abvf[gɖ
肪邱Ƃ܂BȑOA libc̃pbP[WłLqĂ̂
āA[Ȗ肪Ƃ܂B

̗ŔArpm -U <new-rpm>A

rpm -e <old-rpm>
rpm -i <new-rpm>


ł͂ȂA

rpm -i <new-rpm>
rpm -e <old-rpm>


Ƃ͂炭߂łB

܂A%post ŁAV{bNEN͂āA %preun ł폜悤
rpm ̃o[WAbv悤ƁA rpm -U iAbvf[gjs

 1. VpbP[W̃CXg[sȂA %postŃV{bNEN
    B

 2. ÂpbP[W̃ACXg[sȂB̂ƂA%preunłV
    pbP[WV{bNEN폜B

̎dĺAlibcƂ̃AbvO[h̓rlibcƂȂȂăgu
̂悤Ƃ߂̂̂Ǝv܂B

̖͉͂@܂B %pre, %post, %preun, %postuñXNvgs
ɂ́AXNvgɑ΂Ĉȉ̈^܂B

 E rpm -iŃCXg[sƂ

    %pre, %postɑ΂$1=1

 E rpm -UŃAbvf[gsƂ

      Vrpm̃CXg[ɁA %pre, %postɑ΂$1=2

      ÂrpmACXg[ɁA %preun, %postunɑ΂$1=1

 E rpm -eŃACXg[sƂ

    %preun, %postunɑ΂$1=0

Ȃ킿A͂߂ăCXg[Ƃɂ́AƂ1킽A rpm -eŃA
CXg[Ƃɂ0킽킯łB𗘗pƁA

%post
if [ $1 = 1]; then
        echo ``First installation!''
fi
%preun
if [ $1 = 0]; then
        echo ``Good bye!''
fi


Ƃł킯łBił%postȂǂŃV{bNEN͂肷ƁA
oǂs̃t@C邱ƂɂȂ܂B̑gu邽߁Ał
邾t@C%filesɉ悤ɂA %postȂǂɏXNvg͂ł邾
Ȃ܂傤)



rpm-4.0.5ŗpĂGroupꗗ

ȉ́A/usr/share/doc/rpm-4.0.5/GROUPS ɋLqĂAO[vꗗłB

Amusements/Games
Amusements/Graphics
Applications/Archiving
Applications/Communications
Applications/Databases
Applications/Editors
Applications/Emulators
Applications/Engineering
Applications/File
Applications/Internet
Applications/Multimedia
Applications/Productivity
Applications/Publishing
Applications/System
Applications/Text
Development/Debuggers
Development/Languages
Development/Libraries
Development/System
Development/Tools
Documentation
System Environment/Base
System Environment/Daemons
System Environment/Kernel
System Environment/Libraries
System Environment/Shells
User Interface/Desktops
User Interface/X
User Interface/X Hardware Support


