������� RPM HOWTO
 Donnie Barnes, [email protected]
 8 ������� 1997, ������ v2.07
 ____________________________________________________________

 Table of Contents


 1. �������

 2. ���������

 3. ������� ����������

    3.1 ��������� �� RPM
    3.2 ���������� �� RPM

 4. �������������� �� RPM

 5. ��� �� ���� �� ���

 6. ��������� RPMs

    6.1 �� ����� rpmrc
    6.2 �� ����� ���������� (Spec File)
    6.3 � ����������
    6.4 Prep
    6.5 ������� (Build)
    6.6 �����������
    6.7 ����������� ���������� ���� ��� ���� ��� �����������/�������������
    6.8 �����
    6.9 ��������� ��
       6.9.1 � ����������� ��������� �� ������ �����
       6.9.2 ������ ��� �������
       6.9.3 ����������� �� ����� �����
       6.9.4 ��������� �� ������ �� RPM
    6.10 ������� ��
    6.11 �� �� ������ �� �� ��� ��� RPMs
    6.12 ��� ���;

 7. ��������� RPM ��� ������ �������������

    7.1 ��� ��� ����� ���������� (spec File)
    7.2 Optflags
    7.3 Macros
    7.4 ��������� ������������� �� ������
    7.5 �����������

 8. ��������� ���������

 9. ���� ��� ��������� ���������



 ______________________________________________________________________

 1.  �������

 �� RPM ����� ����� ������� �� Red Hat Package Manager.  ����� ��
 ������� �� Red Hat ��� ����� ��, � ������ ����� �� ���������� ���
 ������ ������ ��������������, ��������� ���� ����� �� �������.
 ��������� ���� ������� �� ������� ��� ������ ����� ��� ���
 ��������� ��� �� ��� ��������� �� ������ ��� ���������� ����, ����
 �� ������ �� ������������� ��� �� �������������� ����� ��
 ���������� ������, ��� � ������� ������ �� ������ �� �������� �� ���
 ����.
 �������� ������ ��� ���� �������� ��� �� ������ ��� �� �����
 ���, �� ������ �� �������������� ��� ��� ��������� ��� ������� ���
 ����������� �� ������ ���� ��� ��� ��� �������� �� ��������
 ������ �� ����� � ������.


 � �������� Red Hat Software ��������� ����� ���������� ������� ��
 �������� ���� ��� �� ���������� �� RPM ��� �� �� ��������������
 ��� ��� ����� ��� ��������. �� RPM ����� ��� ������� ��� ������,
 ����� �� ������ ��� ���� ��� ��� ��� �� ������. ����� ������
 ������ ������ ��� ����� ���������, ��� �� ���������� ������������
 ������� ������� ��� ���������. �������� � ����� ����� ������
 ��� �������� �� RPM ��� �� ��� ���� ��� GPL.

 ��� ���������� ��������� ��� �� RPM ����� ��������� ��� ������ �� Ed
 Bailey, Maximum RPM.  �� ������ ����� ��������� ��� �� �� ���������� �
 �� �� ��������� ��� ������� www.redhat.com <http://www.redhat.com>.


 2.  ���������

 ���� ��'���, �������� �� �� �������� �� ������ ��� ��������� ��
 ������� ��� �� �� RPM. ���� ���������� ���� ���� �� ��������
 ��� ����� ``�������� (������)'' �����.  �� �� RPP (� �����������
 ��� ����������� ������, �� ��� ������ �� ��������������� ������ ���
 ��������� ��  RPM), �� ������ ������ ����� ���� ``�����������''
 ������ ������� ������ �� ���� �������.  ��������, ������� ��
 ������� �� ������������ ��� ������ RPP ��� ���� �� �����make �����
 ����������. ���� � ������� ������ ��� ���� � ����� �������, ���
 ��� ����� ����� ������ ��� ����� ������� ���������� �� ������ ���
 �� �� ��������� �� �������� �����.  �� ������ �� ���������� ���
 ���� ������ ����� �������.  �� �� ROM, ���� ��� ���� �����
 ���� �� ��� ������ (patch) �� ����� ��������������� ��� �� ������ ��
 �����������. ��� �� ������ ��� ��� ������ �����������. �����; ���
 ������ ����. ���� - ����, �� ���� ��� ��� ������ ������
 ������������, �� ���������� �� ������� ����������� �� ��� ��� ���
 �� �� ������������� ��� RHL. �������� �� ��������� ��� ������
 (patch) ��� �� �� ��� ��������� �� ������. �� ��� ��� ����, ����
 �� ��������������� �������� ��� ������������ ����� �����
 ����������.

 �� RPM ���������� ��� �� �������� ����� ��������� �������.
 �������� �� ������ ���� �� ������� �� ���� ��� ��� ������ � ���
 ������� �����. �������� ������ �� ������ ����� �� ���� ������
 ������ ��� ����������� ����� ��� �� ��� �������. �� ���� �� RPM
 ����� ����� ���������� �����, ���� �������� �� ������ ����� ���
 ������ ��� ������ �� ������� ������ ���� �� ��� ����������
 ������� �����, �� ��� ��������� ��� ������ ��� ������� ���������
 ���������� �� ��������. ��� ������� �� ������� ������.

 ���� ��� ��� ������������� ����� � �������� �� �����������
 ������.  �� �������� ��� ������� ��� �������� ����� ��� ������
 ������, ���� ���������� ��. �� ����������� ��� �� ��������. ��
 ��� ��� ��������, �������� �� ����������������� �� ������ �� �����
 ����������.  �,�� ����� ������� ����� �� ���������� �������.

 �� ������ �� ����������� �� ������ ��� �������� BOGUS ��� ���
 ������ �� ��� ����� ��� ���������������� ��� RPM. �� ��� �� RPM
 ������� ������������ �� �� Red Hat Software, � ��������� �� �����
 ��������� ���� ����� �� ������� ��� �� ������� BOGUS (PM ��� PMS).


 3.  ������� ����������



 3.1.  ��������� �� RPM

 � �������� ����� �� ���������� �� RPM ����� �� ������� �� Red Hat
 Linux.  �� �� ������ �� �� ������ ��, �������� ��� ���� �� ������
 ��� �� ��������������� �� RPM.  �� �� ������ ��� ftp.redhat.com
 <ftp://ftp.redhat.com/pub/redhat/code/rpm>.


 3.2.  ���������� �� RPM

 � ���� �������� ��� �� ������� �� RPM ����� �� ���� �� cpio 2.4.2 �
 ���������.  �� ��� �� ������ ����������� ��� ����� �� Linux, ������
 �� ��������� ��� �� ���� �������� Unix. �����������, ���
 ������������� ��� SunOS, Solaris, AIX, Irix, AmigaOS ��� ����.  ���
 ������������� ��� �� ������-���������� ������ �� ����������� ��
 ��� ������ Unix �� �� ����� ������ �� ���� ������.

 ����� ����� �� �������� ���������� ��� �� ������������� RPMs. ��� ��
 ������� RPMs �� ��� �����, ���������� ��� �� ������ �������� ��� ��
 ������� ��� ������, ��� �� gcc, make, ���.


 4.  �������������� �� RPM

 ���� ��������� ���� ��, �� RPM ��������������� ��� �� ������������
 ������:


              rpm -i foobar-1.0-1.i386.rpm




 � ������ ��������� ������ ����������� ��� ������:


              rpm -e foobar




 ��� �� ��� ��� ������� ���� ��� ��� �������� ������� ��� ���������
 �� ������������� ������ ��� FTP. �� ����� ����������� ��� ����� ���
 ������ �� ������������� ��� ��� ������, �� ��� �� ���������� �����
 �� ������������� �� �����  �������� �� ��������� URL, ��� :


              rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm




 ������� �������� ��� �� 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).


 5.  ��� �� ���� �� ��� ����������  �� �� RPM;

 �� RPM ����� ��� ������� ��������, ��� ��� �� �����, ��� ������
 ��������.  � �������� ����� ��� �� ������� ��� ���� �� ���� �����
 �� ����� ������ ������������. ������� ������� ��� �������
 ������������/�������������� ��� ��� �������� ������ ����
 ������������ :

 �  �� ���� ��� ��������� ������ ����� ���� �����, ���� ��� �����
    ������� ��� �� ���� �������. �� ������ �� ����������� �� ������
    ��� ��� �� ����� �� ������, �� ������ :


      rpm -Va

 �  �� ���� ��� �������� ������ ����� �� ��� �����������. ��� ��
    ������ �� ���� ������ ������, �� ������ :


      rpm -qf /usr/X11R6/bin/xjewel




 �� ���������� �� �����:


      xjewel-1.6-1




 �  �������� ��� ��� RPM �� �� ����� koules, ���� ��� ������ �� �����
    ��.  ��� �� ����� ������� ���������� ������ �� �� ������, ��
    ������ :


      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.




 �  ��� ������ �� ����� ���� ����� ��������� �� RPM koules.  ��
    ������:


      rpm -qpl koules-1.2-2.i386.rpm




 �� ���������� �����:










 /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.  ��������� RPMs


 ����� ������ ����� �� ������� RPMs, ��������� �� �������� ��
 ��������� �� ������� �� ��� �� �� �������� �� ��� ��������� ��
 ����������.

 � ������ ���������� ��� �� ������� ��� RPM ����� � ������:

 �  ������� ��� �� /etc/rpmrc ��� ������������ ��� ������ ���.

 �  ����� ��� ������ ����� ��� ��� ����� �� ������ �� RPM �� �������
    �� ����������� ��� ������ ���.

 �  ������� ��� ������ (patch) ��� ���� ������ �� ������������ ��
    ������ ���� �� ������������� ����

 �  ������� ��� ����� ���������� (spec file) ��� �� ������.

 �  ���������� �� ��� ����� ����� ��� ���� ��� ����.

 �  ������ �� ������ �������������� �� RPM.

 �� ������������ �������, �� RPM ��������� ��� �� ������ ��
 ���������� ��� ��� �� ������ �����.



 6.1.  �� ����� rpmrc

 ��� ��� ���, � ��� ������ �� RPM ���������� ��� �� �����
 /etc/rpmrc. �������� ��� ����������:








 require_vendor: 1
 distribution: I roll my own!
 require_distribution: 1
 topdir: /usr/src/me
 vendor: Mickiesoft
 packager:  Mickeysoft Packaging Account <[email protected]>

 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). ���� ������ �� �������� �� �� ����� /etc/rpmrc � �� ���
 ���������� �� ���� �� ����� ���������� (spec file).  ��� �� ��
 ����������������, ������� ��� ����� �� 0.  �� ���� ���� ��� ���
 ������� require_distribution ��� require_group.

 � ������ ������ ����� ������ �� �� ������� distribution. �������� ��
 �� ������� �� � ������� ���� ���������� �� ����� ����������
 (spec file).  ���� ������� �� ������ ��� ������ ����������� �������,
 ����� ���� ���� �� ���������� ��� ��� � ������ ����� ����, ���� ��
 �� ��� ����������.  � ������ vendor ������ ���������, ���� ������
 �� ����� ��������� (�.�. Joe's Software and Rock Music Emporium).

 �� RPM ��� ���������� ��� �� ������� ������ �� ���������
 �������������.  �� ����� rpmrc ������ �� ����� ��� ���������
 ``optflags'' ��� �� ������� �������� �� ������� ����������� flags
 ������� �� ��� ������������ ���� �� ������ ���.  ����� �� �������
 ������� ��� �� �� �� ��������������� ��� �� ���������.

 ������ ��� ���� ����� �������� macros �� �������� ��
 ��������������� ��� �� ����� �� tags ��� �� ��������� flags.


      rpm --showrc





 6.2.  �� ����� ���������� (Spec File)

 �� ���������� �� ������� ��� �� ����� ����������.  �� �����
 ���������� ���������� ��� �� ������� ��� ������. �� �����
 ���������� ����� ��� �������� �� ��������� ���� �� ������� ���
 ������� ��� �� �� �� ������ ��� ��� ����� ��� ��� �� ���������� ��
 ��������������.

 ��� ����� �� ��������� �� ����� ���������� ���� �� ������
 ��������.  �� ������ �� ����� �� ������ �����-����-������ �������
 (version number)-����- ������ ������ (release number)-������-spec.

 �������� ��� ���� ���������� ����� ���������� (vim-3.0-1.spec):




 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
 ��� �� �������� ��������� ��� ������ �� ������ (eject) �� ���� �� ����������� ������ ������ ��� CD-ROMs,Jaz ��� Zip drives, ��� ������ �������� �� ������ SPARC.

 %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.  � ����������

 � ���������� ��� ������ ������� ����� �� ������ �� ���������.
 �������� ������ ��� ������� ����������. �� ����� ������ ��
 ��������� ��� �������� �������:

 �  Summary: ����� � �������� �� ������ �� ��� ������.

 �  Name: ����� �� ����� �� rpm ����� �� �������� ��
    ���������������.

 �  Version: ����� � ������ (version) ��  rpm ����� �� �������� ��
    ���������������.

 �  Release: ����� � ����� (release) �� ������ ��� ��� �������
    ������ (�.�. �� �������� ��� ������ ��� �� ����� ����
    ����������� ��� ������ �� �� �����������, �� ������ ������ ��
    ����� ����� 2).

 �  Icon: ����� �� ����� �� ����� �� ��������� �� ��
    �������������� �� ���� �������� ������������ ����� ������� (���
    �� ``glint'' ��� Red Hat). ������ �� ����� gif ��� �� ���������
    ���� �������� SOURCES.

 �  Source: ���� � ������ ������ ���� ��������� HOME �� �����
    ����� ������ �����.  ��������������� ���� �������� �� ������
    �� ������ ��� ����� ���� � �� �������� ��� ������� �������.
    �������:  �� ����� ����� ������ �� ��������� �� �� ����� ��
    ����� �� ���� ��� ������ ��� (�.�. ��� ���������� �� ������
    ����� ��� �������� ���� �� ����� ��). �������� ������ ��
    ���������� ���������� �� ��� ����� ������ �����
    �������������� ������� ��� :
      Source0: blah-0.tar.gz
      Source1: blah-1.tar.gz
      Source2: fooblah.tar.gz




 ���� �� ����� �������� ���� �������� SOURCES . (� ���� �� �������
 �� �������� ������� �� ������ �����, "� ����������� ��������� ��
 ������ �����").

 �  Patch: ����� �� ����� �� �� ������ �� ������ (patch) �� ���������
    �� �� ���������� ����.  �������:  �� ����� ����� �� ������ ��
    ��������� �� �� �� �������������� ���� �������� �� ��� ��
    patch.  ������ ������ �� ������ �� ��������� ��� ������ �� ����
    �������� patch ����� ��� ������ �� ���� �������� ������ �����.
    �� ���� ���� ��� �� �������:


      Patch0: blah-0.patch
      Patch1: blah-1.patch
      Patch2: fooblah.patch




 ���� �� ����� �� ���� ���� �������� SOURCES .

 �  Copyright: ���� � ������ ������� ��� �� ��������� �� ������.
    �� ������ �� �������������� ���� ��� GPL, BSD, MIT, public domain,
    distributable, � commercial.

 �  BuildRoot: ���� � ������ ��� ��������� �� ���������� ���� ��������
    ��� ``root'' ��� �� ������� ��� �� ������������� ��� ������.
    �������� �� �� ��������������� ��� �� ��������� �� ������ ��� ����
    �� �� ������������� ��� ������� ���.

 �  Group: ���� � ������ ��������������� ��� �� ��� �� �����������
    ������������ ����� ������� (��� �� ``glint'' ��� RedHat) �� ��
    ����� �� �� �������� ��� ���� ��� ��������.  �� ������ ��
    ����� ������� �� ���� :

























 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
 Shells
 Games





 �  %description  ��� ����� ���������� ��� ����� ��� �����������, ����
    �� ������ �� ��������� �� �� ������� ��� �����������. ����������
    ��� tag ��������� ��� ������ ���/� ���������. ��� ����� ��� �����
    ��������-������ �� ������ �� �������������� ��� �� ���� ���
    ��������� �������� �� ������.
 6.4.  Prep

 ��� ����� �� ������ ����� ��� ����� ����������. ���������������
 ��� �� ���������� ��� ����� ��� �������. �� ������ �� ������
 ��������� ��������� ��� �� ������ patch ��� ������ ��� �� ���
 ������������� ��� ������ ��� �� ������ make.

 �������� �� ����:  ���� ��� �� ��� �� ������� ����� ����������
 ����� ��� �� ���������� ���������� ����� (shell scripts).  ��������
 ���� �� �������� ��� sh script ��� �� �� ������ ���� �� %prep tag ���
 �� ������������ ��� �� ������ patch ��� ����� ���.  �������, ����
 ������� macros ��� �� ��������� �'��.

 �� ���� ��'��� �� macros ����� �� %setup macro. ���� ��������� ��
 ���� (����� �������� �� �� ������ ������), ���� ����������� ���
 ����� ��� ������� ���� �������� �� ��� �����.  ������� ������ ���
 ������� ��������:


 �  -n name ����� �� ����� �� ������� �� �� �������������� ��� ��
    ������� ��� ����� �� �������� name.  �� �������������� �����
    ����� $����-$������.  ����� ��������� ������������ �� $����,
    ${����}${������}, � ��� ������������ �� ���� tar �����.
    (�������� ������� ��� �� ���������� ``$'' ��� ����� �����������
    ���������� �� ����������� ���� ��� ����� ����������.
    ��������������� �� ���� ��� ��� �����-����������.  ����� ������
    �� ��������������� �� ��������� ����� ��� ��� ������ ��� ������
    ���, ��� ��� ���������).

 �  -c �� ����������� ��� �� ���� ���� ���������� �������� ���� ��
    ����� untar.

 �  -b # �� ����� untar ��� �����# ���� �� ���� ���� �������� (��� ��
    ������ ���� �� ��� ������� -c ��'�� ��� �� ������). ��� �����
    ������� ���� ���� �������� ����� �� �����.

 �  -a # �� ����� untar ��� �����# �� ���� ���� ��������.

 �  -T ���� � ������� ������ ��� �������������� ������� �� ����� untar
    ��� ����� ��� ������� ��� ������� -b 0 � -a 0 ��� �� ������ untar
    �� ���� ����� �����. �� �� ����������� �� ���� ������
    ���������� �����.

 �  -D �� ��������� ��� �������� ���� �� ������������. ��� �����
    ������� ��� ��� ���� ���������� �� ��� macro ������������. ��
    ������ �� ��������������� ��� �� macros ������������ ���� �� ����
    (���� ���� ��� ����).


 �� ������ �� �� ��������� macros ����� �� %patch macro. ��� ��
 macro ����� ���� ������������� ��� ����������� ��� ��������
 �������� (patches) ���� ������. ������� ������ ��������, �� ������
 ��������� �������:

 �  # �� ������� �� Patch#

 �  -p # ��������� ��� ����� �� �������� ���������� �� ��
    �������� � ������ patch(1).

 �  -P � �������������� �������� ����� � ������� �� Patch (� Patch0).
    ���� � ������� ���������� ��� �������������� �������� ��� ��
    ��������� ��� 0 ��� �� ����� untar �� ���� ����� ������ �����.
    ���� � ������� ����� ������� �� ��� ������ (� ���������) %patch
    macro �� ����� �������� ��� ��������� ����� �� �� ���� macro.


 �  �������� ������ �� ������ %patch# ���� ��� ��� ���������� ������ :
    %patch # -P

 ���� ������ �� ����� ��� �� macros �� ����������.  ��� �� ���� ���
 ����, �������� �� ������ ����������� ����������� ������ �� sh
 ����������.  ��������� ������������ ���� �� %build macro (�� �����
 �� �������� ��� ������ �����), ���������� ��� sh. �������� ��
 ������� ���������� ��� ��� ���� �� �������� �� ������ �� ������
 �� ������.


 6.5.  ������� (Build)

 ��� ������ ������� macros �� �� �� �����. �� ������ ���� �� ������
 ��� ������� �� �� ��������� �� ��������������� ��� �� ������� ��
 �������� �� ���� ����������� ��� �����, ��� ���� ����� patch ���
 ���� ���� ���� ��������.  ��� ����� ���� ��� ���� ����� ������
 �� ���������� ��� sh, ���� ���� ���� �� ������ ������� sh ������
 �� ���� �� (����������������� �� �����).

 � ����� ��������� �� ������� ������� reset �� ���� ��� �� ��� ��
 ������� ��� ��� ��� ������� �� ������� �� ������� ��� ����� ,
 �� �� ���� ��� ���. �������� �� ������ ���� ����������� �� cd ��
 ���������.


 6.6.  �����������

 ��� ��� �� ������, ����������, macros. ������ ������ �� ������ ���
 ������� ����������� ��� ��� �����������. �� ���� ��� ������� ��� ��
 make install ��� ������ �� �������, ����� �� ����.  �� ���, ��������
 ���� �� ������ patch �� makefile ���� �� ������ make install ��� ���
 ������ �� �������� �� ����� �� �� make install , � �������� �� ��
 ������������� �� �� �� ���� �������������� sh �������.  �������� ��
 �������� ��� ����� �������� ��� �� ��� ��� ������� �� ������� ��
 ��� �����.


 6.7.  ����������� ���������� ���� ��� ���� ���
 �����������/�������������

 �������� �� ���������� ���������� �� �� ����� ���� ��� ���� ���
 �����������/ ������������� �� ���������� ������. � ����� ����
 ��'�� ����� �� ������ �������� ��� �� ������� �� ldconfig ��
 ������������� � ��������� ������ �� ������� ��������������
 �����������.  �� macros ��� ���� ��� �� �� ���������� ����� ��
 �������:

 �  %pre ����� �� macro �� ������� ���������� ���� ��� �����������.

 �  %post ����� �� macro �� ������� ���������� ���� ��� �����������.

 �  %preun ����� �� macro �� ������� ���������� ���� ���
    �������������.

 �  %postun ����� �� macro �� ������� ���������� ���� ���
    �������������.

 �� ��������� ��� �� ������� ������ �� ����� ����������� ���
 sh script,  �� ��� �� ���������� �� #!/bin/sh.


 6.8.  �����

 ��� ����� �� ����� ��� ������ �� ����� �� ����� �� ����� ��� ��
 ���������� ������.  �� RPM ��� ��� ���� �� ������� �� ����������
 �������������� ��� ���������� �� make install. ��� ������ ����� ��
 �� ������ ��.  ������� ��������� �� ���������� �� find ���� ���
 ���� ��� ����������� �� ������. �� ��� ��������� ������, ��
 ����� ���������� ���� ����� ���� �� ����������� ���� ����� ����
 �� ���������� ���������� ��� ������, �� ����� ��� ��� ������
 ����� ���� �� �� ���� �� ������.

 ������ ������ ��������� macros �� ����� ������� �������
 ����������. ���� ����� �� ������� :

 �  %doc ��������������� ��� �� �������� ���� ��� ������ ������ �����
    ��� ��������� �� ������ �� ������������ �� ��� �����������
    binary. �� ������� �� ������������ ���
    /usr/doc/$NAME-$VERSION-$RELEASE.  �������� �� ���� �� �� ��
    macro ����� �������� ������� ��� ������ ������, � �� ������ ��
    ����� ������ ������� �������������� ��� macro ��� ������
    ��'���.

 �  %config ��������������� ��� �� �������� �� ����� ������� �� ���
    ������.  ��� ������������ ����� ��� �� sendmail.cf, passwd, ���.
    �� ������� ��������������� ��� ������ �� ������� �����
    �������, ����� ����� ��� ������� �� ������� ��� ����� ���
    ������� ������� �� ������������ ��� ���� ����� �� ��������
    .rpmsave ��� ����� �� �����.  ��������, ������, �� ������ ��
    ����� �������� ����� �� �� �� macro.

 �  %dir �������� ��� ��� �������� �� ��� ����� ����� �� ��
    ����������� ��� �� ������ ��� ������. ����� ��������������, ���
    �� ����� �� ����� ��� ������� ����� ������ %dir macro, �� ��
    ��� ��� �������� ����������������� ��� ����� ����� ���
    ������������ ��� ����� �� ������.

 �  %files -f <filename> �� ��� �������� �� ��������� ����� ��
    ����� ��� �� ������ �������� ����� ���� ���� �������� ��
    ������ ����� ��� ������� �� �������.  ��� ����� ��� ��
    ���������� ��� ���� ��� ������ �� ������ �� ������ �� ���� ��
    ����� �����. ��� ���� ���������� �� ��� �� ����� ����� ���
    �� ���������� �� ��������� ������ ����� �����.

 � ��������� ������ ��� ����� ����� ����� � ������� �������. ��
 ��������� �� /usr/bin ���� �����, �� ���������� ������ ��� ��
 ������� ���� ����� ��� /usr/bin ��� ������ ���.


 6.9.  ��������� ��


 6.9.1.  � ����������� ��������� �� ������ �����

 �� ���� �� ���������� ����� ��� ���� ��������� ������ ��� �������
 (build tree).  ��� ��������� �������������� �� ����� /etc/rpmrc.
 �� ����������� �� �������������� ���� �� /usr/src.

 ������ �� ��������� �� ������������ ��� ������� �������� ��� ��
 �������� ��� ������ ��� ������� (build tree):

 �  BUILD ����� � ��������� ��� ������� �� ������� �� �� RPM.  ��
    ���������� �� ��������� �� ������� ���� �����������, ���� �� ��
    ����� �� RPM �� ����� �� ������ ��.

 �  SOURCES ����� � ��������� ��� �� ������ �� ������ �� ����� tar
    ����� ������ ����� ��� �� patches. �� ����� �� ���
    ������������� �� ����� �� RPM.

 �  SPECS ����� � ��������� ��� ������ �� ���� ��� �� �����
    ���������� (spec).
 �  RPMS ����� ���� ��� �� ����� �� RPM ��� �� ���������� RPMs ���� ��
    �������.

 �  SRPMS ����� ���� �� �� ���� ��� �� RPMs ������ �����.


 6.9.2.  ������ ��� �������

 �� ���� ������ �� ������ �� ������ �� ������ ����� �� ������ ���
 ����� ��� �� ������� �� ������ ����� �� ��������������� ����� ��
 RPM. ��� �� �� ������ ��, ������������ ��� ������ �����, ���
 ������� �� ����� �� ������� �� $NAME.orig. ������������ ��� �����
 ����. �������������� ��� ����� ��� �� ������� �� ������. ���������
 ���� �������� �� ��� ����� ��� ���������� ��� ������� ��� ��
 �������. �� ������ �� �������� ��������, �� ����������� ��� ������
 (patch). ���� �� �������, ��������� ��� �������� �� ��� ������
 �����.  ����������� ��� ��������� ��� �� ����� �� �������������
 �� �� script configure.  ��� ������, ������ �� ��� �������� �� ���
 ������ ����� ���� ��� ��� �������� cd . ����� ���� ��� �� �������:


              diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch




 ��� �� ��� ����������� ��� patch �� ����� �������� ��
 ��������������� ��� ����� ���������� ��� (spec file).  ��������
 ��� �� ``linux'' �� ������� ��� ����� �� patch ����� ����
 �����������. �������� �� ��������������� ���� ��� ������������ ���
 ``config'' � ``bugs'' ���� �� ��������� ����� ���������� �� ��������
 �� �� patch.  ����� ������ ���� ���� �� ��������� �� patch �����
 �� �������� ���� �� �� ��������������� ���� �� ����������� ��� ���
 ����������������� ���� ����� �� ����������.


 6.9.3.  ����������� �� ����� �����

 ��� �� ���� ��� ����� ��� �� ������� �� ������ ��� ������ �� ��
 �� ������, ������ �� ��� ������������ ��. �������� ��� ����� ���
 ����������� ������������ ��� ������ �� ����� ����� ��� �� ��� ��
 �� ��������������� ��� ����� ����������. �����, ������� ��
 ����� ���������� ��������� �� ��� ��� �� ������.  �������� ��
 ������������ �� ���� ��� �� ���������� �� ����� �������, ��� ���
 ������ �� ���������� ��� �� ������� ������ ���� �������.



 6.9.4.  ��������� �� ������ �� RPM

 �� �� ������ �� ���� ��� ����� ���������� (spec file), �����
 ������� �� ���������� �� ������� �� ������ ���. � ��� �������� �����
 �� �� ������ ����� �� ��� ������ ��� ��� ������ :



              rpm -ba foobar-1.0.spec




 ������ ������ ��� ����� �������� �������� �� �� switch -b :

 �  p �������� �� ������ ���� �� ����� prep �� specfile.


 �  l ����� ���� ������ ������ �� ����� ������� ������ ���
    %�����.

 �  c ����� ��� ���� �� ����� prep ��� ������������. ��� �����
    ������� ���� ��� ����� ������� ��� �� �� � ������ ��� �� �����
    build. �������� ������ ������ ������ �� ������ �� �������� ��
    ������� �� ��� ���� ��� ����� ���� �� ������� ��� ���� ��
    ��������������� �� RPM, ���� ���� ������������ �� �� ����� ��
    RPM, �� ������ ������� �� �� �������� �� �� ���������������.

 �  i ����� ��� ���� �� ����� prep, ������������ ��� ���������.

 �  b ����� ��� ���� �� ����� prep, ������������, ��������� ��� ������
    ��� �� ���������� ������.

 �  a �� ������ ��� (��� �� ���������� ��� �� ������ ����� ������).

    ������ ������� ���������� ��� -b switch. ����� ����� �� �������
    :

 �  --short-circuit �� ������� ��������� �� ��� ����������� ������
    (������ �� �������������� ��� �� �� c ��� i).

 �  --clean ���������� �� ������ ���������� (build tree) ����
    ��������.

 �  --keep-temps �� �������� ��� �� temp ����� ��� �� scripts ��
    ��������� ��� /tmp.  �������� �� ����� ���� ����� �������������
    ���� �������� /tmp �������������� ��� ������� -v .

 �  --test ��� ������� ���������� �� ������, ��� ������ �� ������ ��
    �����.


 6.10.  ������� ��

 ��� �������� ��� ���������� ��� ��� �� ��� ������ ����� rpm ��� ��
 ������ ���, ���������� �� �� ��������. � ��������� ��� ��������
 ����� ����� �� ��������������� ��� ������ ��������� ������� ���
 �� �� ����������.  ��� ���-���, ���� ����� ��� make install ���
 ������� ���, �� �� ������ �� ������������ ����.

 �������� �� �������� �� ������ �������� rpm -u packagename, ���� ��
 ������ �� ��� ���������� ������ ��� ������� �� ������, ������ make
 install.  �� ������ ���� �� �� �� ����� ����� ���, �� ��
 ��������������.  �� ������������� ���� �� ���������� ������ (binary
 package) ��� �� ������ ��� �� ��������� ��� ����, ���� �� rpm ���
 ����� �������. ����������� ��� ���� ��� ��� ��� ������ ����� ��
 ������ rpm -ba package, ������ ��� ���������� �� ������ ���
 �������� rpm -i package. ����������� ��� ��� ������ ������ ���
 ������� build � install �� �� ��������� �� ����� ���� �� ����������
 ������ ������������� ��� ���.



 6.11.  �� �� ������ �� �� ��� ��� RPMs

 ���� �������� �� ��� ��� ��� RPM ��� ���� (��������� ��� ����� ����
 �� ��� ������ �� RPM), �������� �� ��������� �� ������ ��� ��� ��
 ����� (������ ��������� ��� �������� RPM ��� ������������ ��
 ����������� �������). ��� �� �� ������ ��, �� �������� �� ��
 ��������� ��� ftp.redhat.com <ftp://ftp.redhat.com>.




 6.12.  ��� ���;

 �������� ������� �� ������� ������� ������ �� ��� ����� ��� �� ��
 �� ������ �� �� ��� RPMs. ������ ��� RPMs ����� ���� �� ����, ���
 ������ ������� �� ����� ��� ���� RPMs. ������� ���� ����� ����
 ��� ���������� �� ������ RPMs ��� ����� ��� ��� �� �� ������ ���
 internet ��� �� ��� ��� ���. ������, ������� ����������� ���
 ������ upload ������� ��������� ��������. ������� ��� shareware
 �������� �� �� ������ �� ������� upload ���� �� �� ��� ���������
 ���� ��� ����������� ���� ����� ���������� �����������. ���
 ������������ �� �������� Netscape, ssh, pgp, ���.


 7.  ��������� RPM ��� ������ �������������

 �� RPM ������ �� �������������� ��� �� ������� ������ ��� Intel i386,
 Digital Alpha �� ����� Linux ��� �� Sparc. ���� �������� ���
 ������ ������ ��� �� ������� �������� SGI ��� HP. ������ ������
 �������������� �� ����� �� ������� �� ������ ����� �� ���� ���
 ��������. �� ���� ����� � ���������� ``optflags'' ��� /etc/rpmrc.
 ������ �� �������������� ��� �� ������ flags �� ��������������� ����
 ������� ��������, �� ����� �� ��������� �� ��� ������������ ��
 ���������.  ���� ��� ������������� ����� �� ``arch'' macros ���
 ����� ���������� (spec file).  ������ �� �������������� ��� ��
 ������ ������ �������� ������� �� ��� ������������ �� ���������
 ���� ����� �� �������.  ���� ��� ������������� ����� � ����������
 ``Exclude'' ���� ���������� (header).


 7.1.  ��� ��� ����� ���������� (spec File)

 �� ������� ����� ����� �� ����� ���������� (spec file) ��� ��
 ������ ``fileutils''.  ����� ��������� ��� �� �������� ��� �� Alpha
 ��� �� Intel.
































 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. ������� �� �� ��� �� ����
 ������������ �� �������, ������ ��� ��������� ���� ��� RPM_OPT_FLAGS.
 ������ �� ������ patch �� Makefile ���� ���� �� ������ ��� ��
 ������������ ��� �� ��������� ���� �� �������� ���������� �� ��
 ��������� �� ��������������� (��� -m486 ��� -O2).  �������� ��
 ������ ��� ���� ���� ��� �� �� ���������� �� ������ ������������ ��
 ������ ����� �� ������ ��� ����������� ��� ����� ��� �������� ��
 Makefile.  �������� ��� �� patch ��� �� Makefile ��� ����� �� �������
 ������ �� ������.


 7.3.  Macros

 �� %ifarch macro ����� ��� �������� �� ��� ���. ��� �����������
 ����� �� ��������� �� �������� ���-�� patch ������ ��� ���
 ����������� ������������.  �� ��� ��� ��������, �� RPM �� ���
 �������� �� �������� �� �� patch �� ��� ������������ ���.

 ��� ������� ����������, �� fileutils ��� ��� patch ��� ������ 64
 bit.  ������, �� �� ������ �� ��������� ��� �� Alpha ��� ���
 ���. ����, ���������� ��� %ifarch macro �� �� �� 64 bit patch ���
 �������:

 %ifarch axp
 %patch1 -p1
 %endif




 ��� ���������� ��� �� patch �� �� ��������� �� �����������
 ������������ ���� �� alpha.


 7.4.  ��������� ������������� �� ������

 ��� �� �������� �� ��������� ������ RPMs ������ ����� �� ����
 �������� ��� ���� ��� ��������, ���� ���������� ��� �������� ��
 "��������" ������ ���� �� �� ������� �� ������������
 �������������. ��� ������� ���� �� �������� �� ������ ���� ��������
 ���


      rpm --rebuild /usr/src/SRPMS/*.rpm




 ��� �� ������� �� ���� ������. �� ��� ����  �������� ��� �������
 �� ��� ����������� �������, �� ��� �� ������ �� ������ ����� ��
 ���������� ��� ������ ��� ��� :


      ExcludeArch: axp




 ���� ���������� �� ����� ���������� �� ������ �� ��� �����.
 ��� ������, ��������� �� ������ ���� ������� ��� ��� �����
 �����������.  �� ���� ��� ��� ������ ������ ����� �� ������ ��
 Intel ��� ������ ����� �� ��������� �� Alpha.


 7.5.  �����������

 �����, ����� �������� �� ��������������� RPM ��� �� ��������
 ������ ��� ��������� -������������� �� �� �� ������ �� ���� ������
 ������� ��� �� �� ������� ��� �� ����.  ���� ����� �� �� ������
 ������ ���������, �� ������� ��������, �������.  ��� �����, �
 �������� ����� ��� �� ����������� ������� ���� ��������� ���������
 ��� RPM ����� �� ����� ��� ����� ��� ������� ������.



 8.  ��������� ���������

 �� ��������� ��������� ��� �� ������� ��� �� ���������� ��
 �������������.  ����������� � ������������ ��� �� ������� ����
 �� ��������� �� ��������� ���������.  �� ���� ����, �� ��� ��
 �������� �� ������ ����� �� �������� �� ���� �� �������, �� ��
 ������ ���� � �� �� ����������.


 9.  ���� ��� ��������� ���������

 ��� ����, ������������, ���������, ���������� ���� ��� ���������
 ��������� ��� �� HOWTO, ������� email ���� ���� ������ :
 [email protected]