Ellhniko RPM HOWTO
  Donnie Barnes, djb@redhat.com
  8 Aprilioy 1997, ekdosh v2.07
  ____________________________________________________________

  Table of Contents


  1. Eisagwgh

  2. Episkophsh

  3. Genikes Plhrofories

     3.1 Apoktwntas to RPM
     3.2 Apaithseis toy RPM

  4. Xrhsimopoiwntas to RPM

  5. Kai ti mporw na kanw

  6. Xtizontas RPMs

     6.1 To arxeio rpmrc
     6.2 To arxeio prodiagrafwn (Spec File)
     6.3 H epikefalida
     6.4 Prep
     6.5 Xtisimo (Build)
     6.6 Egkatastash
     6.7 Proairetika skriptakia prin kai meta thn Egkatastash/Apegkatastash
     6.8 Arxeia
     6.9 Xtizontas to
        6.9.1 O dendroeidhs katalogos toy phgaioy kwdika
        6.9.2 Elegxos sto xtisimo
        6.9.3 Dhmioyrgwntas th lista arxeiwn
        6.9.4 Xtizontas to Paketo me RPM
     6.10 Elegjte to
     6.11 Ti na kanete me ta nea sas RPMs
     6.12 Kai twra;

  7. Xtizontas RPM gia polles arxitektonikes

     7.1 Ena aplo arxeio prodiagrafwn (spec File)
     7.2 Optflags
     7.3 Macros
     7.4 Afairwntas arxitektonikes apo Paketa
     7.5 Teleiwnontas

  8. Pneymatika Dikaiwmata

  9. Peri ths Ellhnikhs Metafrashs



  ______________________________________________________________________

  1.  Eisagwgh

  To RPM einai einai akrwnumio toy Red Hat Package Manager.  Parolo poy
  periexei to Red Hat sto onoma toy, h pro8esh einai na apotelesei ena
  anoikto susthma paketarismatos, dia8esimo pros xrhsh apo ka8enan.
  Epitrepei stoys xrhstes na pairnoyn ton phgaio kwdika enos neoy
  logismikou kai na ton paketaroyn se phgaia kai ektelesimh morfh, wste
  na mporoun na egka8istantai kai na parakoloy8ountai eukola ta
  ektelesima paketa, kai o phgaios kwdikas na mporei na xtizetai me aplo
  tropo.
  Diathrei epishs mia bash dedomenwn olwn twn paketwn kai twn arxeiwn
  toys, poy mporei na xrhsimopoih8ei gia thn epalh8eysh ths uparjhs kai
  akeraiothtas twn paketwn ka8ws kai gia thn apanthsh se erwthseis
  sxetika me arxeia h paketa.


  H etaireia Red Hat Software en8arrunei alloys promh8eytes dianomwn na
  dia8esoyn xrono sto na katanohsoyn to RPM kai na to xrhsimopoihsoyn
  gia tis dikes toys dianomes. To RPM einai polu eyelikto kai euxrhsto,
  parolo poy parexei thn bash gia ena polu eyru susthma. Einai epishs
  teleiws anoikto kai plhrws dia8esimo, kai 8a ektimousame opoiesdhpote
  anafores sfalmatwn kai dior8wseis. Ekxwreitai h adeia dwrean xrhshs
  kai dianomhs toy RPM katw apo toys oroys ths GPL.

  Mia plhresterh tekmhriwsh gia to RPM einai dia8esimh sto biblio toy Ed
  Bailey, Maximum RPM.  To biblio einai dia8esimo gia na to katebasete h
  na to agorasete sth dieu8ynsh www.redhat.com <http://www.redhat.com>.


  2.  Episkophsh

  Prwta ap'ola, epitrecte moy na perigracw ta basika ths filosofias poy
  krubetai pisw apo to RPM. Enas sxediastikos stoxos htan na epitrecei
  thn xrhsh ``prwtarxikou (basikou)'' kwdika.  Me to RPP (o prohgoumenos
  mas diaxeirisths paketwn, apo ton opoion de xrhsimopoih8hke tipota sth
  dhmioyrgia toy  RPM), ta paketa phgaioy kwdika htan ``peiragmenoi''
  arxikoi phgaioi kwdikes poy meta xtisame.  8ewrhtika, kapoios 8a
  mporouse na egkatasthsei ena phgaio RPP kai meta na kaneimake xwris
  problhmata. Alla o phgaios kwdikas den htan o arxikos prwtotypos, kai
  den yphrxe kamia anafora sto poies allages xreiasthke na kanoyme gia
  na ta kataferoyme na xtizetai epityxws.  8a eprepe na katebasete ton
  arxiko prwtotypo kwdika jexwrista.  Me to ROM, exete ton arxiko kwdika
  mazi me ena mpalwma (patch) to opoio xrhsimopoihsame gia na kanoyme th
  metaglwttish. Ayto to 8ewroume san ena megalo pleonekthma. Giati; Gia
  pollous logoys. Prwta - prwta, an bgei mia nea ekdosh kapoioy
  programmatos, de xreiazetai na arxisete anagkastika apo thn arxh gia
  na to metaglwttisete sto RHL. Mporeite na koitajete sto mpalwma
  (patch) gia to ti isws xreiastei na kanete. Me ayton ton tropo, oles
  oi proka8orismenes ry8miseis ths metaglwttishs einai eukola
  katanohtes.

  To RPM sxediasthke gia na prosferei isxyres dynatothtes erwthshs.
  Mporeite na cajete mesa se oloklhrh th bash sas gia paketa h gia
  oloklhra arxeia. Mporeite epishs na breite eukola se poio paketo
  anhkei ena sygkekrimeno arxeio kai apo poio prohl8e. Ta idia ta RPM
  arxeia einai sympiesmena arxeia, alla mporeite na kanete eukola kai
  suntoma mia erwthsh se jexwrista paketa xarh se mia epikefalida
  dyadikhs morfhs, poy exei proste8ei sto paketo kai periexei otidhpote
  xreiazetai na gnwrizete. Ayto syntelei se grhgorh erwthsh.

  Allo ena isxyro xarakthristiko einai h ikanothta na epalh8eusete
  paketa.  An anhsyxeite oti sbhsate ena shmantiko arxeio gia kapoio
  paketo, apla epalh8euste to. 8a enhmerw8eite gia tyxon anwmalies. Se
  ayth thn periptwsh, mporeite na epanegkatasthsete to paketo an einai
  aparaithto.  O,ti arxeia ry8misewn eixate 8a parameinoyn akeraia.

  8a 8elame na eyxaristhsoyme ta paidia ths dianomhs BOGUS mia kai
  polles apo tis idees toys xrhsimopoih8hkan sto RPM. An kai to RPM
  grafthke apokleistika apo th Red Hat Software, h leitoyrgia toy einai
  basismenh ston kwdika poy grafthke gia th dianomh BOGUS (PM kai PMS).


  3.  Genikes Plhrofories



  3.1.  Apoktwntas to RPM

  O kaluteros tropos na apokthsete to RPM einai na sthsete to Red Hat
  Linux.  An de 8elete na to kanete ayto, mporeite kai pali na parete
  kai na xrhsimopoihsete to RPM.  8a to breite sto ftp.redhat.com
  <ftp://ftp.redhat.com/pub/redhat/code/rpm>.


  3.2.  Apaithseis toy RPM

  H kuria apaithsh gia na trejete to RPM einai na exete to cpio 2.4.2 h
  megalutero.  An kai to susthma proorizetai gia xrhsh me Linux, mporei
  na metafer8ei kai se alla systhmata Unix. Sygkekrimena, exei
  metaglwttistei gia SunOS, Solaris, AIX, Irix, AmigaOS kai alla.  Sas
  proeidopoioume oti ta dyadika-ektelesima paketa poy dhmioyrgeite se
  ena susthma Unix de 8a einai symbata se allo susthma.

  Aytes einai oi elaxistes apaithseis gia na egkatasthsete RPMs. Gia na
  xtisete RPMs apo ton kwdika, xreiazeste oti 8a 8elate kanonika gia na
  xtisete ena paketo, opws ta gcc, make, klp.


  4.  Xrhsimopoiwntas to RPM

  Sthn aplousterh morfh toy, to RPM xrhsimopoieitai gia na egkatasthste
  paketa:


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




  H epomenh aploustath entolh apegka8ista ena paketo:


               rpm -e foobar




  Mia apo tis pio sun8etes alla kai polu xrhsimes entoles sas epitrepei
  na egkatasthsete paketa mesw FTP. An eiste syndedemenoi sto diktyo kai
  8elete na egkatasthsete ena neo paketo, to mono poy xreiazetai einai
  na prosdiorisete to arxeio  dinontas to katallhlo URL, opws :


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




  Parakalw shmeiwste oti to RPM 8a kanei thn erwthsh kai/h 8a
  egkatasthsei to paketo mesw FTP.

  Enw aytes einai aples entoles, to rpm mporei na xrhsimopoih8ei me
  pollous tropoys opws 8a deite apo to munhma 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}




  Mporeite na breite perissoteres leptomereies gia tis epiloges toy RPM
  sth selida boh8eias (man page).


  5.  Kai ti mporw na kanw pragmatika  me to RPM;

  To RPM einai polu xrhsimo ergaleio, kai opws 8a deite, exei polles
  epiloges.  O kaluteros tropos gia na bgalete mia akrh me aytes einai
  na deite merika paradeigmata. Deijame parapanw thn epilogh
  egkatastashs/apegkatastashs kai twra akoloy8oun merika akomh
  paradeigmata :

  ·  As poume oti diagracate merika arxeia kata la8os, alla den eiste
     sigoyroi gia to poia sbhsate. An 8elete na epalh8eusete to susthma
     sas kai na deite ti leipei, 8a gracete :


       rpm -Va

  ·  As poume oti synantate kapoio arxeio poy den anagnwrizete. Gia na
     breite se poio paketo anhkei, 8a gracete :


       rpm -qf /usr/X11R6/bin/xjewel




  To apotelesma 8a einai:


       xjewel-1.6-1




  ·  Briskete ena neo RPM me to onoma koules, alla den jerete ti einai
     ayto.  Gia na deite kapoies plhrofories sxetika me to paketo, 8a
     gracete :


       rpm -qpi koules-1.2-2.i386.rpm




  To apotelesma 8a einai:


       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.




  ·  Twra 8elete na deite poia arxeia egka8ista to RPM koules.  8a
     gracete:


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




  To apotelesma einai:










  /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




  Ayta htan merika paradeigmata. Mporeite na epinohsete pio dhmioyrgikes
  xrhseis toy RPM otan ejoikeiw8eite me ayto.


  6.  Xtizontas RPMs


  Einai arketa eukolo na xtisete RPMs, eidikotera an mporeite na
  kataferete na xtisete apo mono toy to logismiko poy sas endiaferei na
  paketarete.

  H basikh diadikasia gia na xtisete ena RPM einai h akoloy8h:

  ·  Elegjte oti to /etc/rpmrc exei egkatasta8ei sto susthma sas.

  ·  Kante ton phgaio kwdika gia ton opoio 8a xtiste to RPM na pernaei
     apo metaglwttish sto susthma sas.

  ·  Ftiajte ena mpalwma (patch) gia ka8e allagh poy xreiasthkate na
     kanete wste na metaglwttistei swsta

  ·  Ftiajte ena arxeio prodiagrafwn (spec file) gia to paketo.

  ·  Bebaiw8eite pws ola einai einai sth swsth toys 8esh.

  ·  Xtiste to paketo xrhsimopoiwntas to RPM.

  Ypo fysiologikes syn8hkes, to RPM dhmioyrgei toso to paketo toy
  ektelesimoy oso kai toy phgaioy kwdika.



  6.1.  To arxeio rpmrc

  Gia thn wra, h monh ru8mish toy RPM diati8etai mesw toy arxeioy
  /etc/rpmrc. Akoloy8ei ena paradeigma:








  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




  H grammh require_vendor kanei to RPM na zhta na brei mia grammh pwlhth
  (vendor). Ayth mporei na proel8ei apo to arxeio /etc/rpmrc h apo thn
  epikefalida toy idioy toy arxeioy prodiagrafwn (spec file).  Gia na to
  apenergopoihsete, allajte ton ari8mo se 0.  To idio isxuei gia tis
  grammes require_distribution kai require_group.

  H epomenh grammh einai sxetikh me th dianomh distribution. Mporeite na
  th dhlwsete edw h argotera sthn epikefalida toy arxeioy prodiagrafwn
  (spec file).  Otan xtizete to paketo gia kapoia sygkekrimenh dianomh,
  einai kalh idea na bebaiw8eite oti ayth h grammh einai swsth, akomh ki
  an den apaiteitai.  H grammh vendor doyleuei antistoixa, alla mporei
  na grafei otidhpote (p.x. Joe's Software and Rock Music Emporium).

  To RPM exei yposthrijh gia na xtisete paketa se pollaples
  arxitektonikes.  To arxeio rpmrc mporei na krata mia metablhth
  ``optflags'' gia na xtisete pragmata poy apaitoun sygkekrimena flags
  analoga me thn arxitektonikh kata to xtisimo toys.  Deite ta parakatw
  tmhmata gia to pws na xrhsimopoihsete ayth th metablhth.

  Yparxoyn kai alla polla epipleon macros poy mporeite na
  xrhsimopoihsete gia na deite ta tags kai ta dia8esima flags.


       rpm --showrc





  6.2.  To arxeio prodiagrafwn (Spec File)

  8a jekinhsoyme me syzhthsh gia to arxeio prodiagrafwn.  Ta arxeia
  prodiagrafwn apaitountai gia na xtisete ena paketo. To arxeio
  prodiagrafwn einai mia perigrafh toy logismikou mazi me entoles kai
  odhgies gia to pws 8a sth8oun kai mia lista gia ola ta ektelesima poy
  egkatasta8hkan.

  Kalo einai na onomasete to arxeio prodiagrafwn sumfwna me typikes
  symbaseis.  8a prepei na einai to paketo onoma-paula-ari8mos ekdoshs
  (version number)-paula- ari8mos seiras (release number)-teleia-spec.

  Akoloy8ei ena mikro paradeigma arxeioy prodiagrafwn (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
  Ayto to programma epitrepei sto xrhsth na bgazei (eject) ta mesa poy yposthrizoyn aytomath ejagwgh opws CD-ROMs,Jaz kai Zip drives, kai odhgous disketas se mhxanes 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.  H epikefalida

  H epikefalida exei merika sta8era pedia poy prepei na symplhrw8oun.
  Dinontai epishs kai merikes ypodeijeis. Ta pedia prepei na
  symplhrw8oun opws fainetai parakatw:

  ·  Summary: Einai h perigrafh toy paketoy se mia grammh.

  ·  Name: Einai to onoma toy rpm arxeioy poy skopeuete na
     xrhsimopoihsete.

  ·  Version: Einai h ekdosh (version) toy  rpm arxeioy poy skopeuete na
     xrhsimopoihsete.

  ·  Release: Einai h seira (release) toy paketoy gia thn parapanw
     ekdosh (p.x. an ftiajoyme ena paketo kai to broume ligo
     problhmatiko kai prepei na to janaftiajoyme, to epomeno paketo 8a
     einai seira 2).

  ·  Icon: Einai to onoma toy arxeioy toy eikonidioy poy 8a
     xrhsimopoih8ei me alla ergaleia egkatastashs ychlou epipedoy (opws
     to ``glint'' ths Red Hat). Prepei na einai gif kai na brisketai
     ston katalogo SOURCES.

  ·  Source: Ayth h grammh deixnei sthn topo8esia HOME toy arxikou
     arxeioy phgaioy kwdika.  Xrhsimopoieitai sthn periptwsh poy 8elete
     na parete ton kwdika jana h na elegjete gia newteres ekdoseis.
     Shmeiwsh:  To onoma arxeioy PREPEI na tairiazei me to onoma toy
     arxeioy poy exete sto susthma sas (p.x. mhn katebasete to phgaio
     arxeio kai allajete meta to onoma toy). Mporeite epishs na
     ka8orisete perissotera toy enos arxeia phgaioy kwdika
     xrhsimopoiwntas grammes opws :
       Source0: blah-0.tar.gz
       Source1: blah-1.tar.gz
       Source2: fooblah.tar.gz




  Ayta ta arxeia phgainoyn ston katalogo SOURCES . (H domh toy katalogoy
  8a syzhth8ei argotera se epomeno tmhma, "O dendroeidhs katalogos toy
  phgaioy kwdika").

  ·  Patch: Einai to meros poy 8a breite to mpalwma (patch) an xreiastei
     na to katebasete jana.  Shmeiwsh:  To onoma arxeioy edw prepei na
     tairiazei me ayto poy xrhsimopoieite otan ftiaxnete to diko SAS
     patch.  Mporei epishs na 8elete na shmeiwsete oti mporei na exete
     pollapla patch arxeia oso mporei na exete pollapla phgaia arxeia.
     8a exete kati san to parakatw:


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




  Ayta ta arxeia 8a pane ston katalogo SOURCES .

  ·  Copyright: Ayth h grammh anaferei gia ta dikaiwmata toy paketoy.
     8a prepei na xrhsimopoieite kati san GPL, BSD, MIT, public domain,
     distributable, h commercial.

  ·  BuildRoot: Ayth h grammh sas epitrepei na ka8orisete enan katalogo
     san ``root'' gia na xtisete kai na egkatasthsete ena paketo.
     Mporeite na to xrhsimopoihsete gia na testarete to paketo sas prin
     na to egkatasthsete sto mhxanhma sas.

  ·  Group: Ayth h grammh xrhsimopoieitai gia na pei se programmata
     egkatastashs ychlou epipedoy (opws to ``glint'' ths RedHat) pou na
     balei ayto to programma sth domh ths ierarxias.  To dendro toy
     gkroyp moiazei ws ejhs :

























  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  Den einai pragmatika ena tmhma ths epikefalidas, alla
     8a prepei na perigrafei me to ypoloipo ths epikefalidas. Xreiazeste
     ena tag perigrafhs ana paketo kai/h ypopaketo. Ayto einai ena pedio
     pollaplwn-grammwn poy prepei na xrhsimopoih8ei gia na dwsei mia
     katanohth perigrafh toy paketoy.
  6.4.  Prep

  Ayto einai to deutero tmhma sto arxeio prodiagrafwn. Xrhsimopoieitai
  gia na etoimasete ton kwdika gia xtisimo. Edw prepei na kanete
  otidhpote xreiastei gia na kanete patch toys kwdikes kai na toys
  egkatasthsete opws prepei gia na gracete make.

  Shmeiwste to ejhs:  Ka8e ena apo ayta ta tmhmata einai pragmatika
  xwros gia na ektelesete skriptakia floiou (shell scripts).  Mporeite
  apla na ftiajete ena sh script kai na to balete meta to %prep tag gia
  na jepaketarete kai na kanete patch ton kwdika sas.  Parolayta, exoyme
  ftiajei macros gia na boh8hsoyme s'ayto.

  To prwto ap'ayta ta macros einai to %setup macro. Sthn aplousterh toy
  morfh (xwris epiloges apo th grammh entolwn), apla jepaketarei ton
  kwdika kai mpainei ston katalogo me ton kwdika.  Pairnei epishs tis
  parakatw epiloges:


  ·  -n name 8etei to onoma toy katalogoy poy 8a xrhsimopoih8ei gia to
     xtisimo sto onoma poy akoloy8ei name.  To proka8orismeno onoma
     einai $ONOMA-$EKDOSH.  Alles dynatothtes perilambanoyn to $ONOMA,
     ${ONOMA}${EKDOSH}, h oti xrhsimopoiei to kurio tar arxeio.
     (Shmeiwste parakalw oti oi metablhtes ``$'' den einai pragmatikes
     metablhtes poy diati8entai mesa sto arxeio prodiagrafwn.
     Xrhsimopoiountai edw anti gia ena onoma-paradeigma.  Eseis prepei
     na xrhsimopoihsete to pragmatiko onoma kai thn ekdosh sto paketo
     sas, oxi mia metablhth).

  ·  -c 8a dhmioyrghsei kai 8a mpei ston onomazomeno katalogo prin na
     kanei untar.

  ·  -b # 8a kanei untar ton Kwdika# prin na mpei ston katalogo (kai de
     bgazei nohma me thn epilogh -c gi'ayto mhn to kanete). Ayto einai
     xrhsimo otan exete pollapla arxeia me kwdika.

  ·  -a # 8a kanei untar ton Kwdika# afou mpei ston katalogo.

  ·  -T Ayth h epilogh agnoei thn proka8orismenh epilogh poy kanei untar
     ton Kwdika kai apaitei thn epilogh -b 0 h -a 0 gia na kanete untar
     to kurio arxeio kwdika. 8a to xreiasteite ayto otan yparxoyn
     deytereuoyses phges.

  ·  -D MH diagrafete ton katalogo prin na jepaketarete. Ayto einai
     xrhsimo mono opoy exete perissotera toy enos macro egkatastashs. 8a
     prepei na xrhsimopoieitai mono se macros egkatastashs meta to prwto
     (alla pote sto prwto).


  To epomeno apo ta dia8esima macros einai to %patch macro. Ayto to
  macro boh8a sthn aytomatopoihsh ths diadikasias ths efarmoghs
  mpalwmatwn (patches) stoys kwdikes. Pairnei polles epiloges, oi opoies
  fainontai parakatw:

  ·  # 8a efarmosei to Patch#

  ·  -p # ka8orizei ton ari8mo twn diadoxikwn ypokatalogwn poy 8a
     agnohsei h entolh patch(1).

  ·  -P H proka8orismenh energeia einai h efarmogh toy Patch (h Patch0).
     Ayth h epilogh klhronomei thn proka8orismenh energeia kai 8a
     apaithsei ena 0 gia na kanei untar to kurio arxeio phgaioy kwdika.
     Ayth h epilogh einai xrhsimh se ena deutero (h metepeita) %patch
     macro to opoio apaitouse ena diaforetiko ari8mo apo to prwto macro.


  ·  Mporeite epishs na gracete %patch# anti gia thn pragmatikh entolh :
     %patch # -P

  Ayta prepei na einai ola ta macros poy xreiazeste.  Afou ta exete ayta
  swsta, mporeite na kanete opoiadhpote egkatastash 8elete me sh
  skriptakia.  Otidhpote symperilabete mexri to %build macro (to opoio
  8a syzhth8ei sto epomeno tmhma), ekteleitai mesw sh. Koitajte to
  parapanw paradeigma gia toys tupoys twn pragmatwn poy mporei na 8elete
  na kanete.


  6.5.  Xtisimo (Build)

  Den yparxoyn alh8eia macros se ayto to tmhma. 8a prepei apla na balete
  tis entoles poy 8a xreiastei na xrhsimopoihsete gia na xtisete to
  logismiko afou exete jepaketarei ton kwdika, ton exete kanei patch kai
  exete mpei ston katalogo.  Ayto einai apla ena akomh sunolo entolwn
  poy perniountai sto sh, etsi wste oles oi nomimes entoles sh mporoun
  na mpoyn edw (symperilambanomenwn twn sxoliwn).

  O trexwn katalogos poy doyleuete ginetai reset se ka8e ena apo ayta ta
  tmhmata sto pio chlo epipedo toy katalogoy poy periexei ton kwdika ,
  na to exete ypoch sas. Mporeite na mpeite stoys ypokatalogoys me cd an
  xreiastei.


  6.6.  Egkatastash

  Oute kai edw yparxoyn, pragmatika, macros. 8elete basika na balete oti
  entoles xreiazontai gia thn egkatastash. An exete sth dia8esh sas to
  make install sto paketo poy xtizete, balte to ekei.  An oxi, mporeite
  eite na kanete patch to makefile wste na gracete make install kai sth
  synexeia na zhthsete na ginei edw to make install , h mporeite na ta
  egkatasthsete edw me to xeri xrhsimopoiwntas sh entoles.  Mporeite na
  8ewrhsete ton trexwn katalogo san to pio chlo epipedo toy katalogoy me
  ton kwdika.


  6.7.  Proairetika skriptakia prin kai meta thn Egkatastash/Apegkatas­
  tash

  Mporeite na pros8esete skriptakia poy na trexoyn prin kai meta thn
  egkatastash/ apegkatastash twn ektelesimwn paketwn. O kurios logos
  gi'ayto einai na kanete pragmata opws na trejete to ldconfig afou
  egkatasthsete h afairesete paketa poy periexoyn diamoirazomenes
  biblio8hkes.  Ta macros gia ka8e ena apo ta skriptakia einai ta
  parakatw:

  ·  %pre einai to macro poy ektelei skriptakia prin thn egkatastash.

  ·  %post einai to macro poy ektelei skriptakia meta thn egkatastash.

  ·  %preun einai to macro poy ektelei skriptakia prin thn
     apegkatastash.

  ·  %postun einai to macro poy ektelei skriptakia meta thn
     apegkatastash.

  Ta periexomena aytwn twn tmhmatwn mporei na einai opoioydhpote tupoy
  sh script,  an kai de xreiazeste to #!/bin/sh.


  6.8.  Arxeia

  Ayto einai to tmhma opoy prepei na dwsete th lista twn arxeiwn gia to
  ektelesimo paketo.  To RPM den exei tropo na gnwrizei ti ektelesima
  egkatasta8hkan san apotelesma toy make install. DEN YPARXEI tropos na
  to kanete ayto.  Merikoi proteinoyn na ektelesete th find prin kai
  meta thn egkatastash toy paketoy. Se ena polyxrhstiko susthma, ayto
  einai aparadekto ka8ws einai dynato na dhmioyrgh8oun alla arxeia kata
  th diadikasia xtisimatos enos paketoy, ta opoia den exoyn apolutws
  kamia sxesh me to idio to paketo.

  Yparxoyn merika dia8esima macros poy kanoyn tetoies eidikes
  leitoyrgies. Ayta einai ta parakatw :

  ·  %doc xrhsimopoieitai gia na markarei mesa sto paketo phgaioy kwdika
     thn tekmhriwsh poy 8elete na egkatasta8ei me mia egkatastash
     binary. Ta keimena 8a egkatasta8oun sto
     /usr/doc/$NAME-$VERSION-$RELEASE.  Mporeite na exete me ayto to
     macro lista pollaplwn keimenwn sth grammh entolwn, h na parete th
     lista ka8enos jexwrista xrhsimopoiwntas ena macro gia ka8ena
     ap'ayta.

  ·  %config xrhsimopoieitai gia na markarei ta arxeia ry8misewn se ena
     paketo.  Ayto perilambanei arxeia opws ta sendmail.cf, passwd, klp.
     An argotera apegkatasthsete ena paketo poy periexei arxeia
     ry8misewn, opoia arxeia den allajan 8a sbhstoun kai opoia exoyn
     ypostei allages 8a metonomastoun sto palio onoma me katalhjh
     .rpmsave sto onoma toy arxeioy.  Mporeite, epishs, na parete th
     lista pollaplwn arxeiwn me ayto to macro.

  ·  %dir markarei ena mono katalogo se mia lista arxeiwn poy 8a
     symperilhf8ei san na anhkei sto paketo. Einai proka8orismeno, oti
     an deite th lista enos katalogoy XWRIS kapoio %dir macro, OLA se
     ayton ton katalogo symperilambanontai sth lista arxeiwn kai
     egka8istwntai san tmhma toy paketoy.

  ·  %files -f <filename> 8a sas epitrecei na emfanisete lista twn
     arxeiwn sas se kapoio ay8aireto arxeio mesa ston katalogo toy
     phgaioy kwdika opoy ginetai to xtisimo.  Ayto einai kalo se
     periptwseis opoy exete ena paketo poy mporei na xtisei th dikh toy
     lista arxeiwn. Tote apla enswmatwnete edw ayth th lista arxeiwn kai
     de xreiazetai na emfanisete eidikh lista arxeiwn.

  H megaluterh pagida sth lista arxeiwn einai h emfanish katalogwn. An
  emfanisete to /usr/bin kata la8os, to ektelesimo paketo sas 8a
  periexei ka8e arxeio sto /usr/bin sto susthma sas.


  6.9.  Xtizontas to


  6.9.1.  O dendroeidhs katalogos toy phgaioy kwdika

  To prwto poy xreiazeste einai ena kala ry8mismeno dendro gia xtisimo
  (build tree).  Ayto ry8mizetai xrhsimopoiwntas to arxeio /etc/rpmrc.
  Oi perissoteroi 8a xrhsimopoihsoyn apla to /usr/src.

  Mporei na xreiastei na dhmioyrghsete toys parakatw katalogoys gia na
  ftiajete ena dendro gia xtisimo (build tree):

  ·  BUILD einai o katalogos opoy ginetai to xtisimo apo to RPM.  De
     xreiazetai na testarete to xtisimo kapoy sygkekrimena, alla edw 8a
     kanei to RPM 8a kanei to xtisimo toy.

  ·  SOURCES einai o katalogos opoy 8a prepei na balete ta arxika tar
     arxeia phgaioy kwdika kai ta patches. Edw einai poy exei
     proka8oristei na cajei to RPM.

  ·  SPECS einai o katalogos opoy prepei na pane ola ta arxeia
     prodiagrafwn (spec).
  ·  RPMS einai ekei opoy 8a balei to RPM ola ta ektelesima RPMs meta to
     xtisimo.

  ·  SRPMS einai ekei poy 8a mpoyn ola ta RPMs phgaioy kwdika.


  6.9.2.  Elegxos sto xtisimo

  To prwto pragma poy pi8ana na 8elete na kanete einai na parete ton
  kwdika kai na xtisete to paketo xwris na xrhsimopoihsete ka8oloy to
  RPM. Gia na to kanete ayto, jepaketarete ton phgaio kwdika, kai
  allajte to onoma toy katalogoy se $NAME.orig. 3epaketarete ton kwdika
  jana. Xrhsimopoihste ton kwdika gia na xtisete to paketo. Phgainete
  ston katalogo me ton kwdika kai akoloy8hste tis odhgies gia to
  xtisimo. An prepei na allajete pragmata, 8a xreiasteite ena mpalwma
  (patch). Molis to xtisete, ka8ariste ton katalogo me ton phgaio
  kwdika.  Sigoyreyteite oti diagracate ola ta arxeia poy dhmioyrgh8hkan
  apo to script configure.  Sth synexeia, bgeite apo ton katalogo me ton
  phgaio kwdika ston pio panw grafontas cd . Kante kati san to parakatw:


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




  Ayto 8a sas dhmioyrghsei ena patch to opoio mporeite na xrhsimopoih­
  sete sto arxeio prodiagrafwn sas (spec file).  Shmeiwste oti to
  ``linux'' poy blepete sto onoma toy patch einai apla anagnwristiko.
  Mporeite na xrhsimopoihsete kati pio epejhghmatiko opws ``config'' h
  ``bugs'' wste na ejhghsete giati xreiasthke na ftiajete ayto to patch.
  Einai epishs kalh idea na koitajete to patch arxeio poy ftiaxnete prin
  na to xrhsimopoihsete wste na sigoyreyteite oti den symperilambanontai
  kata la8os tyxon ektelesima.


  6.9.3.  Dhmioyrgwntas th lista arxeiwn

  Twra poy exete ton kwdika gia to xtisimo toy paketoy kai jerete pws 8a
  to kanete, xtiste to kai egkatasthste to. Koitajte thn ejodo ths
  diadikasias egkatastashs kai xtiste th lista arxeiwn sas apo ayth poy
  8a xrhsimopoihsete sto arxeio prodiagrafwn. Synh8ws, xtizoyme to
  arxeio prodiagrafwn parallhla me ola ayta ta bhmata.  Mporeite na
  dhmioyrghsete to arxiko kai na symplhrwsete ta eukola tmhmata, kai sth
  synexeia na symplhrwnete kai ta ypoloipa bhmata ka8ws proxwrate.



  6.9.4.  Xtizontas to Paketo me RPM

  Apo th stigmh poy exete ena arxeio prodiagrafwn (spec file), eiste
  etoimoi na dokimasete na xtisete to paketo sas. O pio xrhsimos tropos
  na to kanete einai me mia entolh san thn akoloy8h :



               rpm -ba foobar-1.0.spec




  Yparxoyn epishs kai alles xrhsimes epiloges me to switch -b :

  ·  p shmainei na trejei apla to tmhma prep toy specfile.


  ·  l einai enas elegxos listas poy kanei merikous elegxoys sta
     %arxeia.

  ·  c kanei oti leei to tmhma prep kai metaglwttizei. Ayto einai
     xrhsimo otan den eiste sigoyroi gia to an o kwdikas sas 8a ginei
     build. Fainetai axrhsto epeidh mporei na 8elete na synexisete na
     paizete me ton idio ton kwdika mexri na xtistei kai meta na
     xrhsimopoihsete to RPM, alla otan ejoikeiw8eite me th xrhsh toy
     RPM, 8a breite stigmes poy 8a 8elhsete na to xrhsimopoihsete.

  ·  i kanei oti leei to tmhma prep, metaglwttizei kai egka8ista.

  ·  b kanei oti leei to tmhma prep, metaglwttizei, egka8ista kai xtizei
     mono to ektelesimo paketo.

  ·  a ta xtizei ola (kai ta ektelesima kai ta phgaioy kwdika paketa).

     Yparxoyn arketes parallages sto -b switch. Aytes einai oi akoloy8es
     :

  ·  --short-circuit 8a metabei katey8eian se ena sygkekrimeno shmeio
     (mporei na xrhsimopoih8ei mono me ta c kai i).

  ·  --clean apomakrunei to dendro xtisimatos (build tree) otan
     teleiwsei.

  ·  --keep-temps 8a krathsei ola ta temp arxeia kai ta scripts poy
     ftiaxthkan sto /tmp.  Mporeite na deite poia arxeia dhmioyrgh8hkan
     ston katalogo /tmp xrhsimopoiwntas thn epilogh -v .

  ·  --test den ektelei pragmatika ta bhmata, mono elegxei an mporoun na
     ginoyn.


  6.10.  Elegjte to

  Afou ftiajate ena ektelesimo kai ena me ton phgaio kwdika rpm gia to
  paketo sas, xreiazetai na to elegjete. O eykoloteros kai kaluteros
  tropos einai na xrhsimopoihsete ena teleiws diaforetiko mhxanhma gia
  na to dokimasete.  Sto katw-katw, exete kanei tosa make install sto
  mhxanhma sas, poy 8a prepei na egkatasta8ei kala.

  Mporeite na elegjete to paketo grafontas rpm -u packagename, alla ayto
  mporei na sas ejapathsei epeidh sto xtisimo toy paketoy, kanate make
  install.  An afhsete kati ejw apo th lista arxeiwn sas, de 8a
  apegkatasta8oun.  8a egkatasthsete jana to ektelesimo paketo (binary
  package) kai to susthma sas 8a leitoyrgei kai pali, alla to rpm den
  einai entajei. Sigoyreyteite kai exete ypoch sas oti mporei eseis na
  grafete rpm -ba package, polloi omws egka8istoun to paketo sas
  kanontas rpm -i package. Sigoyreyteite oti den kanete tipota sta
  tmhmata build h install poy 8a xreiastei na ginei otan ta ektelesima
  paketa egka8istantai mona toys.



  6.11.  Ti na kanete me ta nea sas RPMs

  Molis ftiajete to diko sas neo RPM gia kati (ypo8etoyme oti einai kati
  poy den yparxei se RPM), mporeite na prosferete th doyleia sas kai se
  alloys (epishs ypo8etoyme oti ftiajate RPM enos programmatos poy
  dianeimetai eleu8era). Gia na to kanete ayto, 8a 8elhsete na to
  anebasete sto ftp.redhat.com <ftp://ftp.redhat.com>.




  6.12.  Kai twra;

  Diabaste parakalw ta parapanw tmhmata sxetika me ton Elegxo kai toy ti
  na kanete me ta nea RPMs. 8eloyme osa RPMs einai dynato na exoyme, kai
  8eloyme malista na einai kai kala RPMs. Parakalw dwste arketo xrono
  sto testarisma twn paketwn RPMs kai kante ton kopo na ta balete sto
  internet gia to kalo olwn mas. Epishs, parakalw sigoyreyteite oti
  kanete upload eleu8era dia8esimo logismiko. Emporiko kai shareware
  logismiko de 8a prepei na ginetai upload ektos ki an exoyn anaferetai
  rhta oti epitrepetai sthn adeia pneymatikhs idiokthsias. Ayto
  perilambanei to logismiko Netscape, ssh, pgp, klp.


  7.  Xtizontas RPM gia polles arxitektonikes

  To RPM mporei na xrhsimopoih8ei gia na xtisete paketa gia Intel i386,
  Digital Alpha poy trexoyn Linux kai se Sparc. Exei anafer8ei oti
  doyleuei epishs kai se sta8mous ergasias SGI kai HP. Yparxoyn diafora
  xarakthristika poy kanoyn to xtisimo twn paketwn eukolo se oles tis
  platformes. To prwto einai h ntirektiba ``optflags'' sto /etc/rpmrc.
  Mporei na xrhsimopoih8ei gia na 8esete flags poy xrhsimopoiountai otan
  xtizete logismiko, se times poy ejartwntai apo thn arxitektonikh toy
  systhmatos.  Allo ena xarakthristiko einai ta ``arch'' macros sto
  arxeio prodiagrafwn (spec file).  Mporoun na xrhsimopoih8oun gia na
  kanete diafora pragmata analoga me thn arxitektonikh toy systhmatos
  sthn opoia to xtizete.  Allo ena xarakthristiko einai h ntirektiba
  ``Exclude'' sthn epikefalida (header).


  7.1.  Ena aplo arxeio prodiagrafwn (spec File)

  To parakatw einai tmhma toy arxeioy prodiagrafwn (spec file) gia to
  paketo ``fileutils''.  Einai ry8mismeno gia na xtizetai kai se Alpha
  kai se 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

  Se ayto to paradeigma, mporeite na deite pws xrhsimopoieitai h
  ntirektiba ``optflags'' apo to /etc/rpmrc. Analoga me to panw se poia
  arxitektonikh 8a xtisete, dinete thn katallhlh timh sto RPM_OPT_FLAGS.
  Prepei na kanete patch to Makefile etsi wste to paketo sas na
  xrhsimopoiei ayth th metablhth anti twn kanonikwn ntirektibwn poy 8a
  mporousate na xrhsimopoihsete (opws -m486 kai -O2).  Mporeite na
  parete mia kalh idea gia to ti xreiazetai na kanete egka8istwntas to
  phgaio kwdika toy paketoy kai aposympieste ton kwdika kai ejetaste to
  Makefile.  Koitajte tote to patch gia to Makefile kai deite ti allages
  prepei na kanete.


  7.3.  Macros

  To %ifarch macro einai polu shmantiko se ola ayta. Tis perissoteres
  fores 8a xreiastei na efarmosete ena-duo patch eidika gia mia
  sygkekrimenh arxitektonikh.  Se ayth thn periptwsh, to RPM 8a sas
  epitrecei na efarmosete ayto to patch se mia arxitektonikh mono.

  Sto parapanw paradeigma, to fileutils exei ena patch gia mhxanes 64
  bit.  Profanws, ayto 8a prepei na efarmostei mono se Alpha gia thn
  wra. Etsi, pros8etoyme ena %ifarch macro gurw apo to 64 bit patch opws
  parakatw:

  %ifarch axp
  %patch1 -p1
  %endif




  Ayto ejasfalizei oti to patch de 8a efarmostei se opoiadhpote arxitek­
  tonikh ektos apo alpha.


  7.4.  Afairwntas arxitektonikes apo Paketa

  Gia na mporeite na synthreite paketa RPMs phgaioy kwdika se enan
  katalogo gia oles tis platformes, exoyme ylopoihsei thn ikanothta na
  "afaireite" paketa wste na mh xtistoun se sygkekrimenes
  arxitektonikes. Ayto ginetai wste na mporeite na kanete akomh pragmata
  opws


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




  kai na xtisete ta swsta paketa. An den exete  metaferei mia efarmogh
  se mia sygkekrimenh platforma, to mono poy prepei na kanete einai na
  pros8esete mia grammh san ayth :


       ExcludeArch: axp




  sthn epikefalida toy arxeioy prodiagrafwn toy paketoy me ton kwdika.
  Sth synexeia, janaxtiste to paketo sthn platforma gia thn opoia
  proorizetai.  8a exete tote ena paketo phgaioy kwdika poy paizei se
  Intel kai mporei eukola na metafer8ei se Alpha.


  7.5.  Teleiwnontas

  Synh8ws, einai eykolotero na xrhsimopoihsete RPM gia na ftiajete
  paketa gia pollaples -arxitektonikes apo to na parete to ka8e paketo
  jexwrista kai na to xtisete sta duo merh.  Ka8ws polla apo ta megala
  paketa xtizontai, ayto ginetai eykolotero, parolayta.  Opws panta, o
  kaluteros tropos gia na anazhthsete boh8eia otan kollhsete xtizontas
  ena RPM einai na deite ton kwdika enos paromoioy paketoy.



  8.  Pneymatika Dikaiwmata

  Ta pneymatika dikaiwmata aytou toy keimenoy kai twn periexomenwn toy
  prostateuontai.  Epitrepetai h epanadianomh aytou toy keimenoy efoson
  to periexomeno toy paramenei analloiwto.  Me alla logia, to mono poy
  mporeite na kanete einai na allajete th morfh toy keimenoy, na to
  typwsete jana h na to dianeimete.


  9.  Peri ths Ellhnikhs Metafrashs

  Gia sxolia, parathrhseis, dior8wseis, enhmerwseis peri ths Ellhnikhs
  metafrashs aytou toy HOWTO, steilte email sthn Boula Sanida :
  voulariba@hellug.gr