<sect1 id="compiling">
 <title>A GNOME fordítása</title>

 <para>
   Igazából erre a fejezetre nem is szabadna, hogy szükséged legyen, mivel ideális esetben
   minden a rendelkezésre áll a rendszeredhez illő csomag formájában.
   Mindig akadnak azonban olyanok, akik saját maguk szeretnek fordítani és csomagolni.
   Íme egy lista a leggyakrabban felmerülő kérdésekkel:
 </para>

 <qandaset defaultlabel="qanda">

  <qandaentry id="compile-order">
   <question>
    <para>
      Milyen sorrendben kell a csomagokat lefordítani?
    </para>
   </question>
   <answer>
    <para>
      Erről a sorrendről azt jelentették, hogy jól működik:
    </para>
    <procedure>
     <title>A GNOME fordítási sorrendje</title>
     <step>
      <para>
        <application>glib</application>
      </para>
     </step>
     <step>
      <para>
        <application>gtk+</application>
      </para>
     </step>
     <step>
      <para>
        <application>imlib</application>
      </para>
     </step>
     <step>
      <para>
        <application>ORBit</application>
      </para>
     </step>
     <step>
      <para>
        <application>audiofile</application>
      </para>
     </step>
     <step>
      <para>
        <application>esound</application>
      </para>
     </step>
     <step>
      <para>
        <application>libxml</application>
      </para>
     </step>
     <step>
      <para>
        <application>gnome-libs</application>
      </para>
     </step>
     <step>
      <para>
        <application>gdk-pixbuf</application>
      </para>
     </step>
     <step>
      <para>
        <application>libghttp</application>
      </para>
     </step>
     <step>
      <para>
        <application>libglade</application>
      </para>
     </step>
     <step>
      <para>
        <application>libgtop</application>
      </para>
     </step>
     <step>
      <para>
        <application>gnome-print</application>
      </para>
     </step>
     <step>
      <para>
        <application>control-center</application>
      </para>
     </step>
     <step>
      <para>
        <application>gnome-core</application>
      </para>
     </step>
    </procedure>
    <para>
      Ezek után a sorrend kevésbé érdekes. A fennmaradó GNOME alkalmazások
      tetszőleges sorrendben fordíthatók.
     <note>
      <title>Extrák a Nautilus-hoz és az Evolution-hoz</title>
      <para>
	    Ha kísérletezni akarsz az <application>Evolution</application>-nal
        és/vagy a <application>Nautilus</application>-szal &mdash; ez a
        két alkalmazás jelenleg még nem része az általános GNOME disztribúciónak
        &mdash; akkor le kell tölteni és le kell fordítani az alábbi
        programokat is:
        <application>gconf</application>, <application>oaf</application>,
        <application>popt</application> és <application>bonobo</application>.
	    Mindegyikük egyszer majd része lesz a GNOME-nak, de jelenleg a
	    hivatalos változat még nem tartalmazza ezeket.
      </para>
     </note>
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="compile-howto">
   <question>
    <para>
      Ez mind szép és jó, de hogyan fordítom le a tar csomagokat?
    </para>
   </question>
   <answer>
    <para>
      Ha rpm-alapú rendszered van, kihagyhatod ezt a részt és ugorj rögtön
      az "rpm generálása tar fájlokból" bekezdésre. Ez megment sok,
      a fájlok a rendszerben történő elhelyezésével kapcsolatos problémától.
      Ha nem rpm-alapú a rendszered, a következőkben ismertetjük az
      általános fordítási eljárást (a parancsokat normális felhasználóként add ki):
    </para>
    <procedure>
     <title>Tar fájlok fordítása</title>
     <step>
      <para>
	  Csomagold ki a tar fájlt és a <command>cd</command> paranccsal lépj be
        a frissen létrejött könyvtárba.
      </para>
     </step>
     <step>
      <para>
       <command>./configure</command>
      </para>
     </step>
     <step>
      <para>
       <command>make</command>
      </para>
     </step>
     <step>
      <para>
	Ez a megfelelő alkalom a program kipróbálására.
      </para>
     </step>
     <step>
      <para>
        <command>su</command>
      </para>
     </step>
     <step>
      <para>
        <command>make install</command>
       </para>
     </step>
     <step performance="optional">
      <para>
	Ha szeretnéd később maradéktalanul eltávolítani a programot, ne
	töröld le a fájlokat ebből a könyvtárból. Ez lehetővé teszi a
        <command>make uninstall</command> parancs kiadását később.
	Bővebb információt a
        <link linkend="uninstalling">kérdések az eltávolításról</link>
        részben találsz.
      </para>
     </step>
    </procedure>

    <para>
      Az így feltelepített fájlok a
      <filename class="directory">/usr/local/</filename> könyvtárba kerülnek, itt a
      helyük a saját kezűleg gyártott programoknak.
      Ha máshova szeretnéd telepíteni az alkalmazásokat, két lehetőséged van:
      letöltöd a rendszerednek megfelelő csomagokat, ekkor az
      alkalmazások a rendszer több programja
      mellé kerülnek, vagy átadsz a <command>./configure</command> parancsnak néhány
      extra paramétert. A szóban forgó paraméterek általában a
      <option>--prefix</option> és <option>--sysconfdir</option>.
      Mások a <option>--localstatedir</option> és <option>--datadir</option> paraméterek
      használatát is javasolják.

     <note>
      <title>Csak hogy előre tudd</title>
      <para>
	Kérlek olvasd el az előző bekezdés első mondatát újból.
        A saját kezűleg fordított programok helye <emphasis>minden esetben</emphasis> a
        <filename class="directory">/usr/local/</filename> könyvtár.
	A csomagkezelő rendszerek (rpm, dpkg) bináris programjaival való keveredés
        miatt az olyan könyvtárak, mint a <filename class="directory">/usr/</filename>
	általánosan nem ajánlottak.
      </para>
     </note>
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="compile-prefixes">
   <question>
    <para>
      A rendszerem fájlrendszerén már található egy GNOME. Hogyan lehetek
      biztos abban, hogy az újonnan fordított csomagjaim ugyanerre a helyre kerülnek?
    </para>
   </question>
   <answer>
    <para>
      Alap esetben, a tar fájlok, amelyeket saját kezűleg fordítasz, a
      <filename class="directory">/usr/local</filename> könyvtárba telepítik a programokat.
      Mi persze nem mindig ezt szeretnénk, hiszen ha később használjuk a rendszer csomagkezelőjét,
      akkor az jó eséllyel nem veszi majd észre a saját készítésű,
      <filename class="directory">/usr/local/</filename> könyvtárban található, alkalmazásokat.
    </para>
    <para>
      A különféle módszerekkel azonos könyvtárba felrakott csomagok előbb-utóbb
      összeakadnak, ezért kialakult egy nagyon erős iskola, amely azt vallja,
      hogy csomagkezelési módszerenként külön könyvtárat kell használni.
      Ha rpm alapú rendszert használsz, az <link linkend="tarball-to-rpm">alább ismertetett módon</link>
      a legtöbb GNOME csomagból könnyen készíthetsz RPM-et.
    </para>
    <para>
      Mindezek mellett, a különféle disztribúciók a prefixek különféle kombinációit
      használják. Megkérdezheted a gépeden található <application>GNOME</application>-ot, hogy
      melyik prefixeket részesíti előnyben.
      Próbálki ki a következő parancsokat:
      <command>gnome-config --prefix</command> és
      <command>gnome-config --sysconfdir</command>.
      A visszakapott eredmények felhasználhatók
      a <command>./configure</command> szkript paramétereként:
      <command>./configure --prefix=/usr --sysconfdir=/etc</command>.
      Természetesen az egész műveletet trükkösen, egyetlen sorban is meg lehet oldani:
      <command>./configure --prefix=`gnome-config --prefix` --sysconfdir `gnome-config --sysconfdir`</command>
      A lehetséges paraméterekről teljes listát a <command>./configure --help</command>
      parancs kiadásával kaphatsz.
    </para>
    <para>
      Ha mégis a fordítás mellett döntesz, az alábbi kombinációk valamelyike jól jöhet:
    </para>
    <table>
     <title>Prefixek a különböző platformokhoz</title>
     <tgroup cols="4" align="left">
      <thead>
       <row>
        <entry>OS</entry>
        <entry>--prefix</entry>
        <entry>--sysconfdir</entry>
        <entry>Megjegyzés</entry>
       </row>
      </thead>

      <tbody>
       <row>
        <entry>Red Hat Linux</entry>
        <entry>/usr</entry>
        <entry>/etc</entry>
        <entry></entry>
       </row>

       <row>
        <entry>Debian GNU/Linux</entry>
        <entry>/usr</entry>
        <entry>/etc</entry>
        <entry></entry>
       </row>

       <row>
        <entry>Caldera OpenLinux</entry>
        <entry>/opt/gnome</entry>
        <entry>/etc/opt/gnome</entry>
        <entry>a Ximian GNOME a /opt/gnome/etc könyvtárat használja sysconfdir-nek</entry>
       </row>

       <row>
        <entry>SuSE Linux</entry>
        <entry>/opt/gnome</entry>
        <entry>/etc/opt/gnome</entry>
        <entry></entry>
       </row>

       <row>
        <entry>Linux Mandrake</entry>
        <entry>/usr</entry>
        <entry>/etc</entry>
        <entry></entry>
       </row>

       <row>
        <entry>Solaris</entry>
        <entry>/opt/gnome</entry>
        <entry></entry>
        <entry>a Ximian GNOME a /opt/gnome/etc könyvtárat használja sysconfdir-nek</entry>
       </row>
      </tbody>
     </tgroup>
    </table>
   </answer>
  </qandaentry>

  <qandaentry id="double-gnome">
   <question>
    <para>
      Van egy teljesen jól feltelepített GNOME-om, de ki szeretnék próbálni pár
      újabb csomagot, a meglévő környezet tönkretétele nélkül. Tudok újabb
      GNOME csomagokat külön helyre telepíteni? Hogyan oldható ez meg?
    </para>
   </question>
   <answer>
    <para>
      Igen, ez is lehetséges. A legjobb megközelítés az, hogy lefordítod magad,
      a saját könyvtáradba. Ezt normál felhasználóként végrehajtva, biztosan nem
      írhatod felül a rendszerre telepített binárisokat.
      <!-- Thanks to Eric Baudais for the instructions -->
    </para>
    <procedure>
     <title>A GNOME telepítése a saját könyvtáradba</title>
     <step>
      <para>
        <command>cd</command> (ugrás a felhasználó saját könyvtárába)
      </para>
     </step>
     <step>
      <para>
        <command>tar xvfz gnome-package.tar.gz</command> (a csomag kicsomagolása)
      </para>
     </step>
     <step>
      <para>
        <command>cd gnome-package</command> (belépés a kicsomagolt könyvtárba)
      </para>
     </step>
     <step>
      <para>
        <command>./configure --prefix=~/gnome --sysconfdir=~/gnome/etc</command>
        (jegyezd meg, hogy minden prefix <keycap>~</keycap> jellel kezdődik.
	Ne felejtsd ki ezeket!)
      </para>
     </step>
     <step>
      <para>
        <command>make</command> (fordítás. Ez a leghosszabb fázis.)
      </para>
     </step>
     <step>
      <para>
        <command>make install</command> (rakd oda, ahol a következő programok látják)
      </para>
     </step>
     <step>
      <para>
        <command>cd ~/gnome/bin</command> (ide kellett kerüljön a végeredmény)
      </para>
     </step>
     <step>
      <para>
        <command>./gnome-app</command> (már ki is lehet próbálni)
      </para>
     </step>
    </procedure>
    <para>
       A fenti módszer a legtöbb esetben működik, de elképzelhetők problémák
       az appletekkel, mert ezek számítanak a <filename>/etc/CORBA/servers</filename>
       fájl jelenlétére.
       Megpróbálhatsz létrehozni egy szimbolikus linket a saját könyvtáradból erre a fájlra,
       de az írótok ezt még nem próbálta.
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="tarball-to-rpm">
   <question>
    <para>
      A rendszerem RPM-alapú. Mit kezdjek a tar fájlokkal?
    </para>
   </question>
   <answer>
    <para>
      Csinálhatsz RPM csomagot a tar fájlból, ha ez tartalmaz érvényes
      spec fájlt. A legtöbb GNOME csomagban van ilyen. Rendszergazdaként
      az <command>rpm -tb &lt;tar_fájl_nevenév&gt;</command> paranccsal lehet bináris
      rpm-et készíteni, vagy az <command>rpm -ta &lt;tar_fájl_neve&gt;</command> paranccsal
      bináris és forrás csomagokat.
    </para>
    <para>
      Ha nincs spec fájl a tar fájlon belül, elképzelhető, hogy valaki már beküldte
      a házilag elkészített spec fájlt a
      <ulink type="http" url="http://mail.gnome.org/mailman/listinfo/gnome-list/">
      gnome-list levelező listára</ulink> vagy a
      <ulink type="http" url="http://news.gnome.org/gnome-news/">Gnotices</ulink>.
      webhelyre.
      Ha innen egy külön spec fájlt szereztél, a következő két lehetőséged van:
    </para>
    <para>
      Első lehetőség: rendszergazdaként helyezd el a csomag tar fájlját a
      <filename class="directory">/usr/src/redhat/</filename> könyvtárban található SOURCES
      könyvtárban és a spec fájlt a SPECS könyvtárban, majd lépj be a SPECS könyvtárba,
      és add ki az <command>rpm -ba csomagneve.spec</command> parancsot.
      A <filename class="directory">redhat</filename> könyvtárnevet a disztribúciód
      nevéhez kell igazítanod! Azt a könyvtárat keresd, amelyik a
      <filename class="directory">/usr/src</filename>-ben található, és
     <emphasis>nem</emphasis> <filename class="directory">linux</filename>-nak hívják.
    </para>
    <para>
      Másik lehetőség: csomagold ki a tar fájlt a <command>tar xvfz csomagnev.tar.gz</command>
      paranccsal,
      másold a spec fájlt a létrejövő könyvtárba, és csomagold vissza tar fájlba a
      <command>tar cvfz csomagnev.tar.gz foo/*</command> paranccsal.
      Ezután rendszergazdaként add ki az <command>rpm -ta</command> parancsot az új tar fájlra.
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="rh-locale-fix">
   <question>
    <para>
      Problémáim vannak az RPM gyártással, mert a különböző nyelvek nem találhatók.
    </para>
   </question>
   <answer>
    <para>
      Add ki ezt a parancsot az rpm készítése előtt:
      <command>unset LINGUAS</command>. Most már működnie kell az RPM gyártásnak.
      Ezt az utasítást a spec fájl %build részébe is bele lehet írni.
      Van aki úgy tartja, az sem árt, ha a <envar>LANGUAGE</envar>,
      <envar>LANG</envar> és <envar>LC_ALL</envar>
      környezeti változókat is nullázod (unset).
      <!-- FIXME: Are unset LANGUAGE, LC_ALL and LANG actually necessary? -->
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="db2html">
   <question>
    <para>
      Szükségem van a <quote>db2html</quote> programra néhány súgófájl elkészítéséhez.
      Mi ez, és honnan szerezhetem be?
    </para>
   </question>
   <answer>
    <para>
      A <application>db2html</application> egy szkript, amely meghívja a
      <application>jade</application> vagy <application>openjade</application> programokat.
      A DocBook eszközök csomagolása más és más függően az OS-től és a disztribúciótól.
      Red Hat-nál és néhány egyéb disztribúciónál a kérdéses szkript a
      <application>stylesheets</application> csomagban található. Egyéb rendszereken
      különféle DocBook csomagok része lehet. Jelenleg a következő csomagokat használjuk
      sgml-common, docbook, jade (vagy openjade) és stylesheets (vagy cygnus-stylesheets).
      Ha Postscript dokumentációt is akarsz
      készíteni a jadetex csomagra is szükség van.
      Egy új DocBook eszköz gyűjtemény már készítés alatt van, ez lesz a docbook-utils csomag.
      A DocBook eszközök hivatalos forrása a Cygnus
      <ulink type="http"
      url="http://sources.redhat.com/docbook-tools/">docbook tools
      webhely</ulink> és a hozzá tartozó
      <ulink type="ftp"
      url="ftp://sourceware.cygnus.com/pub/docbook-tools/">ftp archívum</ulink>.
      Jelenleg mindkettő a Red Hat-nál található, de az eszközök egyre növekvő
      számban érhetők el a nagyobb Linux és BSD disztribúciók részeként, tehát érdemes ez ügyben
      a disztribúciód gyártójának FTP helyét is megnézni. A GNOME a DocBookot sok
      dokumentációnál használja
      és sok információt találhatsz róla a
      <ulink type="http" url="http://developer.gnome.org/projects/gdp/">Gnome
      Documentation Project</ulink> oldalain.
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="gnome-stylesheets">
   <question>
    <para>
      A DocBook csomagokat rendesen feltelepítettem, de amikor egy csomagot
      el akarok készíteni,
      hibaüzeneteket kapok a dokumentáció készítése közben.
    </para>
   </question>

   <answer>
    <para>
      A GNOME külön stíluslapot és DTD-t használ a grafikákat tartalmazó dokumentumokhoz.
      Ezek lehetővé teszik a PNG képek használatát GIF-ek helyett.
      Nagy csomagok esetén a csomagok karbantartásáért felelősek meggyőződnek arról, hogy
      dokumentáció már elkészítve kerül a tar fájlba. Vannak azonban esetek, amikor ez nem történik meg. Általában ezek a <quote>nem végfelhasználóknak szánt</quote>, nem stabil kiadások. Azokat, akik ilyen tar csomagokat használnak, nem zavarják az ilyen hibaüzenetek.Ha mégis találkoznál ilyen hibával, a következőket teheted:
    </para>
    <itemizedlist>
     <listitem>
      <para>
        A <command>./configure</command> után és a <command>make</command> előtt
        szerkeszd át a <filename>Makefile.am</filename> fájlt és töröld a
        "docs" szót a "SUBDIRS" sorból. Ezzel kiiktatható a dokumentáció
	létrehozása.
      </para>
     </listitem>
     <listitem>
      <para>
        Változtasd meg a DTD bejegyzést (a sor a kapcsos zárójelek között). Módosítsd a
        <replaceable>"-//GNOME//DTD DocBook PNG Variant V1.1//EN"</replaceable>
        szöveget a <replaceable>"-//OASIS//DTD DocBook V3.1//EN"</replaceable>-re
        az összes fájlban amelyeknek a vége <quote>.sgml</quote>.
	Ha akarod eltávolíthatod az összes szekciót, ami úgy néz ki, hogy grafikára utal
        (könnyen felismerhető az azt körülvevő
        <sgmltag>&lt;figure&gt;</sgmltag> és a
        <sgmltag>&lt;/figure&gt;</sgmltag> tagokról.
	Ezután a dokumentáció grafika nélkül készül
        (vagy a képekre mutató hibás linkek maradnak benne, ha benne hagyod a tagokat).
      </para>
     </listitem>
     <listitem>
      <para>
        Töltsd le a GNOME DTD-t és a stíluslapokat és
        telepítsd azokat. Hozzáférhető tar csomagként,
        deb vagy rpm formátumban <ulink type="http"
        url="http://people.redhat.com/dcm/software.html">Dave
        Mason oldalán</ulink>. Ezután már hibátlanul el lehet készíteni mindent.
      </para>
     </listitem>
    </itemizedlist>
   </answer>
  </qandaentry>

  <qandaentry id="package-devel">
   <question>
    <para>
      Feltelepítettem az összes alap csomagot az ftp helyről, de amikor
      el akarok kezdeni fordítani valamit, egy hiányzó fejléc fájl miatt
      az alábbi hibaüzenet jelenik meg: <quote>Cannot find gnome-libs</quote> vagy
      <quote>somefile.h: not found</quote>.
    </para>
   </question>
   <answer>
    <para>
      Ez azoknál fordul elő, akik bináris rpm vagy deb csomagokat telépítettek. A
      tar fájlok telepítésekor és a forrás rpm vagy deb telepítésekor e hiba
      nem jelentkezik.
    </para>
    <para>
      A bináris csomagok elnevezése általában kétféle lehet. Az egyik a
      &lt;csomag&gt;.suffix formájú, és van ami &lt;package-dev&gt;.suffix vagy
      &lt;package-devel&gt;.suffix nevű. (A SuSE nyolcbetűs csomagneveket használ,
      ez rövidebb neveket eredményezhet: &lt;pkgdev&gt;.suffix vagy &lt;pkgd&gt;.suffix.)
      Az első típusú csomagok tartalmazzák a futtatható programokat, ezeket nevezik
      <quote>alap</quote> csomagoknak az ftp helyeken. A második típusba azok tartoznak
      amelyeket olyan új programok lefordításakor, illetve telepítésekor használunk, amelyek
      függnek ettől a csomagtól. A devel csomag fejléc (*.h) fájlokat tartalmaz, amelyekre 
      szükség van új programok fordításakor. Ha például egy tar fájlból akarunk fordítani
      (vagy rpm-et generálni belőle),
      nem árt beszerezni a gnome-core-devel, gnome-libs-devel csomagokat és az összes szükséges
      egyéb csomagot az alap csomagokon felül.
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="berkeley-db-compat">
   <question>
   <!-- This Q and parts of A courtesy of Sven Wallman -->
    <para>
      A gnome-libs -et nem lehet lefordítani <systemitem class="osname">Solaris
      2.6</systemitem> alatt. A hiba a következő: <errorname>Berkeley DB lacking DB 1.85 compatibility</errorname>
    </para>
   </question>
   <answer>
    <para>
      <application>Berkeley DB</application> 2.7.7 verziónál újabb kiadásai
      (lényegében a 3-as és az annál újabbak)
      megtörték a kompatibilitást az 1.85-ös verzióval.
      Érdemes beszerezni a 2.7.7-et vagy megnézni a
      <filename class="headerfile">db_185.h</filename> fájlban illeszkedő hibajavítást,
      amely a
      <ulink type="http"
      url="http://www.stahl.bau.tu-bs.de/~hildeb/postfix/docs/faq.html#db">
      postfix FAQ</ulink>-ban található. A javítás felrakása után a beállítószkriptekkel is bűvészkedni kell még egy kicsit. (A fordító megjegyzése: a gnome-libs fordításakor a ./configure szkriptnek meg kell adni egy a Berkeley DB-vel kapcsolatos kapcsolót).
    </para>
    <para>
      Ha Solarisra fordítasz Gnome-ot, érdemes megnézni Paul Barnfeather oldalát
      (<ulink type="http"
      url="http://www.clanger9.demon.co.uk/computer/gnome/">Building GNOME
      on Solaris</ulink>).
    </para>
   </answer>
  </qandaentry>

  <qandaentry id="uninstalling">
   <question>
    <para>
      Hogyan távolítsak el valamit, amit telepítettem?
    </para>
   </question>
   <answer>
    <para>
      Az rpm segítségével: <command>rpm --erase csomagnév</command>.
    </para>
    <para>
      A dpkg segítségével: többféle módon
    </para>
    <itemizedlist>
     <listitem>
      <para>
        <command>dpkg --remove csomagnév</command>
      </para>
     </listitem>
     <listitem>
      <para>
        <command>apt-get remove csomagnév</command>
      </para>
     </listitem>
    </itemizedlist>
    <para>
      vagy
    </para>
    <itemizedlist>
     <listitem>
      <para>
        <command>dpkg --purge csomagnév</command>
      </para> <!--to build some of the help files. -->
     </listitem>
     <listitem>
      <para>
        <command>apt-get remove --purge csomagnév</command>
      </para>
     </listitem>
    </itemizedlist>
    <para>
      Ajánlott az <command>apt-get</command> parancs használata, mivel ez
      automatikusan kezeli a függőségeket. A <option>--purge</option>
      kapcsoló mindkét parancsnál azt jelenti, hogy a csomaggal
      együtt a testreszabott konfigurációs fájlok is törlendők!
    </para>
      <para>
      A tar fájlok esetében: meg kell tartani a forráskönyvtárat.
      Lépje be a program forráskönyvtárába, és add ki a
      <command>make uninstall</command> parancsot, ezután reménykedj abban,
      hogy ezt a make szabályt már megírta valaki ;-).
    </para>
   </answer>
  </qandaentry>
 </qandaset>
</sect1>
