aboutsummaryrefslogtreecommitdiff
path: root/hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml
diff options
context:
space:
mode:
authorGabor Kovesdan <gabor@FreeBSD.org>2012-10-01 09:53:01 +0000
committerGabor Kovesdan <gabor@FreeBSD.org>2012-10-01 09:53:01 +0000
commitb4346b9b2dfe86a97907573086dff096850dcb1d (patch)
tree9b951977cbd22dada9b868ac83b1d56791ea3859 /hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml
parentbee5d224febbeba11356aa848006a4f5f9e24b30 (diff)
downloaddoc-b4346b9b2dfe86a97907573086dff096850dcb1d.tar.gz
doc-b4346b9b2dfe86a97907573086dff096850dcb1d.zip
- Rename .sgml files to .xml
- Reflect the rename in referencing files Approved by: doceng (implicit)
Notes
Notes: svn path=/head/; revision=39631
Diffstat (limited to 'hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml')
-rw-r--r--hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml4604
1 files changed, 4604 insertions, 0 deletions
diff --git a/hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml b/hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml
new file mode 100644
index 0000000000..93566945fe
--- /dev/null
+++ b/hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.xml
@@ -0,0 +1,4604 @@
+<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
+<!--
+ The FreeBSD Documentation Project
+
+ $FreeBSD$
+-->
+
+<!-- The FreeBSD Hungarian Documentation Project
+ Translated by: PALI, Gabor <pgj@FreeBSD.org>
+ %SOURCE% en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml
+ %SRCID% 1.249
+-->
+
+<chapter id="updating-upgrading" lang="hu">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Jim</firstname>
+ <surname>Mock</surname>
+ <contrib>Átdolgozta, átrendezte és egyes
+ részeit aktualizálta: </contrib>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <firstname>Jordan</firstname>
+ <surname>Hubbard</surname>
+ <contrib>Eredetileg írta: </contrib>
+ </author>
+ <author>
+ <firstname>Poul-Henning</firstname>
+ <surname>Kamp</surname>
+ </author>
+ <author>
+ <firstname>John</firstname>
+ <surname>Polstra</surname>
+ </author>
+ <author>
+ <firstname>Nik</firstname>
+ <surname>Clayton</surname>
+ </author>
+ </authorgroup>
+ </chapterinfo>
+
+ <title>A &os; frissítése és frissen
+ tartása</title>
+
+ <sect1 id="updating-upgrading-synopsis">
+ <title>Áttekintés</title>
+
+ <para>A &os; a kiadások közt is állandó
+ fejlődésben van. Vannak felhasználók,
+ akik a hivatalosan kiadott változatokat
+ használják, és vannak, akik szeretik
+ folyamatosan nyomonkövetni a fejlesztéseket. Emellett
+ viszont a hivatalos kiadások esetében
+ szükség lehet bizonyos biztonsági
+ frissítések és kritikus
+ javítások alkalmazására.
+ Függetlenül a pillanatnyilag használt
+ változattól, a &os; alaprendszerében
+ megtalálható minden olyan eszköz, amellyel
+ könnyedén frissíteni tudunk a
+ különböző verziók között.
+ Ebben a fejezetben segítünk dönteni a
+ fejlesztői változat és a kiadások
+ használata között. Továbbá
+ megismerhetjük a rendszer frissítéséhez
+ használható alapvető
+ eszközöket.</para>
+
+ <para>A fejezet elolvasása során
+ megismerjük:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>milyen segédprogramokkal tudjuk frissíteni
+ az alaprendszert és a Portgyűjteményt;</para>
+ </listitem>
+
+ <listitem>
+ <para>hogyan tartsuk naprakészen rendszerünket a
+ <application>freebsd-update</application>,
+ <application>CVSup</application>,
+ <application>CVS</application> vagy
+ <application>CTM</application>
+ használatával;</para>
+ </listitem>
+
+ <listitem>
+ <para>hogyan vessük össze a telepített
+ rendszerünk aktuális állapotát egy
+ ismert eredeti változattal;</para>
+ </listitem>
+
+ <listitem>
+ <para>hogyan frissítsük a
+ dokumentációt <application>CVSup</application>
+ vagy dokumentációs portok<!-- és
+ <application>Docsnap</application>-->
+ segítségével.</para>
+ </listitem>
+
+ <listitem>
+ <para>a két fejlesztői ág, a &os.stable;
+ és a &os.current; közti
+ különbséget;</para>
+ </listitem>
+
+ <listitem>
+ <para>a <command>make buildworld</command> (stb.)
+ segítségével hogyan fordítsuk
+ és telepítsük újra az egész
+ alaprendszert.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>A fejezet elolvasásához ajánlott:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>a hálózati kapcsolatunk helyes
+ beállítása (<xref
+ linkend="advanced-networking"/>);</para>
+ </listitem>
+ <listitem>
+ <para>a külső szoftverek
+ telepítésének ismerete (<xref
+ linkend="ports"/>).</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>A fejezetben a &os; forrásainak
+ frissítését a <command>cvsup</command>
+ parancs segítségével fogjuk
+ elvégezni. Ehhez telepítsük a <filename
+ role="package">net/cvsup</filename> portot vagy csomagot (ha a
+ <command>cvsup</command> parancsot nem akarjuk grafikus
+ felületen keresztül használni, akkor
+ elegendő csak a <filename>net/cvsup-without-gui</filename>
+ portot). Ha a &os; 6.2-RELEASE vagy későbbi
+ változatával rendelkezünk, akkor
+ elegendő csak az alaprendszer részeként
+ elérhető &man.csup.1; programot
+ használnunk.</para>
+ </note>
+ </sect1>
+
+ <sect1 id="updating-upgrading-freebsdupdate">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Írta: </contrib>
+ </author>
+ </authorgroup>
+
+ <authorgroup>
+ <author>
+ <firstname>Colin</firstname>
+ <surname>Percival</surname>
+ <contrib>A megíráshoz felhasznált
+ jegyzeteket készítette: </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>A &os; frissítése</title>
+
+ <indexterm><primary>frissítés és frissen tartás</primary></indexterm>
+
+ <indexterm>
+ <primary>freebsd-update</primary>
+ <see>frissítés és frissen tartás</see>
+ </indexterm>
+
+ <para>A biztonsági javítások
+ telepítése minden
+ számítógépes szoftver,
+ különösen az operációs rendszerek
+ számára lényeges mozzanat. Nagyon
+ hosszú ideig ez a &os; esetében nem volt
+ könnyen megoldható: a javításokat
+ közvetlenül a forráskódon kellett
+ elvégezni, ezekből újrafordítani a
+ rendszert, majd telepíteni.</para>
+
+ <para>Ez a nehézség mostanra viszont már
+ elhárult, mivel a &os; legfrissebb verziói már
+ tartalmaznak egy <command>freebsd-update</command> nevű
+ segédprogramot, amellyel mindez leegyszerűsödik.
+ Ez a program két külön funkciót lát
+ el. Először is, lehetővé teszi, hogy a &os;
+ alaprendszer újrafordítása és
+ -telepítése nélkül javítsunk
+ biztonsági és egyéb apró
+ hibákat, valamint másodsorban támogatja a
+ kisebb és nagyobb verziójú kiadások
+ közti váltást.</para>
+
+ <note>
+ <para>Ezek a bináris frissítések azonban csak
+ a &os; biztonsági csapata által is felügyelt
+ architektúrák és kiadások
+ esetén érhetőek el. Emellett bizonyos
+ lehetőségek használatához,
+ például a &os; verziói közti
+ átállás támogatásához
+ a &man.freebsd-update.8; legújabb változata
+ szükségeltetik. Ezért ne felejtsük el
+ alaposan átolvasni a legújabb
+ kiadásokról szóló
+ bejelentéseket mielőtt frissítenénk
+ rájuk, mivel ezzel kapcsolatban fontos
+ információkat tartalmazhatnak. Az említett
+ bejelentések a <ulink
+ url="http://www.FreeBSD.org/releases/"></ulink> címen
+ érhetőek el.</para>
+ </note>
+
+ <para>Ha a <command>crontab</command> már hivatkozik a
+ <command>freebsd-update</command> programra, akkor a most
+ következő művelet elkezdése előtt
+ tiltsuk le.</para>
+
+ <sect2 id="freebsdupdate-config-file">
+ <title>A konfigurációs állományok</title>
+
+ <para>Ha változtatnénk szeretnénk a
+ frissítési folyamaton, ekkor a programhoz
+ tartozó, <filename>/etc/freebsd-update.conf</filename>
+ nevű konfigurációs állományt
+ kell módosítanunk. Az opciók
+ részletes ismertetéssel rendelkeznek, habár
+ némelyiknél még további
+ magyarázat kellhet:</para>
+
+ <programlisting># Az alaprendszerben frissíteni kívánt komponensek
+Components src world kernel</programlisting>
+
+ <para>Ezzel a paraméterrel határozhatjuk meg, hogy a
+ &os; mely részei kerüljenek frissítésre.
+ Alapértelmezés szerint a program frissíti a
+ forrásokat, a teljes alaprendszert és a
+ rendszermagot. Komponensként a
+ telepítésnél választható
+ elemeket adhatjuk meg, például "world/games"
+ hozzáadásakor a games kategória elemei is
+ folyamatosan frissülni fognak. Az "src/bin"
+ megadásakor pedig az <filename
+ class="directory">src/bin</filename> könyvtár
+ tartalma frissül.</para>
+
+ <para>Ezt a beállítást a legjobb meghagyni az
+ alapértelmezett értéken, mivel a
+ további elemek megadásánál
+ egyenként fel kell sorolni a frissítendő
+ komponenseket. Ha itt viszont kifelejtünk valamit, akkor
+ könnyen megeshet, hogy a források és a
+ binárisok verziója elcsúszik
+ egymástól.</para>
+
+ <programlisting># Az IgnorePaths beállítás után megadott szövegre illeszkedő összes
+# bejegyzés frissítése kimarad
+IgnorePaths</programlisting>
+
+ <para>Ennél a beállításnál
+ azokat a könyvtárakat kell megadnunk, amelyeket
+ (és tartalmukat) ki szeretnénk hagyni a
+ frissítés során. Ezek lehetnek
+ például a <filename
+ class="directory">/bin</filename> vagy az <filename
+ class="directory">/sbin</filename>. Így meg tudjuk
+ akadályozni, hogy <command>freebsd-update</command>
+ esetleg felülírjon valamilyen helyi
+ változtatást a rendszerünkben.</para>
+
+ <programlisting># Az UpdateIfUnmodified beállítás után megadott elérési útvonalakon csak
+# a felhasználó által még nem módosított állományok fognak frissülni
+# (hacsak a módosításokat össze nem fésüljük, lásd lentebb)
+UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile</programlisting>
+
+ <para>A megadott könyvtárakban csak azokat a
+ konfigurációs állományokat fogja
+ frissíteni, amelyeket nem változtattuk meg.
+ Amennyiben bármelyikük eltér az eredetileg
+ frissítendő változattól, azt a program
+ nem módosítja. Létezik egy másik
+ hasonló beállítás, a
+ <literal>KeepModifiedMetadata</literal>, amely
+ hatására a <command>freebsd-update</command> az
+ összefésülés során elmenti a
+ változtatásokat.</para>
+
+ <programlisting># A MergeChanges beállításnál szereplő állományok helyi módosításait
+# automatikusan összefésüljük a &os; újabb verziójára frissítése közben
+MergeChanges /etc/ /var/named/etc/</programlisting>
+
+ <para>Itt azokat a könyvtárakat adhatjuk meg,
+ amelyekben a <command>freebsd-update</command>
+ számára engedélyezzük a
+ konfigurációs állományok új
+ verziójának
+ összefésülését a jelenlegi
+ állapottal. Az összefésülés
+ lényegében a &man.mergemaster.8;
+ használatánál már megszokott
+ módon, &man.diff.1; formátumban érkező
+ módosítások sorozata alapján
+ történik. Ekkor egy szövegszerkesztő
+ segítségével felügyelhetjük az
+ összefésülés menetét vagy
+ megállíthatjuk a <command>freebsd-update</command>
+ futását. Ha kétségeink
+ adódnak, akkor egyszerűen mentsük le az
+ <filename class="directory">/etc</filename>
+ könyvtárat és fogadjuk el mindegyik
+ összefésülés eredményét.
+ A <command>mergemaster</command>
+ működéséről a <xref
+ linkend="mergemaster"/> ad részletesebb
+ tájékoztatást.</para>
+
+ <programlisting># A &os; frissítésekor ezt a könyvtárat fogja a program használni a
+# letöltött módosítások és az egyéb ideiglenes állományok tárolására
+# WorkDir /var/db/freebsd-update</programlisting>
+
+ <para>Az itt megadott könyvtárba fognak kerülni
+ az elvégzendő módosítások
+ és az egyéb ideiglenesen keletkező
+ állományok. A verziók közti
+ váltás során ebben a
+ könyvtárban ajánlott legalább
+ 1&nbsp;GB szabad tárterületnek lennie.</para>
+
+ <programlisting># A kiadások közti váltás során a Components beállításnál megadott
+# elemek kerüljenek csak frissítésre (StrictComponents yes), vagy a
+# program próbálja meg magától kitalálni, hogy milyen komponesek
+# *lehetnek* fenn a rendszeren és azokat frissítse (StrictComponents
+# no)?
+# StrictComponents no</programlisting>
+
+ <para>Ha ennél a beállításnál a
+ <literal>yes</literal> értéket adjuk meg, akkor a
+ <command>freebsd-update</command> feltételezni fogja,
+ hogy a <literal>Components</literal> opciónál
+ felsoroltunk minden frissítendő komponenst és
+ nem próbál meg mást is
+ megváltoztatni. Ilyenkor tehát a
+ <command>freebsd-update</command> tulajdonképpen
+ egyedül csak a <literal>Components</literal> által
+ meghatározott elemekhez tartozó
+ állományokat fogja frissíteni.</para>
+ </sect2>
+
+ <sect2 id="freebsdupdate-security-patches">
+ <title>Biztonsági javítások</title>
+
+ <para>A biztonsági javítások mindig egy
+ távoli gépen tárolódnak, a
+ következő parancsok használatával
+ tölthetőek le és
+ telepíthetőek:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update fetch</userinput>
+&prompt.root; <userinput>freebsd-update install</userinput></screen>
+
+ <para>Amennyiben a rendszermagot is érintik
+ javítások, úgy a rendszert a művelet
+ befejeződésével újra kell
+ indítanunk. Ha minden a megfelelő módon
+ történt, akkor a rendszerünk már
+ tartalmazni fogja a korábban letöltött
+ és telepített javításokat, és
+ a <command>freebsd-update</command> akár
+ beállítható egy naponta
+ végrehajtandó &man.cron.8; feladatnak. Ehhez
+ mindössze a következő bejegyzést kell
+ elhelyeznünk az <filename>/etc/crontab</filename>
+ állományban:</para>
+
+ <programlisting>@daily root freebsd-update cron</programlisting>
+
+ <para>A bejegyzés szerint naponta egyszer le fog futni a
+ <command>freebsd-update</command>. Ilyenkor, vagyis a
+ <option>cron</option> paraméter megadásakor a
+ <command>freebsd-update</command> csak ellenőrzi, hogy
+ vannak-e telepítendő frissítések. Ha
+ talál, akkor automatikusan letölti ezeket a lemezre,
+ de nem telepíti. Helyette levélben
+ értesíti a <username>root</username>
+ felhasználót, aki ezután bármikor
+ manuálisan kérheti a
+ telepítést.</para>
+
+ <para>Probléma esetén az alábbi paranccsal
+ megkérhetjük a <command>freebsd-update</command>
+ programot a legutóbb telepített
+ módosítások
+ visszavonására:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update rollback</userinput></screen>
+
+ <para>Ha ez a visszavonás a rendszermagra vagy annak
+ moduljaira is vonatkozott, akkor a rendszert újra kell
+ indítanunk a parancs futásának
+ befejeződésével. A &os; csak ilyenkor
+ képes betölteni az új binárisokat
+ betölteni a memóriába.</para>
+
+ <para>A <command>freebsd-update</command>
+ önmagától csak a <literal>GENERIC</literal>
+ típusú rendszermagokat képes
+ frissíteni. Ha saját rendszermagot
+ használunk, akkor azt a rendszer többi
+ komponensének frissítését
+ követően újra kell fordítanunk és
+ telepítenünk. A <command>freebsd-update</command>
+ azonban még akkor is érzekelni és
+ frissíteni fogja a <literal>GENERIC</literal>
+ rendszermagot (amennyiben az létezik), ha az éppen
+ nem az aktuális(an futó) rendszermag.</para>
+
+ <note>
+ <para>Mindig érdemes tartani egy másolatot a
+ <literal>GENERIC</literal> rendszermagról a <filename
+ class="directory">/boot/GENERIC</filename>
+ könyvtárban. Rengeteg
+ különböző probléma
+ felderítésében tud segíteni,
+ illetve ez a <xref linkend="freebsdupdate-upgrade"/> szakaszban
+ leírt <command>freebsd-update</command> programmal
+ végzett frissítéseknél is hasznos
+ lehet.</para>
+ </note>
+
+ <para>Hacsak nem változtatjuk meg az
+ <filename>/etc/freebsd-update.conf</filename>
+ állományt, a <command>freebsd-update</command> a
+ rendszermag forrásait is frissíti a többivel
+ együtt. A saját rendszermag
+ újrafordítása és
+ telepítése ezután a már a megszokott
+ módon elvégezhető.</para>
+
+ <note>
+ <para>A <command>freebsd-update</command> által
+ terjesztett frissítések nem mindig érintik
+ a rendszermagot. Ha a rendszermag forrásai nem
+ változnak egy <command>freebsd-update
+ install</command> parancs kiadása során, akkor
+ nem kötelező újrafordítani a
+ saját rendszermagot. A
+ <command>freebsd-update</command> viszont mindig
+ módosítani fogja a
+ <filename>/usr/src/sys/conf/newvers.sh</filename>
+ állományt. Itt az aktuális
+ hibajavítás sorszáma szerepel (amelyet a
+ <literal>-p</literal> (mint <quote>patch
+ level</quote> előtaggal kapcsolnak a rendszer
+ verziójához, és a <command>uname
+ -r</command> paranccsal lehet lekérdezni). Ennek
+ megfelelően tehát a saját rendszermag
+ újrafordítása után, még ha
+ semmi más nem is változott, a &man.uname.1;
+ képes pontosan jelezni a rendszerhez
+ készült hibajavítás
+ sorszámát. Ez különösen fontos
+ több rendszer karbantartása során, mivel
+ így könnyen és gyorsan
+ tájékozódhatunk azok
+ naprakészségéről.</para>
+ </note>
+ </sect2>
+
+ <sect2 id="freebsdupdate-upgrade">
+ <title>Váltás kisebb és nagyobb
+ verziók között</title>
+
+ <para>Verziók közti váltás során
+ a külső alkalmazások
+ műkődését akadályozó
+ régi tárgykódok és
+ függvénykönyvtárak törlődni
+ fognak. Ezért javasoljuk, hogy vagy
+ töröljük le az összes portot és
+ telepítsük újra, vagy az alaprendszer
+ frissítése után hozzuk ezeket is
+ naprakész állapotba a <filename
+ role="package">ports-mgmt/portupgrade</filename>
+ segédprogram segítségével.
+ Először minden bizonnyal szeretnék
+ kipróbálni a frissítést, ezt a
+ következő paranccsal tehetjük meg:</para>
+
+ <screen>&prompt.root; <userinput>portupgrade -af</userinput></screen>
+
+ <para>Ezzel gondoskodunk róla, hogy a minden a
+ megfelelően telepítődjön újra. Ha a
+ <envar>BATCH</envar> környezeti változót a
+ <literal>yes</literal> értékre
+ állítjuk, akkor a folyamat során
+ megjelenő összes kérdésre automatikusan
+ a <literal>yes</literal> választ adjuk, ezáltal
+ önállósítani tudjuk.</para>
+
+ <para>Ha saját rendszermagot használunk, akkor
+ ennél valamivel azért több feladatunk van.
+ Szükségünk lesz a <literal>GENERIC</literal>
+ rendszermagot egy példányára, amelyet
+ másoljunk a <filename
+ class="directory">/boot/GENERIC</filename>
+ könyvtárba. Amennyiben nincs
+ <literal>GENERIC</literal> típusú rendszermag a
+ rendszerünkön, a következő módok
+ valamelyikén keresztül tudunk szerezni:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Ha a saját rendszermagot még csak egyszer
+ fordítottuk, akkor a <filename
+ class="directory">/boot/kernel.old</filename>
+ könyvtárban még
+ megtalálható a <literal>GENERIC</literal>.
+ Ezt nevezzük át egyszerűen <filename
+ class="directory">/boot/GENERIC</filename>
+ könyvtárra.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ha fizikailag hozzá tudunk férni az
+ érintett géphez, akkor a
+ <literal>GENERIC</literal> egy
+ példányát akár CD-ről is
+ átmásolhatjuk. Helyezzük be a
+ telepítőlemezt és adjuk ki a
+ következő parancsokat:</para>
+
+ <screen>&prompt.root; <userinput>mount /cdrom</userinput>
+&prompt.root; <userinput>cd /cdrom/<replaceable>X.Y-RELEASE</replaceable>/kernels</userinput>
+&prompt.root; <userinput>./install.sh GENERIC</userinput></screen>
+
+ <para>Itt a <filename
+ class="directory"><replaceable>X.Y-RELEASE</replaceable></filename>
+ könyvtár nevében
+ értelemszerűen helyettesítsük be az
+ általunk használt változatot. A
+ <literal>GENERIC</literal> rendszermag ekkor
+ alapértelmezés szerint a <filename
+ class="directory">/boot/GENERIC</filename>
+ könyvtárba kerül.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ha az előbbiek közül egyik sem
+ lehetséges, akkor a <literal>GENERIC</literal>
+ rendszermagot közvetlenül akár
+ forrásból is lefordíthatjuk és
+ telepíthetjük:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>env DESTDIR=/boot/GENERIC make kernel</userinput>
+&prompt.root; <userinput>mv /boot/GENERIC/boot/kernel/* /boot/GENERIC</userinput>
+&prompt.root; <userinput>rm -rf /boot/GENERIC/boot</userinput></screen>
+
+ <para>A <command>freebsd-update</command> akkor fogja ezt
+ <literal>GENERIC</literal> rendszermagként
+ felismerni, ha a hozzá tartozó
+ konfigurációs állományt nem
+ módosítjuk. Továbbá javasoljuk,
+ hogy semmilyen speciális
+ beállítást ne alkalmazzunk a
+ fordítás során (érdemes
+ üresen hagyni ehhez az
+ <filename>/etc/make.conf</filename>
+ állományt).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Nem kötelező újraindítani a
+ rendszert a <literal>GENERIC</literal> rendszermaggal.</para>
+
+ <para>A <command>freebsd-update</command> képes
+ frissíteni rendszerünket egy adott kiadásra.
+ Például a következő paraméterek
+ megadásával válthatunk a &os;&nbsp;6.4
+ használatára:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update -r 6.4-RELEASE upgrade</userinput></screen>
+
+ <para>A parancs elindulása után nem sokkal, a
+ váltáshoz szükséges
+ információk
+ összegyűjtéséhez a
+ <command>freebsd-update</command> elemzi a
+ konfigurációs állományában
+ megadott beállításokat és a rendszer
+ jelenleg használt verzióját. A
+ képernyőn ekkor sorban megjelennek a program
+ részéről érzékelt és nem
+ érzékelt komponensek. Mint például
+ ahogy itt látható:</para>
+
+ <screen>Looking up update.FreeBSD.org mirrors... 1 mirrors found.
+Fetching metadata signature for 6.3-RELEASE from update1.FreeBSD.org... done.
+Fetching metadata index... done.
+Inspecting system... done.
+
+The following components of FreeBSD seem to be installed:
+kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
+src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
+src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
+world/base world/info world/lib32 world/manpages
+
+The following components of FreeBSD do not seem to be installed:
+kernel/generic world/catpages world/dict world/doc world/games
+world/proflibs
+
+Does this look reasonable (y/n)? y</screen>
+
+ <para>Ekkor a <command>freebsd-update</command>
+ megpróbálja letölteni a verziók
+ közti váltáshoz szükséges
+ összes állományt. Bizonyos esetekben
+ kérdésekkel fordul a felhasználó
+ felé arra vonatkozóan, hogy miket
+ telepítsen fel vagy mit csináljon.</para>
+
+ <para>A saját rendszermag használatakor az
+ iménti lépés valamilyen ehhez hasonló
+ figyelmeztetést fog adni:</para>
+
+ <screen>WARNING: This system is running a "<replaceable>SAJÁT RENDSZERMAG</replaceable>" kernel, which is not a
+kernel configuration distributed as part of FreeBSD 6.3-RELEASE.
+This kernel will not be updated: you MUST update the kernel manually
+before running "/usr/sbin/freebsd-update install"</screen>
+
+ <para>Ez a figyelmeztetés most nyugodtan figyelmen
+ kívül hagyható. A folyamat során a
+ frissített <literal>GENERIC</literal> rendszermagot
+ fogjuk használni.</para>
+
+ <para>A javítások letöltését
+ követően megkezdődik a
+ telepítésük. A váltás ezen
+ lépése az adott gép aktuális
+ terhelésétől és
+ sebességétől függően
+ változó hosszúságú lehet.
+ Ezután a konfigurációs
+ állományok összefésülése
+ zajlik le &mdash; itt általában a emberi
+ felügyeletre is szükség van az
+ állományok
+ összefésülésének
+ irányításához, amelynek folyamatosan
+ láthatóak az eredményei. A
+ meghiúsult vagy kihagyott
+ összefésülések a teljes
+ frissítési folyamat leállását
+ vonják maguk után. Az <filename
+ class="directory">/etc</filename> könyvtárban
+ tárolt fontosabb állományokról, mint
+ például a <filename>master.passwd</filename> vagy
+ <filename>group</filename> javasolt előzetesen
+ biztonsági mentést készíteni
+ és később kézzel hozzájuk adni
+ a változtatásaikat.</para>
+
+ <note>
+ <para>A rendszerben ekkor még nem lesz jelen semmilyen
+ konkrét változás, az összes
+ említett javítás és
+ összefésülés egy külön
+ könyvtárban történik. A
+ telepített javításokat és az
+ összefésült konfigurációs
+ állományokat a folyamat végén
+ magának a felhasználónak kell
+ véglegesíteni.</para>
+ </note>
+
+ <para>A frissítési eljárás
+ végén a következő parancs
+ kiadásával tudjuk ténylegesen
+ érvényesíteni az eddig elvégzett
+ módosításokat:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
+
+ <para>Először mindig a rendszermag és a
+ hozzá tartozó modulok cserélődnek le.
+ Ahogy ez végrehajtódott, újra kell
+ indítanunk a rendszert. Ha saját rendszermagot
+ használunk, akkor a &man.nextboot.8; parancs
+ segítségével állítsuk be a
+ következő rendszerindítás során
+ betöltendő rendszermagot a <filename
+ class="directory">/boot/GENERIC</filename>
+ könyvtárban levőre (ezt
+ frissítettük):</para>
+
+ <screen>&prompt.root; <userinput>nextboot -k GENERIC</userinput></screen>
+
+ <warning>
+ <para>Mielőtt újraindítanánk a
+ gépünket a <literal>GENERIC</literal>
+ rendszermaggal, győződjünk meg róla,
+ hogy szerepel benne minden olyan meghajtó, amely
+ elengedhetetlen a rendszer hiánytalan
+ indításához (és képes lesz
+ újra csatlakozni a hálózathoz, ha
+ éppen távolról adminisztráljuk).
+ Ez különösen olyan esetben fontos, amikor a
+ saját rendszermagunkban beépítetten
+ szerepeltek bizonyos modulok. Ilyenkor a
+ <literal>GENERIC</literal> rendszermag használatakor
+ ezeket a <filename>/boot/loader.conf</filename>
+ állományon keresztül töltethetjük
+ be ideiglenesen. A frissítés
+ befejezéséig érdemes viszont minden nem
+ létfontosságú szolgáltatást
+ leállítani, leválasztani lemezeket
+ és hálózati megosztásokat
+ stb.</para>
+ </warning>
+
+ <para>A rendszerünk most már
+ újraindítható a frissített
+ rendszermaggal:</para>
+
+ <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
+
+ <para>A rendszer sikeres újraindulása után
+ ismét el kell indítanunk a
+ <command>freebsd-update</command> programot, amely
+ korábban már elmentette a frissítés
+ állapotát, emiatt a legutóbbi
+ pontról fog folytatódni, illetve törli az
+ osztott könyvtárak és
+ tárgykódok régebbi változatait.
+ Innen az alábbi paranccsal léphetünk
+ tovább:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
+
+ <note>
+ <para>A függvénykönyvtárak
+ verziói közti eltérések
+ mértékétől függően
+ elképzelhető, hogy a telepítés az
+ említett három fázis helyett
+ kettőben történik.</para>
+ </note>
+
+ <para>Most pedig újra kell fordítanunk vagy
+ telepítenünk az összes általunk
+ korábban használt külső
+ alkalmazást. Erre azért van
+ szükségünk, mert bizonyos alkalmazások a
+ verziók közti váltás során
+ törölt programkönyvtáraktól
+ függtek. Ennek automatizálásában a
+ <filename role="package">ports-mgmt/portupgrade</filename> lesz
+ segítségünkre. Az alkalmazások
+ frissítésének
+ elindításához a következő
+ parancsokat használjuk:</para>
+
+ <screen>&prompt.root; <userinput>portupgrade -f ruby</userinput>
+&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db</userinput>
+&prompt.root; <userinput>portupgrade -f ruby18-bdb</userinput>
+&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db</userinput>
+&prompt.root; <userinput>portupgrade -af</userinput></screen>
+
+ <para>A parancsok lefutását követően a
+ <command>freebsd-update</command> utolsó
+ hívásával zárjuk le a
+ frissítést. Ezzel a paranccsal tudunk
+ tehát pontot tenni a frissítési
+ procedúra végére:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
+
+ <para>Ha a <literal>GENERIC</literal> rendszermagot csak
+ átmenetileg használtuk, akkor most már a
+ megszokott módon fordíthatunk és
+ telepíthetünk magunk egy saját
+ rendszermagot.</para>
+
+ <para>Indítsuk újra a rendszert a &os;
+ frissített változatával. A folyamat ezzel
+ véget ért.</para>
+ </sect2>
+
+ <sect2 id="freebsdupdate-system-comparison">
+ <title>Rendszerek állapotainak
+ összehasonlítása</title>
+
+ <para>A <command>freebsd-update</command> ragyogóan
+ felhasználható a &os; egy telepített
+ változatának és egy általunk
+ garantáltan megbízható
+ példányának
+ összevetésére. Ilyenkor a rendszerhez
+ tartozó segédprogramokat,
+ programkönyvtárakat és
+ konfigurációs állományokat
+ ellenőriztethetjük le. Az
+ összehasonlítást ezzel a paranccsal
+ kezdhetjük meg:</para>
+
+ <screen>&prompt.root; <userinput>freebsd-update IDS &gt;&gt; eredmeny.idk</userinput></screen>
+
+ <warning>
+ <para>Habár a parancs neve <acronym>IDS</acronym>
+ (intrusion detection system), nem helyettesít semmilyen
+ olyan behatolásjelző megoldást, mint
+ amilyen például a <filename
+ role="package">security/snort</filename>. Mivel a
+ <command>freebsd-update</command> adatokat tárol a
+ lemezen, teljesen kézenfekvő a
+ hamisítás lehetősége. Míg
+ ennek eshetősége adott mértékben
+ visszaszorítható a
+ <varname>kern.securelevel</varname>
+ csökkentésével és a
+ <command>freebsd-update</command> által használt
+ adatok írásvédett
+ állományrendszerre helyezésével,
+ erre a problémára az ideális
+ megoldást mégis egy teljes biztonságban
+ tudható referencia rendszer jelentheti. Ennek
+ tárolására alkalmas lehet
+ például egy <acronym>DVD</acronym> vagy egy
+ külső <acronym>USB</acronym>-egység.</para>
+ </warning>
+
+ <para>A parancs kiadása után megkezdődik a
+ rendszer vizsgálata, és az ellenőrzés
+ során folyamatosan jelennek meg az
+ átvizsgált állományok a
+ hozzájuk tartozó ismert és
+ kiszámított &man.sha256.1;-kódjukkal
+ együtt. Mivel a képernyőn
+ túlságosan gyorsan elúsznának az
+ eredmények, ezért ezeket egy
+ <filename>eredmeny.idk</filename> nevű
+ állományba mentjük a későbbi
+ elemzésekhez.</para>
+
+ <para>Az így keletkező állomány sorai
+ ugyan meglehetősen hosszúak, de szerencsére
+ viszonylag könnyen értelmezhetőek.
+ Például az adott kiadásban szereplő
+ állományoktól eltérőeket ezzel
+ a paranccsal kérdezhetjük le:</para>
+
+ <screen>&prompt.root; <userinput>cat eredmeny.idk | awk '{ print $1 }' | more</userinput>
+/etc/master.passwd
+/etc/motd
+/etc/passwd
+/etc/pf.conf</screen>
+
+ <para>A példában most csak az első
+ néhány állományt hagytuk meg, gyakran
+ tapasztalhatunk viszont ennél többet. Ezek
+ közül bizonyos állományok
+ értelemszerűen eltérnek, mint itt
+ például az <filename>/etc/passwd</filename>, mert
+ időközben új felhasználókat
+ adtunk a rendszerhez. Máskor egyéb
+ állományok, például modulok nevei is
+ felbukkanhatnak, mert tegyük fel, hogy a
+ <command>freebsd-update</command> már frissítette
+ ezeket. Ha ki szeretnénk zárni valamilyen
+ állományokat vagy könyvtárakat az
+ ellenőrzésből, egyszerűen csak soroljuk
+ fel ezeket az <filename>/etc/freebsd-update.conf</filename>
+ állományban megjelenő
+ <literal>IDSIgnorePaths</literal>
+ beállításnál.</para>
+
+ <para>A korábban tárgyaltaktól
+ függetlenül ez a rendszer alkalmas bonyolultabb
+ frissítési folyamatok
+ kisegítésére is.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="updating-upgrading-portsnap">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Írta: </contrib>
+ </author>
+ </authorgroup>
+
+ <authorgroup>
+ <author>
+ <firstname>Colin</firstname>
+ <surname>Percival</surname>
+ <contrib>A megíráshoz felhasznált
+ jegyzeteket készítette: </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>A Portgyűjtemény frissítése a
+ Portsnap használatával</title>
+
+ <indexterm><primary>frissítés és frissen tartás</primary></indexterm>
+
+ <indexterm>
+ <primary>Portsnap</primary>
+ <see>frissítés és frissen tartás</see>
+ </indexterm>
+
+ <para>A &os; alaprendszer a Portgyűjtemény
+ frissítéséhez is tartalmaz egy &man.portsnap.8;
+ elnevezésű segédprogramot. Ez a program
+ elindítása után csatlakozik egy távoli
+ géphez, ellenőrzi a biztonsági kulcsát
+ és letölti a portok legfrissebb változatait. A
+ biztonsági kulcs feladata a frissítés
+ közben letöltött állományok
+ sértetlenségének szavatolása, ezzel
+ gondoskodik róla, hogy az adatok átvitelük
+ közben nem változtak meg. A
+ Portgyűjtemény legújabb
+ változatát így érhetjük
+ el:</para>
+
+ <screen>&prompt.root; <userinput>portsnap fetch</userinput>
+Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
+Fetching snapshot tag from portsnap1.FreeBSD.org... done.
+Fetching snapshot metadata... done.
+Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008.
+Fetching 3 metadata patches.. done.
+Applying metadata patches... done.
+Fetching 3 metadata files... done.
+Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
+Applying patches... done.
+Fetching 133 new ports or files... done.</screen>
+
+ <para>A példában látható, hogy a
+ &man.portsnap.8; eltéréseket talált a helyi
+ és a távoli rendszerekben fellelhető portok
+ között, majd azokat ellenőrizte. Emellett az is
+ megfigyelhető, hogy korábban már futtatuk a
+ programot, mivel ha most indítottuk volna az első
+ alkalommal, akkor egyszerűen letöltötte volna a
+ teljes Portgyűjteményt.</para>
+
+ <para>Ahogy a &man.portsnap.8; sikeresen befejezi az imént
+ kiadott <command>fetch</command> művelet
+ végrehajtását, a helyi rendszeren már
+ telepítésre készen fognak várakozni a
+ Portgyűjtemény és az hozzá tartozó
+ ellenőrzött módosítások. A
+ <command>portsnap</command> első használatakor az
+ <literal>extract</literal> parancs
+ segítségével telepíthetjük a
+ frissített állományokat:</para>
+
+ <screen>&prompt.root; <userinput>portsnap extract</userinput>
+/usr/ports/.cvsignore
+/usr/ports/CHANGES
+/usr/ports/COPYRIGHT
+/usr/ports/GIDs
+/usr/ports/KNOBS
+/usr/ports/LEGAL
+/usr/ports/MOVED
+/usr/ports/Makefile
+/usr/ports/Mk/bsd.apache.mk
+/usr/ports/Mk/bsd.autotools.mk
+/usr/ports/Mk/bsd.cmake.mk
+<replaceable>...</replaceable></screen>
+
+ <para>Egy korábban már telepített
+ Portgyűjteményt a <command>portsnap update</command>
+ paranccsal tudunk frissíteni:</para>
+
+ <screen>&prompt.root; <userinput>portsnap update</userinput></screen>
+
+ <para>Ezzel lezárult a portok frissítése,
+ innentől már az aktualizált
+ Portgyűjtemény felhasználásával
+ tetszőlegesen telepíthetőek vagy
+ frissíthetőek az alkalmazások.</para>
+
+ <para>A <literal>fetch</literal>, <literal>extract</literal> vagy
+ <literal>update</literal> műveletek egyetlen parancsba is
+ összefűzhetőek, ahogy ezt az alábbi
+ példában is láthatjuk:</para>
+
+ <screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen>
+
+ <para>Ez a parancs letölti a Portgy&251;jtemény
+ legfrissebb változatát, majd
+ kitömöríti azt a helyi <filename
+ class="directory">/usr/ports</filename>
+ könyvtárba.</para>
+ </sect1>
+
+ <sect1 id="updating-upgrading-documentation">
+ <title>A dokumentáció frissítése</title>
+
+ <indexterm><primary>frissítés és frissen
+ tartás</primary></indexterm>
+
+ <indexterm>
+ <primary>dokumentáció</primary>
+ <see>frissítés és frissen tartás</see>
+ </indexterm>
+
+ <para>Az alaprendszer és a Portgyűjtemény mellett
+ a dokumentáció is a &os; operációs
+ rendszer szerves részét képezi. Noha a &os;
+ dokumentációjának legfrissebb
+ változata folyamatosan elérhető a <ulink
+ url="http://www.freebsd.org/doc">&os;
+ honlapjáról</ulink>, egyes
+ felhasználók ezt csak lassan vagy nem képesek
+ folyamatosan elérni. Szerencsére egy helyi
+ másolat megfelelő karbantartásával az
+ egyes kiadásokhoz tartozó dokumentáció
+ is frissíthető.</para>
+
+ <sect2 id="csup-doc">
+ <title>A dokumentáció frissítése CVSup
+ használatával</title>
+
+ <para>A &os; telepített
+ dokumentációjának forrásai az
+ alaprendszeréhez hasonlóan (lásd <xref
+ linkend="makeworld"/>) a <application>CVSup</application>
+ segítségével frissíthetőek.
+ Ebben a szakaszban megismerhetjük:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>hogyan telepítsük a
+ dokumentáció
+ előállításához
+ szükséges eszközöket, amelyekkel a
+ forrásokból újra tudjuk
+ generálni a &os;
+ dokumentációját;</para>
+ </listitem>
+
+ <listitem>
+ <para>hogyan töltsük le a dokumentáció
+ forrását <application>CVSup</application>
+ segítségével a <filename
+ class="directory">/usr/doc</filename>
+ könyvtárba;</para>
+ </listitem>
+
+ <listitem>
+ <para>a dokumentáció
+ előállításához alkalmazott
+ rendszer milyen beállításokkal
+ rendelkezik, vagyis hogyan korlátozzuk a
+ generálást bizonyos nyelvekre vagy
+ formátumokra.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="installing-documentation-toolchain">
+ <title>A CVSup és a dokumentációs
+ eszközök telepítése</title>
+
+ <para>Viszonylag sokféle eszközre lesz
+ szükségünk, ha a &os;
+ dokumentációját a forrásokból
+ akarjuk előállítani. Ezek az
+ segédprogramok nem részei a &os;
+ alaprendszerének, mivel alapvetően nagyon sok helyet
+ foglalnak el, és leginkább olyan &os;
+ felhasználók számára fontosak, akik
+ folyamatosan a dokumentációval dolgoznak vagy
+ gyakran frissítik azt forrásból.</para>
+
+ <para>A feladathoz szükséges összes eszköz
+ elérhető a Portgyűjteményből. Ebben
+ a &os; Dokumentációs Projekt
+ összeállított egy <filename
+ role="package">textproc/docproj</filename> nevű portot,
+ amellyel az említett programok
+ telepítését és
+ frissítését igyekezték
+ megkönnyíteni.</para>
+
+ <note>
+ <para>Ha nem tartunk igényt a dokumentáció
+ &postscript; vagy PDF változatára, akkor ehelyett
+ inkább érdemes megfontolnunk a <filename
+ role="package">textproc/docproj-nojadetex</filename> port
+ telepítését. Ebben a változatban
+ a <application>teTeX</application> betűszedő
+ rendszer kivételével az összes
+ segédprogram megtalálható. Mivel a
+ <application>teTeX</application> önmagában nagyon
+ sok segédeszköz telepítését
+ jelenti, ezért amennyiben a PDF változat
+ ténylegesen nem szükséges, érdemes
+ eltekinteni a telepítésétől.</para>
+ </note>
+
+ <para>A <application>CVSup</application>
+ telepítésével kapcsolatban pedig
+ részletesebb információkat a <link
+ linkend="cvsup">CVSup használatával</link>
+ foglalkozó szakaszban olvashatunk.</para>
+ </sect2>
+
+ <sect2 id="updating-documentation-sources">
+ <title>A dokumentáció forrásának
+ frissítése</title>
+
+ <para>A <filename>/usr/share/examples/cvsup/doc-supfile</filename>
+ konfigurációs állomány
+ segítségével a
+ <application>CVSup</application> képes letölteni a
+ dokumentáció
+ forrásállományainak legfrissebb
+ példányait. Itt a frissítést
+ alapértelmezés szerint egy nem létező
+ géptől fogjuk kérni (mivel ezt
+ kötelező kitölteni), azonban a &man.cvsup.1;
+ programnak egy parancssori paraméter
+ segítségével megadhatjuk melyik
+ <application>CVSup</application> szerverről töltse le
+ a forrásokat:</para>
+
+ <screen>&prompt.root; <userinput>cvsup -h <replaceable>cvsup.FreeBSD.org</replaceable> -g -L 2 /usr/share/examples/cvsup/doc-supfile</userinput></screen>
+
+ <para>Ne felejtsük el a
+ <replaceable>cvsup.FreeBSD.org</replaceable> helyére
+ beírni a hozzánk földrajzilag
+ legközelebb elhelyezkedő
+ <application>CVSup</application> szervert. Ezek teljes
+ listáját a <xref linkend="cvsup-mirrors"/>
+ tartalmazza.</para>
+
+ <para>Egy ideig eltarthat, amíg először
+ letöltjük a forrásokat. Várjuk meg
+ türelmesen, amíg befejeződik a
+ művelet.</para>
+
+ <para>Később a forrásokat ugyanezzel a
+ paranccsal tudjuk frissíteni. A
+ <application>CVSup</application> ugyanis mindig csak a
+ legutóbbi futtatása óta történt
+ változásokat tölti le, ezért
+ később már ez a lépés
+ jelentősen felgyorsulhat.</para>
+
+ <para>A források letöltése után a
+ dokumentációt például az ekkor
+ keletkezett <filename class="directory">/usr/doc</filename>
+ könyvtárban található
+ <filename>Makefile</filename> használatával
+ állíthatjuk elő. Tehát miután
+ az <filename>/etc/make.conf</filename> állományban
+ beállítottuk a <makevar>SUP_UPDATE</makevar>,
+ <makevar>SUPHOST</makevar> és
+ <makevar>DOCSUPFILE</makevar> változókat, le
+ tudjuk futtatni a következő parancsot:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/doc</userinput>
+&prompt.root; <userinput>make update</userinput></screen>
+
+ <para>Az előbb említett &man.make.1; változók jellemző értékei:</para>
+
+ <programlisting>SUP_UPDATE= yes
+SUPHOST?= cvsup.freebsd.org
+DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
+
+ <note>
+ <para>Mivel a <makevar>SUPHOST</makevar> és a
+ <makevar>DOCSUPFILE</makevar> változók
+ értékét a <literal>?=</literal>
+ szimbólummal állítottuk be,
+ lehetőségünk van a parancssorból
+ ezeknek más értékeket adni. Az
+ <filename>/etc/make.conf</filename> állományba
+ általában így érdemes felvenni a
+ változókat, így nem kell minden
+ alkalommal módosítani, amikor valamilyen
+ új beállítást akarunk
+ kipróbálni.</para>
+ </note>
+ </sect2>
+
+ <sect2 id="updating-documentation-options">
+ <title>A dokumentáció különböző
+ beállításai</title>
+
+ <para>A &os; dokumentációjához
+ tartozó, frissítést és
+ előállítást végző
+ rendszernek van néhány olyan
+ beállítása, amelyekkel
+ kérhetjük kizárólag csak a
+ dokumentáció egyes részeinek
+ frissítését vagy bizonyos kimeneti
+ formátumok használatát. Ezek vagy
+ globálisan az <filename>/etc/make.conf</filename>
+ állományban, vagy pedig a parancssorból, a
+ &man.make.1; program paramétereként
+ adhatóak meg.</para>
+
+ <para>Ízelítőül néhány
+ közülük:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><makevar>DOC_LANG</makevar></term>
+
+ <listitem>
+ <para>Az előállítandó és
+ telepítendő nyelvű
+ dokumentáció felsorolása, tehát
+ például csak az angol
+ dokumentáció esetén ez
+ <literal>en_US.ISO8859-1</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><makevar>FORMATS</makevar></term>
+
+ <listitem>
+ <para>Az előállítandó
+ dokumentáció kimeneti formátumainak
+ felsorolása. Itt pillanatnyilag
+ értékként a <literal>html</literal>,
+ <literal>html-split</literal>, <literal>txt</literal>,
+ <literal>ps</literal>, <literal>pdf</literal> és
+ <literal>rtf</literal> jelenhet meg.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><makevar>SUPHOST</makevar></term>
+
+ <listitem>
+ <para>A frissítéshez használt
+ <application>CVSup</application> szerver
+ hálózati neve.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><makevar>DOCDIR</makevar></term>
+
+ <listitem>
+ <para>Az elkészült dokumentáció
+ telepítésének helye. Ez
+ alapértelmezés szerint a <filename
+ class="directory">/usr/share/doc</filename>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>A folyamathoz kapcsolódóan további
+ rendszerszintű &man.make.1; változókról
+ a &man.make.conf.5; man oldalon olvashatunk.</para>
+
+ <para>A &os; dokumentációjának
+ előállításáért
+ felelős rendszerben használható &man.make.1;
+ további változók
+ bemutatásával kapcsolatban pedig olvassuk el az
+ <ulink url="&url.doc.langbase;/books/fdp-primer">A &os;
+ Dokumentációs Projekt irányelvei
+ kezdőknek</ulink> című könyvet.</para>
+ </sect2>
+
+ <sect2 id="updating-installed-documentation">
+ <title>A &os; dokumentációjának
+ telepítése forrásból</title>
+
+ <para>Miután sikerült letöltenünk a
+ <filename class="directory">/usr/doc</filename>
+ könyvtárba a dokumentáció legfrissebb
+ forrásait, készen állunk a
+ rendszerünkön telepített példány
+ frissítésére.</para>
+
+ <para>A <makevar>DOCLANG</makevar> értékeként
+ megadott nyelven készült dokumentációkat
+ a következő paranccsal tudjuk
+ frissíteni:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/doc</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>Ha a <filename>make.conf</filename>
+ állományban korábban már megadtuk a
+ <makevar>DOCSUPFILE</makevar>, <makevar>SUPHOST</makevar>
+ és <makevar>SUP_UPDATE</makevar> változók
+ értékeit, akkor a telepítés
+ fázisa könnyedén össze is
+ vonatható a források
+ frissítésével:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/doc</userinput>
+&prompt.root; <userinput>make update install clean</userinput></screen>
+
+ <para>Ha pedig csak bizonyos nyelvekhez tartozó
+ dokumentációt szeretnénk frissíteni,
+ akkor a &man.make.1; akár a <filename
+ class="directory">/usr/doc</filename> könyvtáron
+ belül az egyes nyelvekhez tartozó
+ alkönyvtárakon belül is
+ meghívható, például:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/doc/en_US.ISO8859-1</userinput>
+&prompt.root; <userinput>make update install clean</userinput></screen>
+
+ <para>A dokumentáció formátumát a
+ <makevar>FORMATS</makevar> változó
+ felhasználásával tudjuk
+ meghatározni:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/doc</userinput>
+&prompt.root; <userinput>make FORMATS='html html-split' install clean</userinput></screen>
+ </sect2>
+
+ <sect2 id="doc-ports">
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>Marc</firstname>
+ <surname>Fonvieille</surname>
+ <contrib>A szóbanforgó megoldást
+ fejlesztette: </contrib>
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>A dokumentációs portok
+ használata</title>
+
+ <indexterm><primary>frissítés és frissen
+ tartás</primary></indexterm>
+
+ <indexterm>
+ <primary>dokumentáció</primary>
+ <see>frissítés és frissen tartás</see>
+ </indexterm>
+
+ <para>Ez előző szakaszban megmutattuk hogyan lehet a
+ &os; dokumentációját a források
+ felhasználásával frissíteni. A
+ források használatával végzett
+ frissítés azonban nem minden &os; rendszer
+ esetében lehetséges vagy hatékony. Ha
+ ugyanis a dokumentációs forrásból
+ akarjuk előállítani, viszonylag sok
+ eszköz és segédprogram, az ún.
+ <emphasis>dokumentációs
+ eszközök</emphasis> használatával kell
+ tisztában lennünk, valamint bizonyos
+ mértékig ismernünk kell a
+ <application>CVS</application> használatát, tudunk
+ kell kikérni a legfrissebb változatot és
+ előállítatattnunk belőle a
+ végleges változatot. Ezért ebben a
+ szakaszban most szót ejtünk egy olyan
+ módszerről, ahol a &os;
+ dokumentációját a
+ Portgyűjteményen keresztül tudjuk
+ frissíteni, ezáltal:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>anélkül le tudjuk tölteni és
+ telepíteni a dokumentáció adott
+ pillanatban generált változatát, hogy a
+ rendszerünkön bármi további
+ teendőre szükség lenne (ennek
+ köszönhetően nem kell
+ telepítenünk a dokumentációs
+ eszközöket);</para>
+ </listitem>
+
+ <listitem>
+ <para>letölthetjük a dokumentáció
+ forrását és a Portgyűjtemény
+ eszközeivel előállíthatjuk
+ belőle a megfelelő változatot (ez a
+ források beszerzésében és
+ feldolgozásában segít
+ valamelyest).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>A &os; dokumentáció
+ frissítésének fentebb említett
+ módjait támogatják tehát a
+ <emphasis>dokumentációs portok</emphasis>,
+ amelyeket a &a.doceng; havi rendszerességgel tart karban.
+ Ezek a portok a &os; Portgyűjteményén
+ belül a <ulink
+ url="http://www.freshports.org/docs/">docs</ulink> nevű
+ virtuális kategóriában
+ találhatóak meg.</para>
+
+ <sect3 id="doc-ports-install-make">
+ <title>A dokumentációs portok
+ fordítása és
+ telepítése</title>
+
+ <para>A dokumentáció könnyebb
+ előállításához a
+ dokumentációs portok a Portgyűjtemény
+ lehetőségeit veszik igénybe.
+ Segítségükkel automatikussá teszik a
+ dokumentáció forrásának
+ letöltését, a &man.make.1; parancs
+ meghívását a megfelelő
+ környezetben, beállításokkal
+ és parancssori paraméterekkel. Rajtuk
+ keresztül a dokumentáció
+ eltávolítása ugyanolyan egyszerűen
+ megtehető, mint akármelyik másik &os; port
+ vagy csomag esetében.</para>
+
+ <note>
+ <para>Továbbá, amikor a
+ dokumentációs portokat a saját
+ rendszerünkön fordítjuk, a
+ <emphasis>dokumentációs
+ eszközök</emphasis>
+ függőségként automatikusan
+ települni fognak.</para>
+ </note>
+
+ <para>A dokumentációs portok a következő
+ módon szerveződnek:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Létezik egy ún.
+ <quote>főport</quote>, a <filename
+ role="package">misc/freebsd-doc-en</filename>, ahol az
+ összes fontosabb állomány
+ megtalálható. Ez lényegében a
+ dokumentációs portok közös
+ őse. Alapértelmezés szerint
+ kizárólag csak az angol nyelvű
+ dokumentációt állítja
+ elő.</para>
+ </listitem>
+
+ <listitem>
+ <para>Létezik egy <quote>mindenes port</quote>, a
+ <filename role="package">misc/freebsd-doc-all</filename>,
+ amely az összes elérhető nyelven
+ és formátumban előállítja
+ a dokumentációt.</para>
+ </listitem>
+
+ <listitem>
+ <para>Végezetül minden nyelvhez létezik
+ egy-egy <quote>alport</quote>, ilyen például a
+ magyar dokumentáció esetén a
+ <filename role="package">misc/freebsd-doc-hu</filename>
+ port. Mindegyikük a főporttól függ
+ és az adott nyelvű dokumentációt
+ telepítik.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Az eddigi összefoglaltaknak megfelelően a
+ dokumentációs portokat forrásból a
+ következő paranccsal lehet telepíteni
+ (<username>root</username>
+ felhasználóként):</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/misc/freebsd-doc-en</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>Ennek hatására előáll és
+ telepítődik a <filename
+ class="directory">/usr/local/share/doc/freebsd</filename>
+ könyvtárba az angol nyelvű
+ dokumentáció állományokra bontott
+ <acronym>HTML</acronym> formátumban (hasonlóan a
+ <ulink url="http://www.FreeBSD.org"></ulink>
+ tartalmához).</para>
+
+ <sect4 id="doc-ports-options">
+ <title>Gyakori beállítások</title>
+
+ <para>A dokumentációs portok
+ alapértelmezett viselkedése több
+ különböző opció
+ segítségével is
+ befolyásolható. Ezek közül most
+ összefoglalunk néhányat:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><makevar>WITH_HTML</makevar></term>
+
+ <listitem>
+ <para>Minden dokumentum egyetlen HTML
+ állományba kerüljön. A
+ végeredmény ekkor az adott dokumentum
+ típusának megfelelően
+ <filename>article.html</filename> (cikk) vagy
+ <filename>book.html</filename> (könyv)
+ néven keletkezik (képekkel
+ együtt).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><makevar>WITH_PDF</makevar></term>
+
+ <listitem>
+ <para>Minden dokumentum &adobe; Portable Document Format
+ típusú állományban
+ jön létre. Ezek az
+ állományok a
+ <application>Ghostscript</application> vagy más
+ egyéb PDF nézegetőkkel
+ nyithatóak meg. Ekkor a
+ dokumentáció konkrét
+ típusától függően az
+ állományok
+ <filename>article.pdf</filename> (cikk) vagy
+ <filename>book.pdf</filename> (könyv)
+ néven állítódnak
+ elő.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><makevar>DOCBASE</makevar></term>
+
+ <listitem>
+ <para>A dokumentáció
+ telepítésének helye.
+ Alapértelmezés szerint ez a <filename
+ class="directory">/usr/local/share/doc/freebsd</filename>
+ könyvtár.</para>
+
+ <note>
+ <para>Ügyeljünk arra, hogy a
+ telepítés alapértelmezett
+ célkönyvtára eltér a
+ <application>CVSup</application>
+ módszerétől. Ugyanis mivel
+ ilyenkor egy portot telepítünk, a
+ tartalma alapértelmezés szerint a
+ <filename
+ class="directory">/usr/local</filename>
+ könyvtáron belülre kerül.
+ Ez azonban a <makevar>PREFIX</makevar>
+ változó
+ átállításával
+ tetszőleges
+ megváltoztatható.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Az előbbieket most egy rövid
+ példán keresztül összefoglaljuk. A
+ következő paranccsal tudjuk tehát a magyar
+ nyelvű dokumentáció Portable Document
+ Format változatát telepíteni:</para>
+
+ <screen>&prompt.root; cd /usr/ports/misc/freebsd-doc-hu
+&prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean</screen>
+ </sect4>
+ </sect3>
+
+ <sect3 id="doc-ports-install-package">
+ <title>A dokumentációs csomagok
+ használata</title>
+
+ <para>A dokumentációs portok előző
+ szakaszban bemutatott forrásból
+ telepítésével kapcsolatban már
+ említettük, hogy szükséges
+ hozzá a dokumentációs eszközök
+ telepítése, valamint némi szabad
+ tárterület. Ha a dokumentációs
+ eszközök telepítéséhez nem
+ elengedőek a rendelkezésre álló
+ erőforrásaink vagy a források
+ feldolgozása túlságosan sokat foglalna a
+ rendszerünkön, akkor lehetőségünk
+ van a dokumentációs portok előre
+ lefordított, csomagolt változatát
+ használni.</para>
+
+ <para>A &a.doceng; minden hónapban
+ előkészíti a &os; dokumentációs
+ csomagok legfrissebb változatát. Az így
+ karbantartott bináris csomagok azután
+ tetszőlegesen használhatóak a
+ szabványos csomagkezelő eszközökkel,
+ mint amilyen például a &man.pkg.add.1;,
+ &man.pkg.delete.1; és így tovább.</para>
+
+ <note>
+ <para>A bináris csomagok használata
+ esetén a &os; dokumentációja az adott
+ nyelvhez az <emphasis>összes</emphasis>
+ elérhető formátumban
+ telepítésre kerül.</para>
+ </note>
+
+ <para>Például az alábbi paranccsal a magyar
+ nyelvű dokumentációhoz tartozó
+ legfrissebb bináris csomagot tudjuk
+ telepíteni:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r hu-freebsd-doc</userinput></screen>
+
+ <note>
+ <para>A csomagok elnevezése eltér a
+ hozzá tartozó port nevétől. Alakja a
+ következő:
+ <literal><replaceable>nyelv</replaceable>-freebsd-doc</literal>,
+ ahol a <replaceable>nyelv</replaceable> az adott nyelv
+ rövid kódja, vagyis a magyar esetén a
+ <literal>hu</literal>, illetve az egyszerűsített
+ kínai esetén a
+ <literal>zh_ch</literal>.</para>
+ </note>
+ </sect3>
+
+ <sect3 id="doc-ports-update">
+ <title>A dokumentációs portok
+ frissítése</title>
+
+ <para>Az előzetesen telepített
+ dokumentációs portok bármilyen portok
+ frissítésére alkalmas eszközzel
+ frissíthetőek. Például a
+ telepített magyar nyelvű
+ dokumentáció a <filename
+ role="package">ports-mgmt/portupgrade</filename>
+ eszközön keresztül így
+ frissíthető csomagok
+ használatával:</para>
+
+ <screen>&prompt.root; <userinput>portupgrade -PP hu-freebsd-doc</userinput></screen>
+ </sect3>
+ </sect2>
+
+<![ IGNORE [
+ <sect2 id="docsnap">
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>Pav</firstname>
+ <surname>Lucistnik</surname>
+ <contrib>A szükséges információkat
+ szolgáltatta: </contrib>
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>A Docsnap használata</title>
+
+ <indexterm><primary>frissítés és frissen
+ tartás</primary></indexterm>
+
+ <indexterm>
+ <primary>Docsnap</primary>
+ <see>frissítés és frissen tartás</see>
+ </indexterm>
+
+ <para>A <application>Docsnap</application> a &os;
+ dokumentációjának egy viszonylag gyors
+ és könnyű frissítésére
+ alkalmas &man.rsync.1; repository. Az ún.
+ <quote><application>Docsnap</application> szerver</quote>
+ folyamatosan követi a dokumentáció
+ forrásainak változásait, majd minden
+ órában előállítja a HTML
+ változatukat. A <application>Docsnap</application>
+ használatakor nincs szükségünk a
+ <filename role="package">textproc/docproj</filename> port
+ telepítésére, mivel mindig csak a
+ már előállított
+ dokumentációt frissítjük.</para>
+
+ <para>A módszer használatához mindössze
+ a <filename role="package">net/rsync</filename> port vagy csomag
+ telepítése szükségeltetik. Ezt a
+ következő paranccsal tudjuk elvégezni:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r rsync</userinput></screen>
+
+ <note>
+ <para>A <application>Docsnap</application>
+ módszerét eredetileg a <filename
+ class="directory">/usr/share/doc</filename>
+ könyvtárban tárolt
+ dokumentáció frissítésére
+ fejlesztették ki, de a bemutatott példák
+ tetszőleges könyvtárra alkalmazhatóak.
+ Felhasználói könyvtárak
+ esetén még rendszergazdai jogosultságokra
+ sincs szükségünk a feladat
+ elvégzéséhez.</para>
+ </note>
+
+ <para>A dokumentáció így az alábbi
+ paranccsal frissíthető:</para>
+
+ <screen>&prompt.root; <userinput>rsync -rltvz <replaceable>docsnap.sk.FreeBSD.org</replaceable>::docsnap <replaceable>/usr/share/doc</replaceable></userinput></screen>
+
+ <note>
+ <para>Jelenleg csak egyetlen <application>Docsnap</application>
+ szerver érhető el, ez a fentebb is
+ látható
+ <hostid>docsnap.sk.FreeBSD.org</hostid>.</para>
+ </note>
+
+ <para>Közvetlenül ne használjuk a
+ <option>--delete</option> paramétert, mert a <command>make
+ installworld</command> parancs futása közben olyan
+ elemeket is telepíthetett a <filename
+ class="directory">/usr/share/doc</filename>
+ könyvtárba, amelyek így
+ törlődnének. Helyette inkább így
+ használjuk a parancsot:</para>
+
+ <screen>&prompt.root; <userinput>rsync -rltvz --delete <replaceable>docsnap.sk.FreeBSD.org</replaceable>::docsnap/??_??\.\* <replaceable>/usr/share/doc</replaceable></userinput></screen>
+
+ <para>Ha csak a dokumentáció egy
+ részét akarjuk frissíteni,
+ például csak az angol nyelvű
+ változatát, akkor pedig ezt a parancsot
+ használjuk:</para>
+
+ <screen>&prompt.root; <userinput>rsync -rltvz <replaceable>docsnap.sk.FreeBSD.org</replaceable>::docsnap/en_US.ISO8859-1 <replaceable>/usr/share/doc</replaceable></userinput></screen>
+ </sect2>
+]]>
+ </sect1>
+
+ <sect1 id="current-stable">
+ <title>A fejlesztői ág követése</title>
+
+ <indexterm><primary>-CURRENT</primary></indexterm>
+ <indexterm><primary>-STABLE</primary></indexterm>
+
+ <para>A &os;-nek két fejlesztési ága van: a
+ &os;.current és a &os.stable;. Ebben a szakaszban
+ mindegyikükről monduk pár szót, és
+ megmutatjuk, miként lehet az adott ághoz
+ igazítani a rendszerünk
+ frissítését. Először a
+ &os.current;, majd a &os.stable; változata kerül
+ tárgyalásra.</para>
+
+ <sect2 id="current">
+ <title>A &os; friss változatának
+ használata</title>
+
+ <para>Ahogy arról már az imént is szó
+ esett, nem szabad elfelejtenünk, hogy a &os.current; a &os;
+ fejlesztésének <quote>frontvonala</quote>. Emiatt
+ a &os.current; használóinak szakmailag
+ jólképzetteknek kell lenniük, és sosem
+ szabad visszariadniuk a használat közben
+ felmerülő rendszerszintű problémák
+ önálló megoldásától. Ha
+ korábban még nem foglalkoztunk &os;-vel,
+ kétszer is gondoljuk meg a
+ telepítését!</para>
+
+ <sect3>
+ <title>Mi a &os.current;?</title>
+
+ <indexterm><primary>pillanatkép</primary></indexterm>
+
+ <para>A &os.current; a &os; mögött álló
+ legfrissebb forráskódot képviseli. Itt
+ találkozhatunk különféle olyan
+ fejlesztés alatt álló részekkel,
+ kísérletezésekkel és
+ átmeneti megoldásokkal, amelyek nem
+ feltétlenül kerülnek bele a szoftver
+ következő hivatalos kiadásába. Noha a
+ &os; fejlesztői a &os.current;
+ forráskódját naponta
+ fordítják, adódhatnak olyan
+ időszakok, amikor a források mégsem
+ használhatóak maradéktalanul. Az ilyen
+ gondokat általában a lehető leggyorsabban
+ igyekeznek megoldani, azonban attól függően,
+ hogy éppen a forráskód melyik
+ verzióját sikerült kifogni, a &os.current;
+ használata kész katasztrófa vagy
+ akár a fejlődésben igazi
+ továbblépés is lehet.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Kinek van szüksége a &os.current;-re?</title>
+
+ <para>A &os.current; használata elsősorban az
+ alábbi 3 csoportot érinti:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>A &os; közösség azon tagjait, akik
+ aktívan dolgoznak a forrásfa valamelyik
+ részén, és mindazokat, akik
+ számára a <quote>legfrissebb</quote>
+ verzió használata feltétlen
+ elvárás.</para>
+ </listitem>
+
+ <listitem>
+ <para>A &os; közösség azon tagjait, akik
+ aktívan tesztelnek, és a &os.current;
+ kordában tartásához hajlandóak
+ időt áldozni a menet közben
+ felbukkanó problémák
+ megoldására. Vannak olyanok is, akik a &os;
+ változásaival és fejlesztési
+ irányával kapcsolatban
+ kívánnak javaslatokat tenni, melyeket
+ javítások és
+ módosítások formájában
+ tesznek közzé.</para>
+ </listitem>
+
+ <listitem>
+ <para>Mindazokat, akik pusztán
+ kíváncsiak a fejlesztésben
+ zajló eseményekre, vagy hivatkozási
+ szándékkal töltik le a legfrissebb
+ forrásokat (például csak
+ <emphasis>nézegetik</emphasis>, de nem
+ futtatják). Az ilyen emberek esetenként
+ megjegyzéseket fűznek a fejlesztéshez
+ vagy kódot küldenek be.</para>
+ </listitem>
+ </orderedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Mi <emphasis>nem</emphasis> a &os.current;?</title>
+
+ <orderedlist>
+ <listitem>
+ <para>Az olyan kiadás előtt álló
+ funkciók kipróbálásának
+ egyszerű módja, amelyekről hallottunk,
+ hogy milyen remek újdonságokat hoznak
+ és mi akarunk lenni az elsők, akik ezt
+ használni is fogják. Ne feledjük
+ azonban, hogy amikor mindenki előtt kezdünk el
+ használni egy újítást, mi
+ leszünk egyben az elsők is, akik
+ szembesülnek a benne rejlő
+ hibákkal.</para>
+ </listitem>
+
+ <listitem>
+ <para>A gyors hibajavítások eszköze. A
+ &os.current; szinte bármelyik változata
+ pontosan ugyanakkora
+ valószínűséggel hoz
+ magával új hibákat, mint ahogy
+ eltünteti a régieket.</para>
+ </listitem>
+
+ <listitem>
+ <para>Akármilyen értelemben is
+ <quote>hivatalosan támogatott</quote>.
+ Képességeinktől függően
+ őszintén igyekszünk a lehető
+ legtöbbet megtenni a 3
+ <quote>törvényes</quote> &os.current;
+ csoportba tartozó emberekért, azonban
+ egyszerűen <emphasis>nincs időnk</emphasis>
+ komolyabb segítségnyújtást
+ adni. Ez viszont nem azt jelenti, hogy komisz és
+ fukar emberek vagyunk, akik utálnak segíteni
+ a másiknak (de máskülönben nem
+ tudna fejlődni a &os;). Csupán a &os;
+ fejlesztése <emphasis>közben</emphasis>
+ fizikailag képtelenek vagyunk a naponta
+ érkező ezernyi üzenetet rendre
+ megválaszolni! A &os;
+ előremozdítása és a
+ kísérleti stádiumban
+ álló kóddal kapcsolatos
+ kérdések megválaszolása
+ közül a fejlesztők általában
+ az elsőt részesítik
+ előnyben.</para>
+ </listitem>
+ </orderedlist>
+ </sect3>
+
+ <sect3>
+ <title>A &os.current; használata</title>
+
+ <indexterm>
+ <primary>-CURRENT</primary>
+ <secondary>használata</secondary>
+ </indexterm>
+
+ <orderedlist>
+ <listitem>
+ <para>Iratkozzunk fel az &a.current.name; és
+ &a.svn-src-head.name; listákra. Ez nem
+ egyszerűen hasznos, hanem
+ <emphasis>elengedhetetlen</emphasis>. Ha nem vagyunk a
+ <emphasis>&a.current.name;</emphasis> listán, akkor
+ nem fogjuk látni a rendszer aktuális
+ állapotára vonatkozó
+ megjegyzéseket, és így esetleg
+ feleslegesen öljük az időnket olyan
+ problémák megoldásába,
+ amelyeket mások már korábban
+ megoldottak. Ami viszont ennél is fontosabb, hogy
+ így elszalasztjuk a rendszerünk folyamatos
+ életbentartására vonatkozó
+ létfontosságú
+ bejelentéseket.</para>
+
+ <para>Az &a.svn-src-head.name; listán
+ láthatjuk az a forráskód egyes
+ változtatásaihoz tartozó
+ naplóbejegyzéseket, a hozzájuk
+ tartozó esetleges mellékhatások
+ ismertetésével együtt.</para>
+
+ <para>A listákra vagy a &a.mailman.lists.link;
+ oldalon található többi lista
+ valamelyikére úgy tudunk feliratkozni, ha
+ rákattintunk a nevére. A további
+ lépésekről ezt követően itt
+ kapunk értesítést. Amennyiben a
+ teljes forrásfa változásai
+ érdekelnek minket, javasoljuk az
+ &a.svn-src-all.name; lista olvasását.</para>
+ </listitem>
+
+ <listitem>
+ <para>A <link
+ linkend="mirrors">tükrözések</link>
+ egyikéről töltsük le a &os;
+ forrását. Erre két mód is
+ kínálkozik:</para>
+
+ <orderedlist>
+ <listitem>
+ <indexterm><primary><command>cvsup</command></primary></indexterm>
+ <indexterm><primary><command>cron</command></primary></indexterm>
+ <indexterm>
+ <primary>-CURRENT</primary>
+ <secondary>frissítés
+ <application>CVSup</application>pal</secondary>
+ </indexterm>
+
+ <para>Használjuk a <link
+ linkend="cvsup">cvsup</link> programot a
+ <filename>/usr/share/examples/cvsup</filename>
+ könyvtárban található
+ <filename>standard-supfile</filename>
+ állománnyal. Ez a leginkább
+ ajánlott módszer, hiszen így csak
+ egyszer kell letölteni az egész
+ gyűjteményt, majd ezután már
+ csak a változásokat. Sokan a
+ <command>cvsup</command> parancsot a
+ <command>cron</command> parancson keresztül
+ adják ki, és ezzel mindig automatikusan
+ frissítik a forrásaikat. A <link
+ linkend="cvsup">cvsup</link>
+ működését a fentebb
+ említett minta <filename>supfile</filename>
+ állomány megfelelő
+ módosításával tudjuk a
+ saját környezetünkhöz
+ igazítani.</para>
+
+ <note>
+ <para>Az említett
+ <filename>standard-supfile</filename>
+ állomány eredetileg nem a
+ &os.current;, hanem inkább a &os;
+ biztonsági problémáit
+ érintő javítások
+ követésére használatos. A
+ &os.current; forrásainak
+ eléréséhez a
+ következő sort kell
+ kicserélnünk ebben az
+ állományban:</para>
+
+ <programlisting>*default release=cvs tag=RELENG_<replaceable>X</replaceable>_<replaceable>Y</replaceable></programlisting>
+
+ <para>Erre:</para>
+
+ <programlisting>*default release=cvs tag=.</programlisting>
+
+ <para>A <literal>tag</literal>
+ paramétereként megadható
+ egyéb címkékről a
+ kézikönyv <link linkend="cvs-tags">CVS
+ címkék</link> szakaszában
+ olvashatunk.</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <indexterm>
+ <primary>-CURRENT</primary>
+ <secondary>frissítés CTM-mel</secondary>
+ </indexterm>
+
+ <para>Használjuk a <application><link
+ linkend="ctm">CTM</link></application>
+ alkalmazás nyújtotta
+ lehetőségeket. Amennyiben nagyon rossz
+ netkapcsolattal rendelkezünk (drága vagy
+ csak levelezésre használható) a
+ <application>CTM</application> megoldást
+ jelenthet számunkra. Legyünk azonban
+ tekintettel arra, hogy helyenként
+ zűrös lehet a használata és
+ néha hibás állományokat
+ gyárt. Emiatt viszont csak ritkán
+ használják, így
+ előfordulhat, hogy hosszabb ideig nem is
+ működik. A 9600&nbsp;bps vagy annál
+ nagyobb sebességű kapcsolatok
+ esetén ezért inkább a
+ <application><link
+ linkend="cvsup">CVSup</link></application>
+ használatát javasoljuk.</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+
+ <listitem>
+ <para>Ha nem csak böngészésre, hanem
+ fordításra is szedjük a
+ forrásokat, mindig töltsük le a
+ &os.current; <emphasis>egészét</emphasis>,
+ ne csak egyes részeit. Ez azzal
+ magyarázandó, hogy a forráskód
+ bizonyos részei más helyeken
+ található részektől is
+ függenek, és ezért az
+ önálló fordításuk szinte
+ garantáltan gondot fog okozni.</para>
+
+ <indexterm>
+ <primary>-CURRENT</primary>
+ <secondary>fordítása</secondary>
+ </indexterm>
+
+ <para>A &os.current; lefordítása előtt
+ figyelmesen olvassuk át a
+ <filename>/usr/src</filename> könyvtárban
+ található <filename>Makefile</filename>
+ állományt. A frissítési
+ folyamat részeként először
+ mindenképpen érdemes <link
+ linkend="makeworld">telepíteni egy új
+ rendszermagot és újrafordítani az
+ alaprendszert</link>. Olvassuk el a &a.current;
+ üzeneteit és a
+ <filename>/usr/src/UPDATING</filename>
+ állományt, ahol megtalálhatjuk az
+ ezzel kapcsolatos legújabb
+ információkat, melyek egy-egy újabb
+ kiadás közeledtével egyre
+ fontosabbá válnak.</para>
+ </listitem>
+
+ <listitem>
+ <para>Foglalkozzunk vele! Ha már a &os.current;
+ változatát használjuk, ne
+ legyünk restek véleményt
+ formálni róla, különösen
+ abban az esetben, ha
+ továbbfejlesztésekről vagy
+ hibákra van szó. Leginkább a
+ forráskóddal együtt érkező
+ javaslatoknak szoktak örülni a
+ fejlesztők!</para>
+ </listitem>
+ </orderedlist>
+
+ </sect3>
+ </sect2>
+
+ <sect2 id="stable">
+ <title>A &os; stabil változatának
+ használata</title>
+
+ <sect3>
+ <title>Mi a &os.stable;?</title>
+
+ <indexterm><primary>-STABLE</primary></indexterm>
+
+ <para>A &os.stable; az a fejlesztési ág, ahonnan
+ az egyes kiadások származnak. Ebbe az
+ ágba már más ütemben kerülnek a
+ változások, mivel általánosan
+ elfogadott, hogy ide a korábban már
+ kipróbált módosítások
+ vándorolnak át a &os.current;
+ ágból. Ez azonban <emphasis>még
+ mindig</emphasis> csak egy fejlesztési ág, ami
+ arra utal, hogy a &os.stable; által adott pillanatban
+ képviselt források nem feltétlenül
+ felelnek meg bizonyos célokra. Ez csupán egy
+ újabb fejlesztési nyomvonal, nem pedig a
+ végfelhasználók kenyere.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Kinek van szüksége a &os.stable;-re?</title>
+
+ <para>Ha szeretnénk figyelemmel kísérni
+ vagy valamilyen módon kiegészíteni a &os;
+ fejlesztési folyamatát, különösen
+ a &os; következő <quote>nagyobb</quote>
+ kiadását illetően, akkor érdemes
+ követnünk a &os.stable; forrásait.</para>
+
+ <para>Habár a &os.stable; ágba is bekerülnek
+ a biztonsági jellegű javítások,
+ ettől még nem kell feltétlenül ezt
+ követnünk. A &os;-hez kiadott biztonsági
+ figyelmeztetések mindig leírják, hogyan
+ kell javítani a hibát az érintett
+ kiadásokban
+ <footnote>
+ <para>Ez azért nem teljesen igaz. A régebbi
+ &os; kiadásokat ugyan nem támogathatjuk a
+ végtelenségig, de általában
+ így is több évig foglalkozunk
+ velük. A &os; régebbi kiadásaival
+ kapcsolatos jelenleg érvényes
+ biztonsági házirend részletes
+ bemutatása a <ulink
+ url="&url.base;/security/">http://www.FreeBSD.org/security/</ulink>
+ oldalon olvasható (angolul).</para>
+ </footnote>
+ , azonban az egész fejlesztési ágat
+ felesleges csak biztonsági okból
+ kifolyólag követni, mivel így olyan
+ változások is kerülhetnek a rendszerbe,
+ amire nincs szükségünk.</para>
+
+ <para>Habár igyekszünk gondoskodni a &os.stable;
+ ágban található források
+ lefordíthatóságáról
+ és
+ működőképességéről,
+ nem minden esetben szavatolható.
+ Ráadásul mivel a &os.stable; ágba
+ kerülő kódokat először a
+ &os.current; ágban fejlesztik ki, és mivel a
+ &os.stable; felhasználói többen vannak a
+ &os.current; változaténál, ezért
+ szinte elkerülhetetlen, hogy ilyenkor a &os.stable;
+ változatban bizonyos hibák és
+ szélsőséges esetek be ne
+ következzenek, amelyek a &os.current; használata
+ során még nem buktak ki.</para>
+
+ <para>Ezért a &os.stable; ág vakon
+ követését senkinek <emphasis>sem</emphasis>
+ ajánljuk, és különösen fontos,
+ hogy éles szervereken előzetes
+ kimerítő tesztelések nélkül ne
+ futassunk &os.stable; rendszert.</para>
+
+ <para>Ha ehhez nem rendelkezünk elegendő
+ erőforrással, akkor egyszerűen
+ használjuk a &os; legfrissebb kiadását,
+ és az egyes kiadások között pedig
+ bináris frissítéssel
+ közlekedjünk.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>A &os.stable; használata</title>
+
+ <indexterm>
+ <primary>-STABLE</primary>
+ <secondary>használata</secondary>
+ </indexterm>
+
+ <orderedlist>
+ <listitem>
+ <para>Iratkozzunk fel a &a.stable.name; listára.
+ Ezen keresztül értesülhetünk a
+ &os.stable; használata során
+ felmerülő fordítási
+ függőségekről vagy más,
+ külön figyelmet igénylő
+ problémákról. Gyakran ezen a
+ levelezési listán elmélkednek a
+ fejlesztők a vitatott
+ javításokról vagy
+ frissítésekről, amibe a
+ felhasználók is beleszólhatnak, ha a
+ szóbanforgó változtatással
+ kapcsolatban bármilyen problémájuk
+ vagy ötletünk van.</para>
+
+ <para>Iratkozzunk fel a követni kívánt
+ ághoz tartozó <application>SVN</application>
+ levelezési listára. Például
+ ha a 7-STABLE ág változásait
+ követjük, akkor az &a.svn-src-stable-7.name;
+ listára érdemes feliratkoznunk. Ennek
+ segítségével elolvashatjuk az egyes
+ változtatásokhoz tartozó
+ naplóbejegyzéseket, a rájuk
+ vonatkozó esetleges mellékhatások
+ ismertetésével együtt.</para>
+
+ <para>Ezekre, valamint a &a.mailman.lists.link; címen
+ elérhető listák valamelyikére
+ úgy tudunk feliratkozni, ha a nevükre
+ kattintunk. A további teendők ezután
+ itt jelennek meg.</para>
+ </listitem>
+
+ <listitem>
+ <para>Amennyiben egy új rendszert akarunk
+ telepíteni és a &os.stable; havonta
+ készült pillanatképeit akarjuk rajta
+ futtatni, akkor erről bővebb
+ felvilágosítást a <ulink
+ url="&url.base;/snapshots/">Pillanatképek</ulink>
+ honlapján találhatunk (angolul). Emellett a
+ legfrissebb &os.stable; kiadást
+ telepíthetjük a <link
+ linkend="mirrors">tükrözések</link>
+ valamelyikéről is, majd innen a lentebb
+ található utasítások szerint
+ tudunk hozzáférni a &os.stable;
+ forráskódjának legfrissebb
+ változatához.</para>
+
+ <para>Ha már fut a gépünkön a &os;
+ egy korábbi kiadása, és ezt akarjuk
+ forráson keresztül frissíteni, akkor
+ ezt a &os; <link
+ linkend="mirrors">tükrözéseivel</link>
+ könnyedén megtehetjük. Két
+ módon is:</para>
+
+ <orderedlist>
+ <listitem>
+ <indexterm><primary><command>cvsup</command></primary></indexterm>
+ <indexterm><primary><command>cron</command></primary></indexterm>
+ <indexterm>
+ <primary>-STABLE</primary>
+ <secondary>frissítés
+ <application>CVSup</application>pal</secondary>
+ </indexterm>
+
+ <para>Használjuk a <link
+ linkend="cvsup">cvsup</link> programot a
+ <filename>/usr/share/examples/cvsup</filename>
+ könyvtárból származó
+ <filename>stable-supfile</filename>
+ állománnyal. Ez a leginkább
+ ajánlott módszer, mivel így csak
+ egyszer kell letölteni a teljes
+ gyűjteményt, utána már csak
+ a hozzá tartozó
+ változtatásokra van
+ szükségünk. A
+ <command>cvsup</command> parancsot sokan a
+ <command>cron</command>
+ segítségével futtatják,
+ és ezzel automatikusan frissülnek a
+ forrásainak. A <link
+ linkend="cvsup">cvsup</link>
+ működését
+ környezetünkhöz az előbb
+ említett minta <filename>supfile</filename>
+ megfelelő
+ módosításával tudjuk
+ behangolni.</para>
+ </listitem>
+
+ <listitem>
+ <indexterm>
+ <primary>-STABLE</primary>
+ <secondary>frissítés CTM-mel</secondary>
+ </indexterm>
+
+ <para>Használjuk a <application><link
+ linkend="ctm">CTM</link></application> programot. Ha
+ nincs olcsó vagy gyors internetkapcsolatunk,
+ akkor érdemes ezt a módszert
+ választani.</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+
+ <listitem>
+ <para>Alapvetően azonban ha gyorsan szeretnénk
+ hozzájutni a forrásokhoz és a
+ sávszélesség nem
+ meghatározó tényező, akkor
+ helyette válasszuk a <command>cvsup</command> vagy
+ az <command>ftp</command> használatát,
+ és csak minden más esetben
+ <application>CTM</application>-et.</para>
+ </listitem>
+
+ <listitem>
+ <indexterm>
+ <primary>-STABLE</primary>
+ <secondary>fordítása</secondary>
+ </indexterm>
+
+ <para>Mielőtt lefordítanánk a &os.stable;
+ változatát, figyelmesen olvassuk át a
+ <filename>/usr/src</filename> könyvtárban
+ levő <filename>Makefile</filename>
+ állományt. Az átállási
+ folyamat részeként először minden
+ bizonnyal <link
+ linkend="makeworld">telepítenünk kell egy
+ új rendszermagot és újra kell
+ fordítanunk az alaprendszert</link>. A &a.stable;
+ valamint a <filename>/usr/src/UPDATING</filename>
+ elolvasásából
+ értesülhetünk azokról az
+ egyéb, gyakran nagyon fontos
+ változásokról, melyek
+ elengedhetetlenek lesznek a következő
+ kiadás használatához.</para>
+ </listitem>
+ </orderedlist>
+
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="synching">
+ <title>A forrás szinkronizálása</title>
+
+ <para>Az internet (vagy elektronikus levelek)
+ használatán keresztül számos mód
+ kínálkozik az &os; Projekthez tartozó
+ források frissen tartásához egy adott, vagy
+ éppen az összes területen attól
+ függően, hogy mik érdekelnek minket. Ehhez
+ elsősorban az <link linkend="anoncvs">Anonim CVS</link>,
+ <link linkend="cvsup">CVSup</link> és <link
+ linkend="ctm">CTM</link> szolgáltatásokat
+ ajánljuk fel.</para>
+
+ <warning>
+ <para>Habár lehetséges csupán a
+ forrásfa egyes részeit letölteni, a
+ támogatott frissítési eljárás
+ során azonban szükségünk lesz az
+ egész fa szinkronizálására és
+ a rendszerhez tartozó felhasználói
+ programok (vagyis minden olyan program, amely a
+ felhasználói térben fut, ilyeneket
+ találhatunk többek közt a
+ <filename>/bin</filename> és <filename>/sbin</filename>
+ könyvtárakban) valamint rendszermag
+ újrafordítására is. Ha csak a
+ felhasználói programok forrásait, vagy csak
+ a rendszermagot, esetleg csupán a forrásfa egyes
+ részeit frissítjük, akkor az gondokat
+ okozhat. Az itt előforduló problémák
+ fordítási hibáktól kezdve
+ rendszerösszeomlásokon keresztül akár
+ adatvesztésbe is torkollhatnak.</para>
+ </warning>
+
+ <indexterm>
+ <primary>CVS</primary>
+ <secondary>anonim</secondary>
+ </indexterm>
+
+ <para>Az <application>Anonim CVS</application> és a
+ <application>CVSup</application> alkalmazások ún.
+ <emphasis>lehúzással</emphasis> frissítik a
+ forrásokat. A <application>CVSup</application>
+ használatakor a felhasználó (vagy a
+ <command>cron</command> szkript) meghívja a
+ <command>cvsup</command> programot, amely az
+ állományok aktualizálásához
+ felveszi a kapcsolatot egy máshol
+ megtalálható <command>cvsupd</command> szerverrel.
+ Az így nyert frissítések az adott pillanatig
+ visszemenőleg érkeznek meg, de csak akkor, ha
+ igényeljük ezeket. A frissítést
+ könnyedén le tudjuk szabályozni a
+ számunkra érdekes egyes állományokra
+ és könyvtárakra. A frissítéseket
+ a szerver hozza létre menet közben annak
+ megfelelően, hogy milyen verziókkal rendelkezünk,
+ és mihez akarunk szinkronizálni. Az
+ <application>Anonim CVS</application> a
+ <application>CVSup</application>nál valamivel
+ egyszerűbb abban a tekintetben, hogy ez a
+ <application>CVS</application>-nek egy olyan kiterjesztése,
+ amely lehetővé teszi a változtatások
+ közvetlen lehúzását egy távoli
+ CVS tárházból. Miközben a
+ <application>CVSup</application> mindezt sokkal
+ hatékonnyabb valósítja meg, addig az
+ <application>Anonim CVS</application> jóval könnyebben
+ használható.</para>
+
+ <indexterm><primary><application>CTM</application></primary></indexterm>
+
+ <para>Velük szemben a <application>CTM</application> nem
+ hasonlítja össze interaktívan a saját
+ és a központi szerveren tárolt
+ forrásokat és nem is húzza át ezeket.
+ Ehelyett egy olyan szkriptől van szó, amely naponta
+ többször megvizsgálja a központi CTM
+ szerveren tárolt állományok a
+ legutóbbi futtatás óta keletkezett
+ változtatásait, majd az észlelt
+ módosulásokat betömöríti,
+ felcímkézi egy sorozatszámmal és
+ (nyomtatható ASCII formátumban)
+ előkészíti ezeket az e-mailen keresztüli
+ küldésre. Az így létrehozott <quote>CTM
+ delták</quote> megérkezésük után
+ a &man.ctm.rmail.1; segédprogrammal kerülnek
+ feldolgozásra, amely magától
+ visszaalakítja, ellenőrzi és alkalmazza a
+ változtatásokat a forrásfa
+ felhasználó birtokában levő
+ másolatára. Ez a megoldás hatékonyabb
+ a <application>CVSup</application>
+ használatánál, mert kisebb terhelést
+ jelent a szerverek számára, hiszen a
+ frissítéshez nem a
+ <emphasis>lehúzást</emphasis>, hanem a
+ <emphasis>küldést</emphasis>
+ alkalmazzák.</para>
+
+ <para>Természetesen minden említett
+ eljárásnak megvannak a maga kompromisszumai. Ha
+ véletlenül kitöröljük a
+ forrásfánk egyes részeit, a
+ <application>CVSup</application> képes ezt
+ észrevenni és helyreállítani a
+ sérült részeket. A
+ <application>CTM</application> ezzel szemben ezt nem végzi
+ el, szóval ha (biztonsági mentés
+ nélkül) letöröljük a
+ forrásainkat, akkor az egész
+ szinkronizálást az elejéről kell
+ kezdenünk (pontosabban a legfrissebb CVS-es
+ <quote>alapdeltától</quote>) és a
+ <application>CTM</application>-mel
+ újraépíteni az egészet, esetleg a
+ <application>Anonim CVS</application>-sel letörölni a
+ hibás adatokat és
+ újraszinkronizálni.</para>
+
+ </sect1>
+
+ <sect1 id="makeworld">
+ <title>Az alaprendszer újrafordítása</title>
+
+ <indexterm><primary>az alaprendszer
+ újrafordítása</primary></indexterm>
+
+ <para>Miután sikerült a helyi forrásfánkat
+ a &os; egy nekünk szimpatikus (&os.stable;, &os.current;
+ és így tovább) változatához
+ igazítanunk, elérkezett az idő, hogy a
+ segítségével újrafordítsuk az
+ egész rendszert.</para>
+
+ <warning>
+ <title>Készítsünk biztonsági
+ mentést</title>
+
+ <para>Nem tudjuk eléggé
+ nyomatékosítani, hogy
+ <emphasis>mielőtt</emphasis> nekikezdenénk,
+ készítsünk egy biztonsági
+ mentést a rendszerünkről. Míg az
+ alaprendszer újrafordítása nem
+ túlságosan bonyolult feladat (egészen
+ addig, amíg a megadott utasításokat
+ követjük), saját magunk vagy mások
+ hibájából fakadóan kialakulhatnak
+ olyan helyzetek, amikor a rendszer nem lesz képes
+ elindulni.</para>
+
+ <para>Mindenképpen győzödjünk meg
+ róla, hogy tisztességesen elvégeztük a
+ mentést és akad a kezünk ügyében
+ egy javításra felhasználható
+ rendszerindító floppy vagy CD.
+ Valószínűleg soha nem lesz ténylegesen
+ szükségünk rájuk, azonban jobb
+ félni, mint megijedni!</para>
+ </warning>
+
+ <warning>
+ <title>Iratkozzunk fel a megfelelő levelezési
+ listákra</title>
+
+ <indexterm><primary>levelezési lista</primary></indexterm>
+
+ <para>A &os.stable; és &os.current; ágak
+ természetüknél fogva
+ <emphasis>fejlesztés alatt állnak</emphasis>. A
+ &os; fejlesztését is emberek végzik,
+ ezért előfordulhatnak benne
+ tévedések.</para>
+
+ <para>Ezek a tévedések gyakran csak
+ ártalmatlan apróságok, amelyek
+ hatására kapunk például egy
+ ismeretlen diagnosztikai hibát. De ezzel szemben
+ létrejöhetnek pusztító erejű
+ hibák is, amelyek hatására a
+ rendszerünk nem lesz képes elindulni,
+ károsodnak az állományrendszerek (vagy
+ még rosszabb).</para>
+
+ <para>Ha ilyen történik, akkor egy
+ <quote>felszólítást</quote> (egy
+ <quote>heads up</quote> témájú
+ üzenetet) küldenek az érintett
+ változatokhoz tartozó listákra, amelyben
+ igyekeznek kifejteni a probléma természetét
+ és a rendszerre mért hatását.
+ Miután <quote>minden rendbejött</quote>, a
+ probléma megoldásáról is
+ küldenek egy értesítést.</para>
+
+ <para>Ha a &a.stable; vagy a &a.current; olvasása
+ nélkül próbáljuk meg használni
+ a &os.stable; és &os.current; verziókat, akkor
+ csak magunknak keressük a bajt.</para>
+ </warning>
+
+ <warning>
+ <title>Ne használjuk a <command>make world</command>
+ parancsot</title>
+
+ <para>Rengeteg régebben készült
+ dokumentáció erre a feladatra a <command>make
+ world</command> parancs kiadását javasolja. Ennek
+ használatával azonban átlépünk
+ olyan fontos lépéseket, amelyek
+ valójában csak akkor lennének
+ kihagyhatóak, ha pontosan tudjuk mit csinálunk.
+ Ezért az esetek döntő
+ többségében nem a <command>make
+ world</command> használatára van
+ szükségünk, hanem a most bemutatandó
+ eljárásra.</para>
+ </warning>
+
+ <sect2 id="canonical-build">
+ <title>A rendszer frissítése
+ dióhéjban</title>
+
+ <para>A frissítés megkezdése előtt
+ érdemes elolvasnunk a
+ <filename>/usr/src/UPDATING</filename> állományt,
+ ahol a letöltött források
+ használatához elvégzendő előzetes
+ intézkedésekről kaphatunk hírt.
+ Ezután kövessük az alábbiakban
+ körvonalazott módszer egyes
+ lépéseit.</para>
+
+ <para>Ezek a lépések feltételezik, hogy egy
+ korábbi &os; verziót használunk, tehát
+ a fordító, a rendszermag, az alaprendszer
+ és a konfigurációs állományok
+ valamelyik régebbi változatát.
+ Alaprendszer alatt, amelyet sokszor csak a <quote>world</quote>
+ néven hivatkozunk, a rendszer számára
+ alapvető fontosságú binárisokat,
+ programkönyvtárakat és
+ programfejlesztéshez szükséges egyéb
+ állományokat értjük. Maga a
+ fordítóprogram is része ennek, azonban
+ tartalmaz néhány speciális
+ megszorítást.</para>
+
+ <para>Mindezek mellett továbbá
+ feltételezzük, hogy előzetesen már
+ valamilyen módon letöltöttük a friss
+ forrásokat. Ha rendszerünkön ezt még
+ nem tettük volna meg, akkor a <xref linkend="synching"/>
+ segítségével
+ tájékozódhatunk részletesen
+ arról, hogyan tölthetjük le a legfrissebb
+ verziót.</para>
+
+ <para>A rendszer forráskódon keresztüli
+ frissítése egy kicsivel
+ körülményesebb, mint amennyire elsőre
+ látszik. A &os; fejlesztők az évek
+ során fontosnak találták, hogy a
+ folyamatosan felszínre bukkanó,
+ elkerülhetetlen függőségek
+ tükrében meglehetősen drámai
+ módon megváltoztassák az erre javasolt
+ módszert. Ezért a szakasz további
+ részében a pillanatnyilag javasolt
+ frissítési megoldás nyomán fogunk
+ haladni.</para>
+
+ <para>A sikeres frissítések során az
+ alábbi akadályokkal kell mindenképpen
+ szembenéznünk:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>A fordító régebbi változata
+ nem feltétlenül lesz képes
+ lefordítani az új rendszermagot. (Illetve a
+ régebbi fordítóprogramok
+ tartalmazhatnak hibákat.) Ezért az új
+ rendszermagot már a fordító új
+ változatával kell
+ előállítanunk. Ebből
+ következik, hogy az új rendszermag
+ elkészítéséhez először
+ a fordítóprogram újabb
+ változatát kell lefordítanunk. Ez
+ viszont nem feltétlenül jelenti azt, hogy az
+ új rendszermag fordítása előtt az
+ új fordítóprogramot
+ <emphasis>telepítenünk</emphasis> is
+ kellene.</para>
+ </listitem>
+
+ <listitem>
+ <para>Az új alaprendszer esetenként bizonyos
+ új funkciókat igényelhet a
+ rendszermagtól. Ezért a frissebb alaprendszer
+ telepítése előtt telepítenünk
+ kell a frissebb rendszermagot.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ez az előbb említett két
+ akadály képzi az okát a
+ következő bekezdésekben bemutatott
+ <maketarget>buildworld</maketarget>,
+ <maketarget>buildkernel</maketarget>,
+ <maketarget>installkernel</maketarget>,
+ <maketarget>installworld</maketarget> sorozatnak.
+ Természetesen léteznek további
+ egyéb indokok is, amiért még
+ érdemes az itt leírtak szerint
+ frissíteni a rendszerünket. Ezek
+ közül most vegyünk néhány
+ kevésbé nyilvánvalóbbat:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>A régebbi alaprendszer nem minden esetben fog
+ problémamentesen együttműködni az
+ új rendszermaggal, ezért az alaprendszer
+ újabb változatát szinte azonnal az
+ új rendszermagot követően kell
+ telepítenünk.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vannak olyan konfigurációs
+ változtatások, amelyeket még az
+ új alaprendszer telepítése
+ előtt el kell végeznünk, a többi
+ viszont veszélyes lehet a korábbi
+ alaprendszerre. Ezért a
+ konfigurációs állományokat
+ általában két külön
+ lépésben kell frissíteni.</para>
+ </listitem>
+
+ <listitem>
+ <para>A frissítés során
+ nagyrészt csak állományok
+ cserélődnek el és újabbak
+ érkeznek, a korábbiak nem
+ törlődnek. Ez bizonyos esetekben azonban
+ gondokat okozhat. Ennek eredményeképpen a
+ frissítés során
+ időnként előfordulhat, hogy magunknak
+ kell manuálisan némely megadott
+ állományokat törölnünk.
+ Elképzelhető, hogy ezt a jövőben
+ még majd automatizálni
+ fogják.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Ezek a megfontolások vezettek tehát az
+ ismertetendő eljárás
+ kialakításához. Ettől
+ függetlenül adódhatnak olyan helyzetek,
+ amikor további lépéseket is be kell
+ iktatnunk, viszont az itt bemutatott folyamat egy ideje
+ már viszonylag elfogadottnak tekinthető:</para>
+
+ <orderedlist>
+ <listitem>
+ <para><command>make buildworld</command></para>
+
+ <para>Először lefordítja az új
+ fordítóprogramot és
+ néhány hozzá tartozó
+ eszközt, majd ennek
+ felhasználásával
+ elkészíti az alaprendszer többi
+ részét. Az eredmény a <filename
+ class="directory">/usr/obj</filename>
+ könyvtárban keletkezik.</para>
+ </listitem>
+
+ <listitem>
+ <para><command>make buildkernel</command></para>
+
+ <para>Eltérően a &man.config.8; és
+ &man.make.1; programok korábban javasolt
+ alkalmazásától, ezzel a paranccsal
+ már a <filename
+ class="directory">/usr/obj</filename>
+ könyvtárban létrehozott
+ <emphasis>új</emphasis> fordítót
+ használjuk. Ez védelmet nyújt a
+ fordító és rendszermag
+ változatai közti
+ eltérésekből fakadó
+ problémák ellen.</para>
+ </listitem>
+
+ <listitem>
+ <para><command>make installkernel</command></para>
+
+ <para>Telepíti a lemezre az új rendszermagot
+ és a hozzá tartozó modulokat,
+ ezáltal lehetővé válik a
+ frissített rendszermag
+ betöltése.</para>
+ </listitem>
+
+ <listitem>
+ <para>Átváltás
+ egyfelhasználós módba.</para>
+
+ <para>Egyfelhasználós módban a
+ minimálisra csökkenthetjük a futó
+ szoftverek frissítéséből
+ adódó bonyodalmakat. Ezzel együtt
+ minimálissá válik a régi
+ alaprendszer és az új rendszermag
+ eltéréseiből eredő
+ problémák előfordulása
+ is.</para>
+ </listitem>
+
+ <listitem>
+ <para><command>mergemaster -p</command></para>
+
+ <para>Az új alaprendszer
+ telepítéséhez elvégzi a
+ konfigurációs állományok
+ részéről szükséges
+ frissítéseket. Például
+ felvesz még nem létező csoportokat
+ vagy felhasználókat. Ez gyakran
+ elengedhetetlennek bizonyulhat, mivel ha a rendszer
+ legutóbbi frissítése óta
+ újabb csoportok vagy felhasználók
+ kerültek be az alaprendszerbe, a
+ <maketarget>installworld</maketarget> csak akkor tud
+ hibamentesen lefutni, ha ezek már a
+ futásakor is elérhetőek.</para>
+ </listitem>
+
+ <listitem>
+ <para><command>make installworld</command></para>
+
+ <para>Átmásolja a <filename
+ class="directory">/usr/obj</filename>
+ könyvtárból a korábban
+ elkészített új alaprendszert.
+ Lefutása után már mind az új
+ rendszermag és az új alaprendszer a
+ megfelelő helyén
+ található.</para>
+ </listitem>
+
+ <listitem>
+ <para><command>mergemaster</command></para>
+
+ <para>Feldolgozzuk a korábbi fázisból
+ fennmaradó konfigurációs
+ állományok
+ frissítését, mivel most már
+ elérhető az új alaprendszer.</para>
+ </listitem>
+
+ <listitem>
+ <para>A rendszer újraindítása.</para>
+
+ <para>Az új rendszermag és az új
+ konfigurációs állományokkal
+ futó alaprendszer használatához
+ teljesen újra kell indítanunk a
+ számítógépünket.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Ha a &os; ugyanazon fejlesztési
+ ágán belül frissítjük a
+ rendszerünket, például a 7.0
+ kiadásról a 7.1 kiadásra, akkor
+ értelemszerűen nem kell az iménti
+ eljárás minden lépését
+ szorosan követni, hiszen nagyon
+ valószínűtlen, hogy komoly
+ eltérések lennének a
+ fordítóprogram, a rendszermag, az alaprendszer
+ és a konfigurációs
+ állományok között. Ilyenkor
+ akár nyugodtan kiadhatjuk a <command>make
+ world</command> parancsot, majd kérhetjük a
+ rendszermag fordítását és
+ telepítését.</para>
+
+ <para>A fejlesztési ágak közti
+ váltás során azonban könnyen
+ érhetnek minket meglepetések, ha nem a
+ megadottak szerint járunk el.</para>
+
+ <para>Egyes váltásokhoz (például
+ 4.<replaceable>X</replaceable> és 5.0
+ között) további lépések
+ megtétele is szükséges lehet
+ (például adott állományok
+ törlése vagy átnevezése még
+ az <maketarget>installworld</maketarget> előtt).
+ Ilyenkor mindig figyelmesen olvassuk át a
+ <filename>/usr/src/UPDATING</filename>
+ állományt, különös tekintettel
+ a végére, mivel gyakran ott adják meg a
+ konkrét verzióváltáshoz
+ szükséges teendőket.</para>
+
+ <para>A szakaszban összefoglalt lépések
+ egyfajta evolúciós folyamat eredményei,
+ melynek során a fejlesztők felismerték,
+ hogy nem tökéletesen kivédeni az
+ összes frissítéssel járó
+ problémát. A javasolt eljárás
+ remélhetőleg viszont még sokáig
+ érvényes marad.</para>
+
+ <note>
+ <para>A &os; 3.<replaceable>X</replaceable> vagy
+ annál is korábbi változatok
+ frissítése még ennél is
+ több ügyességet kíván. Ha
+ ilyen verziót akarunk frissíteni, akkor
+ feltétlenül olvassuk el az
+ <filename>UPDATING</filename>
+ állományt!</para>
+ </note>
+
+ <para>Röviden tehát a &os;
+ forráskódon keresztüli
+ frissítését így foglalhatjuk
+ össze:</para>
+ </listitem>
+ </itemizedlist>
+
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildworld</userinput>
+&prompt.root; <userinput>make buildkernel</userinput>
+&prompt.root; <userinput>make installkernel</userinput>
+&prompt.root; <userinput>shutdown -r now</userinput></screen>
+
+ <note>
+ <para>Néhány ritka esetben a
+ <maketarget>buildworld</maketarget> lépés
+ előtt szükségünk lehet a
+ <command>mergemaster -p</command> parancs
+ lefuttatására is. Erről az
+ <filename>UPDATING</filename> állományból
+ tudakozódhatunk. Általában azonban
+ nyugodt szívvel kihagyhatjuk ezt a
+ lépést, kivéve, ha nem egy vagy több
+ főbb &os; változatot átívelő
+ frissítést végzünk.</para>
+ </note>
+
+ <para>Miután az <maketarget>installkernel</maketarget>
+ sikeresen befejezte a munkáját, indítsuk
+ újra a számítógépet
+ egyfelhasználós módban (a betöltő
+ parancssorában adjuk ki <command>boot -s</command>
+ parancsot). Itt futtassuk a következőket:</para>
+
+ <screen>&prompt.root; <userinput>adjkerntz -i</userinput>
+&prompt.root; <userinput>mount -a -t ufs</userinput>
+&prompt.root; <userinput>mergemaster -p</userinput>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld</userinput>
+&prompt.root; <userinput>mergemaster</userinput>
+&prompt.root; <userinput>reboot</userinput></screen>
+
+ <warning>
+ <title>Olvassuk el a magyarázatokat</title>
+
+ <para>Az iménti leírt folyamat csupán
+ rövid összefoglalás, amivel némi
+ gyorstalpalást igyekeztünk adni. Az egyes
+ lépések megértéséhez
+ azonban javasolt átolvasni a most következő
+ szakaszokat is, különösen abban az esetben, ha
+ saját rendszermagot akarunk használni.</para>
+ </warning>
+ </sect2>
+
+ <sect2 id="src-updating">
+ <title>Nézzük meg a
+ <filename>/usr/src/UPDATING</filename>
+ állományt</title>
+
+ <para>Mielőtt bármihez is nekifognánk,
+ keressük meg a <filename>/usr/src/UPDATING</filename> (vagy
+ hasonló, a forráskód másolatunk
+ tényleges helyétől függő)
+ állományt. Ebben adják hírül
+ az esetlegesen felmerülő problémákra
+ vonatkozó fontosabb információkat, vagy
+ határozzák meg az egyes lefuttatandó
+ parancsok pontos sorrendjét. Amennyiben az
+ <filename>UPDATING</filename> ellentmondana az itt
+ olvasottaknak, az <filename>UPDATING</filename> tartalma a
+ mérvadó.</para>
+
+ <important>
+ <para>A korábban tárgyaltak szerint az
+ <filename>UPDATING</filename> elolvasása nem
+ helyettesíti a megfelelő levelezési
+ listák figyelemmel
+ kísérését. Ez a két
+ elvárás nem kizárja, hanem
+ kiegészíti egymást.</para>
+ </important>
+ </sect2>
+
+ <sect2 id="make-conf">
+ <title>Ellenőrizzük az
+ <filename>/etc/make.conf</filename>
+ állományt</title>
+
+ <indexterm><primary><filename>make.conf</filename></primary></indexterm>
+
+ <para>Vizsgáljuk át a
+ <filename>/usr/share/examples/etc/make.conf</filename> és
+ az <filename>/etc/make.conf</filename>
+ állományokat. Az előbbi tartalmaz
+ néhány alapértelmezett
+ beállítást &ndash; ezek
+ javarészét megjegyzésbe rakták. Ha
+ használni akarjuk a rendszer lefordítása
+ során, tegyük bele ezeket az
+ <filename>/etc/make.conf</filename> állományba.
+ Ne felejtsük el azonban, hogy minden, amit megadunk az
+ <filename>/etc/make.conf</filename> állományba, a
+ <command>make</command> minden egyes elindításakor
+ felhasználásra kerül. Éppen
+ ezért olyanokat érdemes itt
+ beállítani, amik az egész
+ rendszerünket érintik.</para>
+
+ <para>A legtöbb felhasználó
+ számára az <filename>/etc/make.conf</filename>
+ állományhoz a
+ <filename>/usr/share/examples/etc/make.conf</filename>
+ állományban található
+ <makevar>CFLAGS</makevar> és
+ <makevar>NO_PROFILE</makevar> sorokra lesz szüksége,
+ melyeket kivehetünk a megjegyzésből.</para>
+
+ <para>A többi definíció
+ (<makevar>COPTFLAGS</makevar>, <makevar>NOPORTDOCS</makevar>
+ és így tovább)
+ használatáról már mindenki maga
+ dönt.</para>
+ </sect2>
+
+ <sect2 id="updating-etc">
+ <title>Frissítsük az <filename>/etc</filename>
+ tartalmát</title>
+
+ <para>Az <filename>/etc</filename> könyvtár
+ tartalmazza a rendszer beállításaival
+ kapcsolatos információk jelentős
+ részét, valamint a rendszer indítása
+ során lefutó szkripteket. Egyes szkriptek a &os;
+ verzióiról verzióira
+ változnak.</para>
+
+ <para>Némely konfigurációs
+ állományok a rendszer hétköznapi
+ működésében is szerepet
+ játszanak. Ilyen például az
+ <filename>/etc/group</filename>.</para>
+
+ <para>Alkalmanként a <command>make installworld</command>
+ parancs futása során igényt tart adott
+ nevű felhasználókra és csoportokra. A
+ frissítéskor azonban ezek a
+ felhasználók vagy csoportok nem
+ feltétlenül állnak rendelkezésre, ami
+ gondokat okozhat. Ezért bizonyos esetekben a
+ <command>make buildworld</command> előzetesen
+ ellenőrzi az igényelt felhasználók
+ és csoportok meglétét.</para>
+
+ <para>Erre például szolgálhat a
+ <username>smmsp</username> felhasználó esete.
+ Nélküle a felhasználók nem
+ tudták telepíteni az új rendszert, mert
+ hiányában az &man.mtree.8; nem volt képes
+ létrehozni a <filename>/var/spool/clientmqueue</filename>
+ könyvtárat.</para>
+
+ <para>Ezt úgy lehetett megoldani, hogy még az
+ alaprendszer lefordítása (a
+ <maketarget>buildworld</maketarget>) előtt meg kellett
+ hívni a &man.mergemaster.8; parancsot a
+ <option>-p</option> paraméterrel. Így csak azokat
+ az állományokat fogja
+ összehasonlítani, amelyek feltétlenül
+ szükségesek a <maketarget>buildworld</maketarget>
+ vagy az <maketarget>installworld</maketarget> sikeres
+ működéséhez. Amennyiben a
+ <command>mergemaster</command> egy olyan
+ verziójával rendelkezünk, amely nem ismeri a
+ <option>-p</option> paramétert, akkor az első
+ indításakor használjuk a
+ forrásfában található újabb
+ verzióját:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/mergemaster</userinput>
+&prompt.root; <userinput>./mergemaster.sh -p</userinput></screen>
+
+ <tip>
+ <para>Ha különösen paranoiásak vagyunk,
+ akkor a csoport törlése vagy
+ átnevezése előtt az alábbi
+ paranccsal ellenőrizni tudjuk az általa birtokolt
+ állományokat:</para>
+
+ <screen>&prompt.root; <userinput>find / -group <replaceable>GID</replaceable> -print</userinput></screen>
+
+ <para>Ez megmutatja <replaceable>GID</replaceable> (mely
+ megadható numerikus vagy név
+ formájában is) jelzésű csoporthoz
+ tartozó összes állományt a
+ rendszerünkben.</para>
+ </tip>
+ </sect2>
+
+ <sect2 id="makeworld-singleuser">
+ <title>Váltsunk egyfelhasználós
+ módba</title>
+
+ <indexterm><primary>egyfelhasználós
+ mód</primary></indexterm>
+
+ <para>A rendszert egyfelhasználós módban
+ érdemes lefordítani. A
+ nyilvánvalóan érezhető
+ gyorsaság előnyei mellett azért is jobban
+ járunk, mert az új rendszer
+ telepítése során számos
+ rendszerszintű állomány is
+ módosításra kerül, beleértve a
+ szabványos rendszerszintű binárisokat,
+ függvénykönyvtárakat, include
+ állományokat és így tovább.
+ Ha üzemelő rendszeren végezzük el mindezen
+ változtatásokat (különösen amikor
+ rajtunk kívül még további
+ felhasználók is tartózkodnak a
+ rendszerben), az csak a bajt hozza ránk.</para>
+
+ <indexterm><primary>többfelhasználós
+ mód</primary></indexterm>
+
+ <para>Másik lehetőség gyanánt a
+ rendszert magát lefordíthatjuk
+ többfelhasználós módban is, majd
+ ezután csak a telepítést hajtjuk
+ végre egyfelhasználós
+ üzemmódban. Ha eszerint cselekszünk,
+ egyszerűen várjunk addig, amíg az összes
+ fordítás be nem fejeződik, és az
+ egyfelhasználósra váltást halasszuk
+ a <maketarget>installkernel</maketarget> vagy
+ <maketarget>installworld</maketarget> idejére.</para>
+
+ <para>Egy működő rendszerben
+ rendszeradminisztrátorként az alábbi parancs
+ kiadásával válthatunk át
+ egyfelhasználós módba:</para>
+
+ <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
+
+ <para>Ezt elérhetjük úgy is, ha
+ újraindítjuk a rendszert és a rendszer
+ indításakor a <quote>single user</quote> pontot
+ választjuk a menüből. Ekkor a rendszer
+ egyfelhasználós módban indul el.
+ Miután ez megtörtént, adjuk ki a
+ következő parancsokat:</para>
+
+ <screen>&prompt.root; <userinput>fsck -p</userinput>
+&prompt.root; <userinput>mount -u /</userinput>
+&prompt.root; <userinput>mount -a -t ufs</userinput>
+&prompt.root; <userinput>swapon -a</userinput></screen>
+
+ <para>Ezekkel a parancsokkal először
+ ellenőrizzük az állományrendszereket,
+ ezután újracsatlakoztatjuk a
+ <filename>/</filename> állományrendszert
+ írható módban, csatlakoztatjuk az
+ <filename>/etc/fstab</filename> állományban
+ megadott összes többi UFS típusú
+ állományrendszert, majd bekapcsoljuk a
+ lapozóállomány
+ használatát.</para>
+
+ <note>
+ <para>Ha a gépünk óráját nem a
+ greenwich-i, hanem a helyi idő szerint
+ állítottuk be (ez akkor áll fenn, ha a
+ &man.date.1; parancs nem a helyes időt és
+ időzónát jelzi ki), akkor még erre
+ is szükségünk lehet:</para>
+
+ <screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
+
+ <para>Ezzel a helyi időzóna
+ beállításait tudjuk jól
+ beállítani &mdash; nélküle
+ később még gondjaink akadhatnak.</para>
+ </note>
+ </sect2>
+
+ <sect2 id="cleaning-usr-obj">
+ <title>Töröljük a <filename>/usr/obj</filename>
+ könyvtárat</title>
+
+ <para>A rendszer egyes részei fordításuk
+ során a <filename>/usr/obj</filename>
+ könyvtáron belülre kerülnek
+ (alapértelmezés szerint). Az itt
+ található könyvtárak a
+ <filename>/usr/src</filename>
+ könyvtárszerkezetét követik.</para>
+
+ <para>Ha mindenestől töröljük ezt a
+ könyvtárat, akkor növeli tudjuk a <command>make
+ buildworld</command> folyamat sebességét és
+ megmenekülünk néhány
+ függőségekkel kapcsolatos
+ fejfájástól is.</para>
+
+ <para>Egyes <filename>/usr/obj</filename> könyvtáron
+ belüli állományoknál szerepelhet a
+ <quote>megváltoztathatatlan</quote> (immutable)
+ állományjelző (lásd &man.chflags.1;),
+ amelyet a művelet elvégzéséhez
+ először el kell távolítanunk.</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/obj</userinput>
+&prompt.root; <userinput>chflags -R noschg *</userinput>
+&prompt.root; <userinput>rm -rf *</userinput></screen>
+ </sect2>
+
+ <sect2 id="updating-upgrading-compilebase">
+ <title>Fordítsuk újra az alaprendszert</title>
+
+ <sect3>
+ <title>A kimenet elmentése</title>
+
+ <para>Jól járunk azzal, ha a &man.make.1;
+ futásának kimenetét elmentjük egy
+ állományba, mivel így a hibák
+ esetén lesz egy másolatunk a
+ hibaüzenetről. Ha konkrétan nekünk nem
+ is feltétlenül segít megtalálni a
+ hiba tényleges okát, mások viszont
+ többet tudnak róla mondani, ha beküldjük
+ ezt a &os; egyik levelezési
+ listájára.</para>
+
+ <para>Ezt egyébként a legegyszerűbben a
+ &man.script.1; parancs segítségével
+ oldhatjuk meg, amelynek paraméteréül azt az
+ állományt kell megadni, ahova menteni akarjuk a
+ kimenetet. Ezt közvetlenül a rendszer
+ újrafordítása előtt kell kiadnunk,
+ majd miután megállt, a
+ <userinput>exit</userinput> paranccsal kiléphetünk
+ belőle.</para>
+
+ <screen>&prompt.root; <userinput>script /var/tmp/mw.out</userinput>
+Script started, output file is /var/tmp/mw.out
+&prompt.root; <userinput>make <maketarget>TARGET</maketarget></userinput>
+<emphasis>&hellip; fordít, fordít, fordít &hellip;</emphasis>
+&prompt.root; <userinput>exit</userinput>
+Script done, &hellip;</screen>
+
+ <para>Ilyenkor <emphasis>soha ne</emphasis> a
+ <filename>/tmp</filename> könyvtárba mentsük
+ a kimenetet, mert ennek a tartalma a következő
+ indítás során magától
+ törlődik. Sokkal jobban tesszük, ha a
+ <filename>/var/tmp</filename> könyvtárba (ahogy
+ tettük azt az előbbi példában is) vagy
+ a <username>root</username> felhasználó
+ könyvtárába mentünk.</para>
+ </sect3>
+
+ <sect3 id="make-buildworld">
+ <title>Az alaprendszer fordítása</title>
+
+ <para>A <filename>/usr/src</filename> könyvtárban
+ kell állnunk:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
+
+ <para>(kivéve természetesen, ha máshol van
+ a forráskód, akkor abba a könyvtárba
+ menjünk).</para>
+
+ <indexterm><primary><command>make</command></primary></indexterm>
+
+ <para>Az alaprendszert a &man.make.1; paranccsal
+ fordíthatjuk újra. Ez a
+ <filename>Makefile</filename> nevű
+ állományból olvassa be a &os;
+ programjainak újrafordítását
+ leíró utasításokat, a
+ fordításuk sorrendjét és
+ így tovább.</para>
+
+ <para>A begépelendő paranccsor
+ általános alakja tehát a
+ következőképpen néz ki:</para>
+
+ <screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VÁLTOZÓ</replaceable> <replaceable>target</replaceable></userinput></screen>
+
+ <para>A fenti példában a
+ <option>-<replaceable>x</replaceable></option> egy olyan a
+ paraméter, amelyet a &man.make.1; programnak adunk
+ át. A &man.make.1; man oldalán
+ megtalálhatjuk az összes neki
+ átadható ilyen
+ beállítást.</para>
+
+ <para>A
+ <option>-D<replaceable>VÁLTOZÓ</replaceable></option>
+ alakú paraméterek közvetlenül a
+ <filename>Makefile</filename> állománynak adnak
+ át olyan változókat, amelyek
+ segítségével vezérelhető a
+ viselkedése. Ezek ugyanazok a változók,
+ mint amelyek az <filename>/etc/make.conf</filename>
+ állományban is szerepelnek, és itt a
+ beállításuk egy másik
+ módját kapjuk. Így a</para>
+
+ <screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen>
+
+ <para>paranccsal is megadhatjuk, hogy ne profilozott
+ függkönyvtárak jöjjenek létre,
+ ami pontosan megfelel a</para>
+
+ <programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting>
+
+ <para>sornak az <filename>/etc/make.conf</filename>
+ állományban.</para>
+
+ <para>A <replaceable>target</replaceable> árulja el a
+ &man.make.1; programnak, hogy mi a teendője. Minden
+ egyes <filename>Makefile</filename>
+ különböző <quote>targeteket</quote>
+ definiál, és a kiválasztott target mondja
+ meg, pontosan mi is fog történni.</para>
+
+ <para>Egyes targetek ugyan megjelennek a
+ <filename>Makefile</filename> állományban,
+ azonban nem feltétlenül hivatkozhatunk
+ rájuk közvetlenül. Ehelyett csupán
+ arra valók, hogy a fordítás
+ folyamatának lépéseit felbontsák
+ még kisebb allépésekre.</para>
+
+ <para>A legtöbb esetben azonban semmilyen paramétert
+ nem kell átadnunk a &man.make.1; parancsnak,
+ ezért a teljes formája így fog
+ kinézni:</para>
+
+ <screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen>
+
+ <para>ahol a <replaceable>target</replaceable> az egyik
+ fordítási lehetőséget
+ képviseli. Az első ilyen targetnek mindig a
+ <maketarget>buildworld</maketarget>-nek kell lennie.</para>
+
+ <para>Ahogy a neve is mutatja, a
+ <maketarget>buildworld</maketarget> lefordítja az
+ összes forrást a <filename>/usr/obj</filename>
+ könyvtárba, majd a
+ <maketarget>installworld</maketarget> mint másik
+ target, telepíti az így létrehozott
+ elemeket a számítógépre.</para>
+
+ <para>A targetek szétválasztása két
+ okból is előnyös. Először is
+ lehetővé teszi, hogy az új rendszert
+ biztonságban lefordíthassuk, miközben az a
+ jelenleg futó rendszert nem zavarja. A rendszer
+ tehát képes <quote>saját magát
+ újrafordítani</quote>. Emiatt a
+ <maketarget>buildworld</maketarget> target akár
+ többfelhasználós módban is
+ mindenféle nem kívánatos hatás
+ nélkül használható. Ennek
+ ellenére azonban továbbra is azt javasoljuk,
+ hogy a <maketarget>installworld</maketarget> részt
+ egyfelhasználós módban futtassuk
+ le.</para>
+
+ <para>Másodrészt ezzel
+ lehetőségünk nyílik NFS
+ állományrendszer alkalmazásával
+ több számítógépre is
+ telepíteni hálózaton keresztül. Ha
+ például három frissítendő
+ számítógépünk van, az
+ <hostid>A</hostid>, <hostid>B</hostid> és
+ <hostid>C</hostid>, akkor az <hostid>A</hostid> gépen
+ először adjuk ki a <command>make
+ buildworld</command>, majd a <command>make
+ installworld</command> parancsot. A <hostid>B</hostid>
+ és <hostid>C</hostid> gépek ezután NFS
+ segítségével csatlakoztatják az
+ <hostid>A</hostid> <filename>/usr/src</filename> és
+ <filename>/usr/obj</filename> könyvtárait, amelyet
+ követően a <command>make installworld</command>
+ paranccsal telepíteni tudjuk a fordítás
+ eredményét a <hostid>B</hostid> és
+ <hostid>C</hostid> gépekre.</para>
+
+ <para>Noha a <maketarget>world</maketarget> mint target
+ még mindig létezik, használata
+ határozottan ellenjavalt.</para>
+
+ <para>A</para>
+
+ <screen>&prompt.root; <userinput>make buildworld</userinput></screen>
+
+ <para>parancs kiadásakor a <command>make</command>
+ parancsnak megadható egy <option>-j</option>
+ paraméter is, amellyel párhuzamosíthatjuk
+ a folyamat egyes részeit. Ez általában
+ többprocesszoros
+ számítógépeken nyer
+ értelmet, azonban mivel a fordítás
+ folyamatának haladását inkább az
+ állományműveletek mintsem a processzor
+ sebessége korlátozza, ezért
+ alkalmazható akár egyprocesszoros gépeken
+ is.</para>
+
+ <para>Tehát egy átlagos egyprocesszoros
+ gépen így adható ki a parancs:</para>
+
+ <screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen>
+
+ <para>Ennek hatására &man.make.1; egyszerre 4
+ szálon igyekszik működni. A
+ levelezési listákra beküldött
+ tapasztalati jellegű bizonyítékok azt
+ igazolják, hogy általában ez a
+ beállítás adja a legjobb
+ teljesítményt.</para>
+
+ <para>Ha többprocesszoros géppel rendelkezünk
+ és rajta SMP támogatású
+ rendszermagot indítottunk el, akkor érdemes 6
+ és 10 közötti értékekkel
+ kísérleteznünk.</para>
+ </sect3>
+
+ <sect3>
+ <title>Időigény</title>
+
+ <indexterm>
+ <primary>az alaprendszer
+ újrafordítása</primary>
+ <secondary>időigény</secondary>
+ </indexterm>
+
+ <para>Számos tényező befolyásolja a
+ fordítás tényleges időbeli
+ hosszát, de a &os.stable; fa lefordítása
+ mindenféle trükkök és
+ rövidítések nélkül a
+ legtöbb számítógépen olyan
+ egy vagy két órára
+ taksálható. A &os.current; fához
+ ennél valamivel több időre lesz
+ szükségünk.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="new-kernel">
+ <title>Fordítsunk és telepítsünk egy
+ új rendszermagot</title>
+
+ <indexterm>
+ <primary>rendszermagot</primary>
+ <secondary>fordítása</secondary>
+ </indexterm>
+
+ <para>Az újdonsült rendszerünket csak akkor
+ tudjuk igazán kihasználni, ha egy új
+ rendszermagot is készítünk hozzá. Ez
+ gyakorlati szinten tulajdonképpen elvárás,
+ mivel könnyen előfordulhat, hogy bizonyos
+ memóriabeli adatszerkezetek
+ felépítése megváltozott,
+ ezért némely programok, mint például
+ a &man.ps.1; és &man.top.1;, egészen addig nem
+ lesznek képesek normálisan működni,
+ amíg a rendszer és a rendszermag
+ forráskódja nem illeszkedik
+ egymáshoz.</para>
+
+ <para>Ennek legegyszerűbb és egyben
+ legbiztonságosabb módja, ha a
+ <filename>GENERIC</filename> beállításai
+ alapján gyártunk és telepítünk
+ egy rendszermagot. Még ha a <filename>GENERIC</filename>
+ beállításai nem is tartalmazzák a
+ rendszerünkben fellelhető összes eszközt,
+ minden megtalálható bennük ahhoz, hogy a
+ rendszert sikeresen elindíthassuk legalább
+ egyfelhasználós módban. Ez mellesleg remek
+ próbája az új rendszer
+ életképességének. Miután
+ elindítottuk a rendszert a <filename>GENERIC</filename>
+ típusú rendszermaggal és
+ meggyőződtünk róla, hogy a rendszer
+ tényleg működőképes, a megszokott
+ rendszermagunk konfigurációs
+ állománya alapján nyugodtan
+ elkészíthetjük ezután azt is.</para>
+
+ <para>&os; alatt egy új rendszermag
+ építése előtt fontos <link
+ linkend="make-buildworld">újrafordítani az
+ alaprendszert</link>.</para>
+
+ <note>
+ <para>Ha saját beállításaink szerint
+ akarunk rendszermagot létrehozni és már
+ van is ehhez egy konfigurációs
+ állományunk, akkor erre használhatjuk a
+ <literal>KERNCONF=<replaceable>SAJÁTMAG</replaceable></literal>
+ paramétert is, valahogy így:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>SAJÁTMAG</replaceable></userinput>
+&prompt.root; <userinput>make installkernel KERNCONF=<replaceable>SAJÁTMAG</replaceable></userinput></screen>
+ </note>
+
+ <para>Hozzátennénk, hogy ha a
+ <varname>kern.securelevel</varname>
+ rendszerváltozó értékét 1
+ felé állítottuk
+ <emphasis>és</emphasis> a rendszermag
+ állományának beállítottunk
+ <literal>noschg</literal> vagy hozzá hasonló
+ állományjelzőt, akkor az
+ <maketarget>installkernel</maketarget>
+ lefuttatásához mindenképpen
+ egyfelhasználós módba kell
+ váltanunk. Minden más esetben további
+ bonyodalmak nélkül ki tudjuk adni az említett
+ parancsokat. A <varname>kern.securelevel</varname>
+ részleteiről az &man.init.8; oldalán, a
+ különböző
+ állományjelzőkről pedig a
+ &man.chflags.1; oldalán olvashatunk.</para>
+ </sect2>
+
+ <sect2 id="new-kernel-singleuser">
+ <title>Indítsuk újra a rendszert
+ egyfelhasználós módban</title>
+
+ <indexterm><primary>egyfelhasználós
+ mód</primary></indexterm>
+
+ <para>Az új rendszermag működésének
+ leteszteléséhez indítsuk újra a
+ rendszert egyfelhasználós módban. Ennek
+ pontos részleteit lásd <xref
+ linkend="makeworld-singleuser"/>.</para>
+ </sect2>
+
+ <sect2 id="make-installworld">
+ <title>Telepítsük az új rendszer
+ binárisait</title>
+
+ <para>Ha a &os; friss változatát nemrég
+ fordítottuk le a <command>make buildworld</command>
+ paranccsal, akkor utána az
+ <maketarget>installworld</maketarget>
+ segítségével tudjuk telepíteni a
+ keletkezett programokat.</para>
+
+ <para>Tehát írjuk be ezeket:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld</userinput></screen>
+
+ <note>
+ <para>Amennyiben a paranccsorban a <command>make
+ buildworld</command> használata során adtunk meg
+ változókat, akkor ne felejtsük el
+ ugyanazokat megadni a <command>make installworld</command>
+ kiadása során sem. Ez viszont a többi
+ paraméterre már nem feltétlenül
+ érvényes. Például a
+ <option>-j</option> beállítást
+ szigorúan tilos az
+ <maketarget>installworld</maketarget> targettel együtt
+ használni.</para>
+
+ <para>Ennek megfelelően tehát ha korábban ezt
+ írtuk be:</para>
+
+ <screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen>
+
+ <para>akkor így telepítsünk:</para>
+
+ <screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen>
+
+ <para>Máskülönben azokat a profilozott
+ függvénykönyvtárakat
+ próbáljuk meg telepíteni, amelyek a
+ <command>make buildworld</command> futása során
+ nem jöttek létre.</para>
+ </note>
+ </sect2>
+
+ <sect2 id="post-installworld-updates">
+ <title>Frissítsük a <command>make
+ installworld</command> által kihagyott
+ állományokat</title>
+
+ <para>Az alaprendszer újrafordítása nem
+ regisztrálja az új vagy megváltozott
+ állományokat bizonyos könyvtárakban
+ (különösen értendő ez az
+ <filename>/etc</filename>, <filename>/var</filename> és
+ <filename>/usr</filename> esetén).</para>
+
+ <para>Az ilyen állományokat a legegyszerűbben a
+ &man.mergemaster.8; használatával tarthatjuk
+ karban, de igény szerint akár kézzel is
+ elvégezhetjük a szükséges
+ aktualizálásokat. Függetlenül
+ attól, hogy mit is választunk, mindenképpen
+ készítsünk biztonsági mentést
+ az <filename>/etc</filename> könyvtárról arra
+ az esetre, ha bármilyen szörnyűség
+ történne.</para>
+
+ <sect3 id="mergemaster">
+ <sect3info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Írta: </contrib>
+ </author>
+ </authorgroup>
+ </sect3info>
+
+ <title>A <command>mergemaster</command></title>
+
+ <indexterm><primary><command>mergemaster</command></primary></indexterm>
+
+ <para>A &man.mergemaster.8; segédprogram
+ valójában egy Bourne szkript, amely segít
+ az <filename>/etc</filename> könyvtárunkban
+ és a forrásfában levő
+ <filename>/usr/src/etc</filename> könyvtárban
+ elhelyezkedő konfigurációs
+ állományok közti eltérések
+ megállapításában. Ezt a
+ módszert ajánljuk arra, hogy összevessük
+ a konfigurációs állományainkat a
+ forrásfában található
+ változataikkal.</para>
+
+ <para>A használatának megkezdéséhez
+ egyszerűen írjuk be, hogy
+ <command>mergemaster</command>, majd várjunk egy kicsit,
+ amíg a <command>mergemaster</command> létrehoz
+ magának egy átmeneti környezetet a
+ <filename>/</filename> könyvtárból elindulva
+ és megtölti azt a különböző
+ rendszerszintű beállításokat
+ tartalmazó állományokkal. Ezeket az
+ állományokat aztán
+ összehasonlítja a jelenleg érvényben
+ levő változataikkal. Ilyenkor a köztük
+ talált eltéréseket a &man.diff.1;
+ formátumának megfelelően módon mutatja
+ meg, ahol a <option>+</option> jelöli a hozzáadott
+ vagy módosított sorokat, a <option>-</option>
+ pedig a teljesen eltávolítandó vagy
+ cserélendő sorokat. Erről a
+ formátumról bővebben a &man.diff.1; man
+ oldalán találhatunk
+ felvilágosítást.</para>
+
+ <para>A &man.mergemaster.8; ezt követően megmutatja az
+ összes olyan állományt, ahol
+ eltérést tapasztalt, és ezen a ponton van
+ lehetőségünk letörölni (delete) az
+ új állományokat (amelyekre itt most
+ ideiglenes állományként hivatkozik),
+ telepíteni (install) a módosítatlan
+ ideiglenes (új) állományt, valamint
+ összefésülni (merge) az ideiglenes (új)
+ és a jelenlegi állományokat, vagy
+ ismét átnézni (view) a &man.diff.1;
+ által jelzett különbségeket.</para>
+
+ <para>Ha az ideiglenes állomány
+ törlését választjuk, akkor a
+ &man.mergemaster.8; ezt úgy értelmezi, hogy
+ változatlanul meg akarjuk tartani a jelenlegi
+ változatot és törölni az újat.
+ Ezt alapvetően nem javasoljuk, hacsak tényleg nem
+ látunk valamilyen okot erre. A &man.mergemaster.8;
+ parancssorában a <keycap>?</keycap>
+ begépelésével bármikor
+ kérhetünk segítséget. Ha az
+ állomány kihagyását (skip)
+ választjuk, akkor majd ismét felajánlja,
+ amikor végeztünk az összes
+ többivel.</para>
+
+ <para>A módosítatlan ideiglenes
+ állomány telepítésének
+ választásával lecseréljük a
+ jelenleg verziót az újra. Ha az aktuális
+ verziót sem változtattuk meg, akkor
+ számunkra ez a legjobb megoldás.</para>
+
+ <para>Az állományok
+ összefésülésének
+ kiválasztásakor kapunk egy
+ szövegszerkesztőt, benne a két
+ állomány tartalmával. Ilyenkor tudjuk a
+ képernyőn soronként egyeztetni a két
+ állományt, majd a belőlük a
+ megfelelő részek
+ összeválogatásával kialakítani
+ az eredményt. Ebben a feldolgozási módban
+ az <keycap>l</keycap> (mint left, vagyis bal) billentyű
+ lenyomására a bal oldalon látható
+ részt, az <keycap>r</keycap> (mint right, vagyis jobb)
+ lenyomására pedig a jobb oldalon
+ látható részt választjuk ki. Az
+ így keletkező eredményt ezután egy
+ állományba kerül, amelyet telepíteni
+ tudunk. Ez a megoldás olyan állományok
+ esetében használható, amikor a
+ felhasználó módosított az
+ alapértelmezett
+ beállításokat.</para>
+
+ <para>Ha a &man.diff.1; szerinti alakban akarjuk
+ átnézni a különbségeket, akkor a
+ &man.mergemaster.8; ugyanúgy megmutatja ezeket, mint a
+ paranccsor megjelenítése előtt.</para>
+
+ <para>Miután a &man.mergemaster.8; végigment a
+ rendszerszintű állományokon, további
+ opciókat mutat. Megkérdezheti, hogy újra
+ létre akarjuk-e hozni a jelszavakat tároló
+ állományt (rebuild), illetve a folyamat
+ végén a megmaradt ideiglenes
+ állományok törlésére (remove)
+ vár választ.</para>
+ </sect3>
+
+ <sect3>
+ <title>Az állományok aktualizálása
+ kézzel</title>
+
+ <para>Ha inkább manuálisan szeretnénk
+ frissíteni, akkor nem másolhatjuk csak
+ egyszerűen át az állományokat a
+ <filename>/usr/src/etc</filename>
+ könyvtárból a <filename>/etc</filename>
+ könyvtárba és nem hagyhatjuk ezeket
+ sorsukra. Egyes állományokat először
+ <quote>telepíteni</quote> kell. Ez azért van
+ így, mert a <filename>/usr/src/etc</filename>
+ könyvtár <emphasis>nem pusztán</emphasis>
+ az <filename>/etc</filename> könyvtár
+ egyszerű másolata. Ráadásul az
+ <filename>/etc</filename> könyvtárban vannak olyan
+ állományok, amelyek a
+ <filename>/usr/src/etc</filename> könyvtárban nem
+ is találhatóak meg.</para>
+
+ <para>Ha (az ajánlottak szerint) a &man.mergemaster.8;
+ segítségével dolgozunk, nyugodtan
+ átléphetünk a <link
+ linkend="updating-upgrading-rebooting">következő
+ szakaszra</link>.</para>
+
+ <para>Saját magunk a legegyszerűbben ezt úgy
+ tudjuk megoldani, ha telepítjük az
+ állományokat egy új
+ könyvtárba és ezután
+ nekiállunk változásokat keresni.</para>
+
+ <warning>
+ <title>Az <filename>/etc</filename> meglevő
+ tartalmának mentése</title>
+
+ <para>Habár elméletileg magától
+ semmi sem fogja bántani ezt a könyvtárat,
+ azért ettől függetlenül mindig
+ érdemes biztosra menni. Ezért másoljuk
+ az <filename>/etc</filename> könyvtár
+ tartalmát egy megbízható helyre.
+ Például:</para>
+
+ <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen>
+
+ <para>Az <option>-R</option> itt a rekurzív
+ másolást jelenti, a <option>-p</option> pedig
+ a dátumok, az állományok és
+ egyebek tulajdoni viszonyainak
+ megőrzését.</para>
+ </warning>
+
+ <para>Az <filename>/etc</filename> új
+ változatának telepítéséhez
+ szükségünk lesz még további
+ könyvtárakra is. Erre a feladatra a
+ <filename>/var/tmp/root</filename> tökéletesen
+ megfelel, ahol még létre kell hoznunk
+ néhány alkönyvtárat.</para>
+
+ <screen>&prompt.root; <userinput>mkdir /var/tmp/root</userinput>
+&prompt.root; <userinput>cd /usr/src/etc</userinput>
+&prompt.root; <userinput>make DESTDIR=/var/tmp/root distrib-dirs distribution</userinput></screen>
+
+ <para>Ezzel létrejön a szükséges
+ könyvtárszerkezet és települnek az
+ állományok. Sok üres
+ alkönyvtár is keletkezik a
+ <filename>/var/tmp/root</filename> könyvtáron
+ belül, ezeket töröljük. Ezt a
+ legkönnyebben így tehetjük meg:</para>
+
+ <screen>&prompt.root; <userinput>cd /var/tmp/root</userinput>
+&prompt.root; <userinput>find -d . -type d | xargs rmdir 2&gt;/dev/null</userinput></screen>
+
+ <para>Ezzel törlődnek az üres
+ könyvtárak. (A szabvány hibakimenetet
+ átirányítottuk a
+ <filename>/dev/null</filename> eszközre, és ezzel
+ elnyomtuk a nem üres könyvtárak esetén
+ keletkező hibaüzeneteket.)</para>
+
+ <para>A <filename>/var/tmp/root</filename> most már
+ tartalmazza az összes olyan állományt,
+ amelyek normális esetben a <filename>/</filename>
+ könyvtáron belül foglalnak helyet. Ezt
+ követően nincs más dolgunk, csak
+ végigmenni az itt található
+ állományokon és
+ megállapítani, miben térnek a
+ meglévőektől.</para>
+
+ <para>Vegyük észre, hogy a
+ <filename>/var/tmp/root</filename> könyvtárba
+ telepített állományok
+ némelyikének neve <quote>.</quote>-tal
+ kezdődik. Az írás pillanatában ezek
+ csak a <filename>/var/tmp/root/</filename> és
+ <filename>/var/tmp/root/root/</filename>
+ könyvtárakban található
+ parancsértelmezőhöz tartozó
+ indító állományok lehetnek,
+ habár adódhatnak még ilyenek
+ (attól függően, mikor olvassuk ezt).
+ Ezért a feldolgozásukhoz ne felejtsük el a
+ <command>ls -a</command> parancsot használni.</para>
+
+ <para>A &man.diff.1; alkalmazásával
+ legegyszerűbben így tudunk
+ összehasonlítani két
+ állományt:</para>
+
+ <screen>&prompt.root; <userinput>diff /etc/shells /var/tmp/root/etc/shells</userinput></screen>
+
+ <para>Ennek hatására megjelennek az
+ <filename>/etc/shells</filename> és az új
+ <filename>/var/tmp/root/etc/shells</filename>
+ állományok közti
+ különbségek. A
+ segítségével gyorsan el tudjuk
+ dönteni, hogy összefésüljük-e a
+ két állományt, vagy csak egyszerűen
+ írjuk felül a régebbi verziót az
+ újjal.</para>
+
+ <tip>
+ <title>Az új könyvtár
+ (<filename>/var/tmp/root</filename>) nevébe
+ írjuk bele a dátumot is, így
+ könnyedén össze tudunk hasonlítani
+ több verziót is</title>
+
+ <para>A rendszer gyakori újrafordítása az
+ <filename>/etc</filename> szintén gyakori
+ aktualizálását is maga után
+ vonja, ami viszont fárasztó lehet.</para>
+
+ <para>Az iménti folyamatot fel tudjuk
+ gyorsítani, hogy ha az <filename>/etc</filename>
+ legutoljára összefésült
+ változatát megtartjuk. A most
+ következő eljárás ennek
+ mikéntjét vázolja fel.</para>
+
+ <procedure>
+ <step>
+ <para>A megszokottak szerint fordítsuk le a
+ rendszert. Majd amikor az <filename>/etc</filename>
+ könyvtárat és a többit is
+ frissíteni akarjuk, a célként
+ megadott könyvtár nevében adjuk meg a
+ dátumot. Ha tehát például
+ 1998. február 14. van, akkor írjuk
+ ezt:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /var/tmp/root-19980214</userinput>
+&prompt.root; <userinput>cd /usr/src/etc</userinput>
+&prompt.root; <userinput>make DESTDIR=/var/tmp/root-19980214 \
+ distrib-dirs distribution</userinput></screen>
+ </step>
+
+ <step>
+ <para>Fésüljük össze a
+ könyvtárban található az
+ állományokat a fentiekben
+ körvonalazottak szerint.</para>
+
+ <para>Befejezés után
+ <emphasis>őrizzük meg</emphasis> a
+ <filename>/var/tmp/root-19980214</filename>
+ könyvtárat.</para>
+ </step>
+
+ <step>
+ <para>Mikor újra letöltjük a legfrissebb
+ forrásokat és megismételjük az
+ előbbi lépéseket, haladjunk megint az
+ első lépés szerint. Ekkor
+ tehát létrejön egy újabb
+ könyvtár, amelynek a neve ezúttal
+ már <filename>/var/tmp/root-19980221</filename>
+ lesz (ha például hetente
+ frissítünk).</para>
+ </step>
+
+ <step>
+ <para>Most már meg tudjuk vizsgálni a
+ közbeeső héten született
+ eltéréseket, ha a két
+ könyvtárra kiadunk egy rekurzív
+ &man.diff.1; hívást:</para>
+
+ <screen>&prompt.root; <userinput>cd /var/tmp</userinput>
+&prompt.root; <userinput>diff -r root-19980214 root-19980221</userinput></screen>
+
+ <para>Általában így kevesebb
+ eltérést kapunk, mint amennyi
+ például a
+ <filename>/var/tmp/root-19980221/etc/</filename>
+ és az <filename>/etc</filename>
+ összehasonlítása során
+ elkerült volna. Mivel kisebb a keletkezett
+ különbségek száma, ezért
+ könnyebb lesz átvinnünk az
+ <filename>/etc</filename> könyvtárunkba is a
+ módosításokat.</para>
+ </step>
+
+ <step>
+ <para>Ezután törölhetjük a
+ régebbi <filename>/var/tmp/root-*</filename>
+ könyvtárat:</para>
+
+ <screen>&prompt.root; <userinput>rm -rf /var/tmp/root-19980214</userinput></screen>
+ </step>
+
+ <step>
+ <para>Az <filename>/etc</filename>
+ összefésülésekor mindig
+ ismételjük meg ezeket a
+ lépéseket.</para>
+ </step>
+ </procedure>
+
+ <para>A &man.date.1; meghívásával
+ akár automatikussá is tehetjük a
+ könyvtárak névadását:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /var/tmp/root-`date "+%Y%m%d"`</userinput></screen>
+ </tip>
+ </sect3>
+ </sect2>
+
+ <sect2 id="updating-upgrading-rebooting">
+ <title>Újraindítás</title>
+
+ <para>Ezzel készen is vagyunk. Miután
+ ellenőriztük, hogy minden a megfelelő
+ helyére került, indítsuk újra a
+ rendszert. Ehhez egy egyszerű &man.shutdown.8; is
+ elegendő:</para>
+
+ <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
+ </sect2>
+
+ <sect2>
+ <title>Befejeztük!</title>
+
+ <para>Gratulálunk, sikerült frissítenünk a
+ &os; rendszerünket.</para>
+
+ <para>Ha mégis valami balul ütne ki, könnyen
+ újra tudjuk fordítani a rendszer egyes
+ részeit. Például, ha
+ véletlenül letöröltük az
+ <filename>/etc/magic</filename> állományt az
+ <filename>/etc</filename> frissítése vagy
+ összefésülése során, a
+ &man.file.1; parancs nem fog tudni rendesen működni.
+ Ilyenkor a következőket kell tennünk a hiba
+ kijavításához:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput>
+&prompt.root; <userinput>make all install</userinput></screen>
+ </sect2>
+
+ <sect2 id="updating-questions">
+ <title>Kérdések</title>
+
+ <qandaset>
+ <qandaentry>
+ <question>
+ <para>Minden egyes változtatásnál
+ újra kell fordítani a rendszert?</para>
+ </question>
+
+ <answer>
+ <para>Nem könnyű választ adni erre a
+ kérdésre, mivel ez alapvetően a
+ változtatás jellegétől
+ függ. Például, ha elindítjuk a
+ <application>CVSup</application> programot és csak
+ az alábbi állományok
+ frissülnek:</para>
+
+ <screen><filename>src/games/cribbage/instr.c</filename>
+<filename>src/games/sail/pl_main.c</filename>
+<filename>src/release/sysinstall/config.c</filename>
+<filename>src/release/sysinstall/media.c</filename>
+<filename>src/share/mk/bsd.port.mk</filename></screen>
+
+ <para>Ekkor valószínűleg nem éri
+ meg újrafordítani a teljes rendszert.
+ Elegendő csupán belépni az
+ érintett állományokat
+ tartalmazó alkönyvtárakba és ott
+ rendre kiadni a <command>make all install</command>
+ parancsot. Ha viszont már valami komolyabb,
+ például az
+ <filename>src/lib/libc/stdlib</filename> változott
+ meg, akkor vagy az egész rendszert, vagy
+ legalább azon részeit fordítsuk
+ újra, amely statikusan linkeltek (és minden
+ más időközben még
+ hozzáadott statikusan linkelt dolgot).</para>
+
+ <para>Hogy melyik megoldást választjuk,
+ teljesen rajtunk áll.
+ Újrafordíthatjuk az egész rendszert
+ kéthetente, mondván, hadd gyüljenek fel
+ szépen a módosítások, vagy a
+ függőségek pontos
+ kielemzésével csak azokat az elemeket
+ fordítjuk újra, amelyek tényleg meg
+ is változtak.</para>
+
+ <para>Természetesen az egész attól
+ függ, hogy milyen gyakran és melyik rendszert,
+ a &os.stable;-t vagy a &os.current;-et
+ frissítjük.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question>
+ <indexterm><primary>signal 11</primary></indexterm>
+
+ <para>A fordító rengeteg 11-es jelzést
+ (signal 11) (vagy másfajta jelzéseket) dob
+ hibával. Mi történhetett?</para>
+ </question>
+
+ <answer>
+ <para>Ez általában hardveres
+ meghibásodásra utal. A rendszer
+ újrafordítása alapjaiban véve
+ egy remek módszer
+ számítógépünk
+ alkatrészeinek terhelésére,
+ ezért gyakorta előhozza a memória
+ már meglevő hibáit. Ezek
+ többnyire abban fogalmazódnak meg, hogy a
+ fordító rejtélyes módon
+ leáll mindenféle furcsa jelzések
+ hatására.</para>
+
+ <para>Erről biztosan úgy tudunk
+ meggyőződni, ha újraindítjuk a
+ make programot és az a folyamat egy teljesen
+ másik pontján vérzik el.</para>
+
+ <para>Ilyenkor nem tudunk mást tenni, mint
+ egymás után kicserélgetjük,
+ kivesszük az alkatrészeket és
+ így próbáljuk
+ megállapítani, pontosan melyikük is
+ okozza a gondokat.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>A fordítása befejezése
+ után törölhetem a
+ <filename>/usr/obj</filename>
+ könyvtárat?</para>
+ </question>
+
+ <answer>
+ <para>Röviden: Igen.</para>
+
+ <para>A <filename>/usr/obj</filename> tartalmazza a
+ fordítás folyamata során
+ keletkező összes tárgykódot.
+ Ennek törlése általában a
+ <command>make buildworld</command> első
+ lépései között szerepel.
+ Ezért tulajdonképpen a
+ <filename>/usr/obj</filename> megtartásának
+ nincs túlságosan sok értelme, viszont
+ elég sok (jelenleg úgy kb. 340&nbsp;MB)
+ helyet fel tudunk így szabadítani.</para>
+
+ <para>Ha azonban értjük a dolgunkat, akkor
+ megadhatjuk a <command>make buildworld</command>
+ parancsnak, hogy hagyja ki ezt a lépést.
+ Ennek hatására a fordítás
+ sokkal hamarabb véget ér, mivel a
+ legtöbb forrást így nem kell
+ újrafordítani. Üröm az
+ örömben, hogy ha netalán aprócska
+ függőségi problémák
+ merülnének fel, akkor az egész
+ fordítás megfeneklik mindenfelé
+ különös módokon. Emiatt gyakran
+ írnak feleslegesen leveleket a &os;
+ levelezési listáira, melyek a rendszer
+ sikertelen
+ újrafordításáról
+ panaszkodnak, miközben kiderül, hogy az maguk az
+ érintettek akarták lerövidíteni
+ a folyamatot.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>Lehetséges a megszakadt fordítás
+ folytatása?</para>
+ </question>
+
+ <answer>
+ <para>Ez attól függ, hogy a probléma
+ bekövetkezése előtt mennyire
+ sikerült eljutni a fordításban.</para>
+
+ <para><emphasis>Általában</emphasis>
+ (tehát nem feltétlenül minden esetben)
+ a <command>make buildworld</command> lefordítja a
+ fordításhoz szükséges
+ eszközök (például a &man.gcc.1;
+ és &man.make.1;) újabb változatait
+ és a rendszer
+ függvénykönyvtárait, majd ezeket
+ telepíti. Ezután ezekkel az új
+ eszközökkel lefordítattja saját
+ magukat és ismét telepíti. Ezt
+ követően fordítja újra az
+ új rendszerállományokkal az
+ egész rendszert (így ezúttal
+ már az olyan szokásos
+ felhasználói programokat is, mint
+ például az &man.ls.1; és a
+ &man.grep.1;).</para>
+
+ <para>Ha tudjuk, hogy az utolsó fázisban
+ álltunk le (mivel megnéztük a
+ fordításhoz tartozó kimenetet), akkor
+ (minden további nélkül) elég
+ ennyi:</para>
+
+ <screen><emphasis>&hellip; kijavítjuk a hibát &hellip;</emphasis>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen>
+
+ <para>Ezzel megmarad a korábbi <command>make
+ buildworld</command> munkájának
+ eredménye.</para>
+
+ <para>Ha ezt az üzenetet látjuk a <command>make
+ buildworld</command> kimenetében:</para>
+
+ <screen>--------------------------------------------------------------
+Building everything..
+--------------------------------------------------------------</screen>
+
+ <para>akkor különösebb gond
+ nélkül megcsinálhatjuk.</para>
+
+ <para>Amennyiben viszont nem látunk ilyen
+ üzenetet, vagy nem vagyunk benne biztosak, akkor
+ még mindig jobb elővigyázatosnak lenni,
+ ezért kénytelenek leszünk teljesen
+ elölről kezdeni a
+ fordítást.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>Hogyan tudjuk felgyorsítani a
+ fordítást?</para>
+ </question>
+
+ <answer>
+ <itemizedlist>
+ <listitem>
+ <para>Futtassuk egyfelhasználós
+ módban.</para>
+ </listitem>
+
+ <listitem>
+ <para>Tegyük a <filename>/usr/src</filename>
+ és <filename>/usr/obj</filename>
+ könyvtárakat külön
+ állományrendszerekre, külön
+ lemezekre. Sőt, ha lehetséges, akkor
+ ezeket a lemezeket tegyük külön
+ lemezvezérlőkre.</para>
+ </listitem>
+
+ <listitem>
+ <para>Még mindig jobb, ha ezeket az
+ állományrendszereket a &man.ccd.4;
+ (lemezek összefűzését
+ vezérlő meghajtó)
+ segítségével kiterjesztjük
+ több lemezes eszközre.</para>
+ </listitem>
+
+ <listitem>
+ <para>Kapcsoljuk ki a profilozást (az
+ <filename>/etc/make.conf</filename>
+ állományban a
+ <quote>NO_PROFILE=true</quote>
+ megadásával). Többnyire úgy
+ sem lesz rá szükségünk.</para>
+ </listitem>
+
+ <listitem>
+ <para>Az <filename>/etc/make.conf</filename>
+ állományban a <makevar>CFLAGS</makevar>
+ változót állítsuk az
+ <option>-O -pipe</option> értékre. Az
+ <option>-O2</option> gyakran sokkal lassabb, az
+ <option>-O</option> és <option>-O2</option>
+ alig tér el az optimalizálás
+ mértékében. A
+ <option>-pipe</option> paraméter
+ hatására pedig a
+ fordítóprogram átmeneti
+ állományok helyett csöveket
+ használ a kommunikációra,
+ és így megtakarít némi
+ lemezhasználatot (a
+ memóriahasználat terhére).</para>
+ </listitem>
+
+ <listitem>
+ <para>Ha a &man.make.1; parancsnak átadjuk a
+ <option>-j<replaceable>n</replaceable></option>
+ paramétert, akkor képes több
+ mindent párhuzamosan futtatni. Ez sok esetben
+ segít attól függetlenül, hogy
+ egy- vagy többprocesszoros gépünk
+ van.</para>
+ </listitem>
+
+ <listitem>
+ <para>A <filename>/usr/src</filename>
+ könyvtárat tartalmazó
+ állományrendszert csatlakoztathatjuk
+ (vagy újracsatlakoztathatjuk) a
+ <option>noatime</option>
+ beállítással. Ilyenkor az
+ állományrendszer nem rögzíti
+ a hozzáférés idejét. Erre
+ az információra sincs
+ igazából
+ szükségünk.</para>
+
+ <screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen>
+
+ <warning>
+ <para>A fenti példa azt feltételezi,
+ hogy a <filename>/usr/src</filename>
+ könyvtárnak saját
+ állományrendszere van. Ha ez nem
+ így lenne (tehát például
+ a <filename>/usr</filename> része), akkor itt
+ azt kell megadnunk, nem pedig a
+ <filename>/usr/src</filename> nevét.</para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>A <filename>/usr/obj</filename>
+ könyvtárat tartalmazó
+ állományrendszert csatlakoztathatjuk
+ (vagy újracsatlakoztathatjuk) az
+ <option>async</option>
+ beállítással. Ennek
+ hatására a lemez írása
+ aszinkron módon történik. Magyarul
+ az írási műveletek azonnal
+ befejeződnek, miközben az adat
+ ténylegesen csak pár másodperccel
+ később kerül ki a lemezre. Ezzel az
+ írási kérelmek
+ gyönyörűen
+ összegyűjthetőek, ami
+ nagymértékű növekedést
+ eredményez a
+ teljesítményben.</para>
+
+ <warning>
+ <para>Ne felejtsük el azonban, hogy ezzel
+ együtt az
+ állományrendszerünk is
+ sérülékenyebbé
+ válik. Ezen beállítás
+ használatával megnő annak az
+ esélye, hogy egy áramkimaradást
+ követő indításnál az
+ állományrendszer
+ helyreállíthatatlan állapotba
+ kerül.</para>
+
+ <para>Ha egyedül csak a
+ <filename>/usr/obj</filename>
+ található ezen az
+ állományrendszeren, akkor ez nem
+ jelent akkora veszélyt. Amikor viszont rajta
+ kívül még értékes
+ adat is található az
+ állományrendszeren, a
+ beállítás
+ érvényesítése előtt
+ mindenképpen készítsünk
+ róla friss mentéseket.</para>
+ </warning>
+
+ <screen>&prompt.root; <userinput>mount -u -o async /usr/obj</userinput></screen>
+
+ <warning>
+ <para>Ahogy arról az előbb is szó
+ esett, ha a <filename>/usr/obj</filename> nem egy
+ különálló
+ állományrendszeren
+ található, akkor a
+ példában szereplő
+ csatlakozási pontot cseréljük ki
+ a megfelelőre.</para>
+ </warning>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>Mi tegyünk, ha valami nem megy rendesen?</para>
+ </question>
+
+ <answer>
+ <para>Egyértelműen bizonyosodjunk meg
+ róla, hogy a korábbi
+ fordításokból nem maradtak vissza
+ semmiféle kóbor állományok.
+ Ennyi sokszor pontosan elég.</para>
+
+ <screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/usr</userinput>
+&prompt.root; <userinput>rm -rf /usr/obj/usr</userinput>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make cleandir</userinput>
+&prompt.root; <userinput>make cleandir</userinput></screen>
+
+ <para>Igen, a <command>make cleandir</command> parancsot
+ tényleg kétszer kell kiadni.</para>
+
+ <para>Ezután a <command>make buildworld</command>
+ parancstól indulva kezdjük újra a
+ fordítást.</para>
+
+ <para>Ha még ezek után is fennáll a
+ probléma, küldjük el a hibát
+ tartalmazó kimenetet és a <command>uname
+ -a</command> parancs eredményét a
+ &a.questions; címére. Ne
+ lepődjünk meg, ha a
+ beállításainkra vonatkozóan
+ még kapunk további kérdéseket
+ is!</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </sect2>
+ </sect1>
+
+ <sect1 id="small-lan">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Mike</firstname>
+ <surname>Meyer</surname>
+ <contrib>Írta: </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>A források követése több
+ géppel</title>
+
+ <indexterm>
+ <primary>NFS</primary>
+ <secondary>több gép
+ telepítése</secondary>
+ </indexterm>
+
+ <para>Ha egyszerre több
+ számítógéppel is szeretnénk
+ követni ugyanannak a forrásfának a
+ változásait és ezért mindegyikre
+ letöltjük a forrásokat majd
+ újrafordítjuk ezeket, akkor sok
+ erőforrást, de leginkább lemezterületet,
+ hálózati sávszélességet
+ és processzoridőt, feleslegesen használunk.
+ Ezekkel úgy tudunk spórolni, ha
+ valójában csak egyetlen géppel
+ végeztetjük el a munka legtöbb
+ részét, miközben a többi NFS
+ használatával dolgozik. Ez a szakasz ezt a
+ módszert foglalja össze.</para>
+
+ <sect2 id="small-lan-preliminaries">
+ <title>Előkészületek</title>
+
+ <para>Először is szedjük össze az egyező
+ binárisokat futtató gépeket, melyekre a
+ továbbiakban csak <emphasis>fordítási
+ csoport</emphasis> néven hivatkozunk. Minden
+ gépnek lehet saját rendszermagja, viszont a
+ felhasználói programok mindegyikőjük
+ esetében ugyanazok. Ebből a csoportból
+ válasszuk ki egy <emphasis>fordító
+ gépet</emphasis>. Ez lesz az a gép, amelyen a
+ rendszer és a rendszermag lefordításra
+ kerül. Ideális esetben ez a leggyorsabb gép,
+ amelynek elegendő a processzorkapacitása arra, hogy
+ lefuttassa a <command>make buildworld</command> és
+ <command>make buildkernel</command> parancsokat. Érdemes
+ még rajta kívül kiválasztanunk egy
+ <emphasis>tesztelő gépet</emphasis> is, ahol a
+ véglegesítés előtt
+ kipróbálhatjuk a
+ szoftverfrissítéseket. Ennek egy olyan
+ gépnek <emphasis>kell</emphasis> lennie, amely
+ akár hosszabb ideig is nélkülözhető
+ a csoportból. Lehet akár maga a
+ fordítást végző gép is, de nem
+ elvárás.</para>
+
+ <para>A fordítási csoportban levő összes
+ gépnek ugyanarról a gépről és
+ ugyanarra a pontra kell csatlakoztatnia a
+ <filename>/usr/obj</filename> és
+ <filename>/usr/src</filename> könyvtárakat. Ezek
+ optimális esetben a fordítással
+ foglalkozó gép két külön
+ lemezmeghajtóján vannak, melyek egyaránt
+ elérhetőek NFS-en keresztül. Ha több
+ fordítási csoportunk is van, akkor az
+ <filename>/usr/src</filename> könyvtárnak
+ elegendő csak egyetlen fordító gépen
+ meglennie, a többi pedig csatlakoztassa NFS-en
+ keresztül.</para>
+
+ <para>Végül győzödjünk meg róla,
+ hogy az <filename>/etc/make.conf</filename> és a
+ <filename>/etc/src.conf</filename> állományok
+ tartalma a fordítási csoport mindegyik
+ gépénél megegyezik a fordító
+ gépével. Ez azt jelenti, hogy a
+ fordító gépnek az alaprendszer ugyanazon
+ részeit és ugyanúgy kell létrehozni,
+ mint amelyet a fordítási csoport akármelyik
+ gépére telepíteni is akarunk.
+ Ezenkívül még a fordítási
+ csoportban levő minden egyes gép
+ <filename>/etc/make.conf</filename>
+ állományában a <makevar>KERNCONF</makevar>
+ értékének a saját
+ rendszermagjára vonatkozó
+ konfigurációt kell megadni, illetve a
+ fordítással foglakozó gép
+ <makevar>KERNCONF</makevar>
+ változójánál pedig az együtt
+ összeset, a sajátjával kezdve. Ennek
+ megfelelően a fordító gépnek a
+ rendszermagok lefordításához rendelkeznie
+ kell az egyes gépek
+ <filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>
+ könyvtárában meglevő
+ állományaival.</para>
+ </sect2>
+
+ <sect2 id="small-lan-base-system">
+ <title>Az alaprendszer</title>
+
+ <para>Most, miután mindent megfelelően
+ előkészítettünk, készen
+ állunk a munkára. A <xref
+ linkend="make-buildworld"/>ban leírtak szerint
+ fordítsuk le a rendszermagokat és az alaprendszert
+ a fordító gépen, de utána még
+ nem telepítsünk semmit se. Ha
+ befejeződött a fordítás,
+ lépjünk be a tesztelő gépre és
+ telepítsük a frissen fordított rendszermagot.
+ Ha ez a gép NFS-en keresztül éri a
+ <filename>/usr/src</filename> és
+ <filename>/usr/obj</filename> könyvtárakat, akkor az
+ egyfelhasználós módban aktiválni
+ kell a hálózatot, majd csatlakoztatni ezeket. Ezt
+ legkönnyebben úgy tudjuk megcsinálni, ha a
+ gépet először elindítjuk
+ többfelhasználós módban, majd a
+ <command>shutdown now</command> paranccsal
+ egyfelhasználós módba váltunk. Ha
+ eljuttunk ide, telepítsünk az új
+ rendszermagot és rendszert, illetve a megszokott
+ módon futtassuk a <command>mergemaster</command>
+ parancsot. Amikor ezt befejeztük, ezen a gépen
+ térjünk vissza a hétköznapi
+ többfelhasználós működési
+ módba.</para>
+
+ <para>Miután a tesztelésre szánt gépen
+ ellenőriztük, hogy minden a megfelelő
+ módon működik, az előbb tárgyalt
+ eljárással telepítsük fel a
+ fordítási csoportban levő összes
+ többi gépre is az új szoftvereket.</para>
+ </sect2>
+
+ <sect2 id="small-lan-ports">
+ <title>Portok</title>
+
+ <para>Ugyanezt a gondolatmenet alkalmazható a portfa
+ esetében is. Az első és egyben legfontosabb
+ lépés a <filename>/usr/ports</filename>
+ csatlakoztatása ugyanarról a gépről a
+ fordítási csoport minden gépére. Az
+ <filename>/etc/make.conf</filename> megfelelő
+ beállításával még a
+ terjesztési állományokat is meg tudjuk
+ osztani. A <makevar>DISTDIR</makevar>
+ értékét egy olyan közösen
+ használt könyvtárra állítsuk,
+ amely írható az NFS-en keresztül megosztott
+ állományrendszerünkben a
+ <username>root</username> felhasználóként
+ tevékenykedők számára. A
+ <makevar>WRKDIRPREFIX</makevar> változót minden
+ gépen egy helyi fordítási
+ könyvtárra állítsuk.
+ Zárásképpen még
+ hozzátesszük, hogy ha csomagokat akarunk
+ készíteni és mások
+ számára is elérhetővé tenni,
+ akkor ne felejtsük el a <makevar>PACKAGES</makevar>
+ változót a <makevar>DISTDIR</makevar>
+ változóhoz hasonlóan
+ beállítani.</para>
+ </sect2>
+ </sect1>
+</chapter>