MFen 1.239 -> 1.240

This commit is contained in:
Rene Ladan 2009-02-01 19:15:56 +00:00
parent 2b79d18def
commit b969344c39
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=33798

View file

@ -5,7 +5,7 @@
$FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.47 2006/01/07 11:27:42 siebrand Exp $
%SOURCE% en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
%SRCID% 1.239
%SRCID% 1.240
-->
<chapter id="updating-upgrading">
@ -1722,10 +1722,217 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
<sect2 id="canonical-build">
<title>De universele wijze om een systeem bij te werken</title>
<para>Een systeem bijwerken kan met de volgende procedure, nadat
<filename>/usr/src/UPDATING</filename> is geraadpleegd om te
controleren of er voor buildworld voor de gebruikte versie van
de broncode nog acties zijn uit te voeren:</para>
<para>Om uw systeem bij te werken, dient u
<filename>/usr/src/UPDATING</filename> te controleren op
eventuele pre-buildworld stappen die nodig zijn voor uw versie
van de broncode en daarna de procedure te gebruiken die hier
beschreven staat.</para>
<para>Deze bijwerkstappen nemen aan dat u nu een oude versie van
&os; gebruikt, die uit een oude compiler, een oude kernel, een
oude wereld en oude instellingenbestanden bestaat. Onder
<quote>wereld</quote> worden de binairen, bibliotheken, en
programmeerbestanden van het kernsysteem verstaan. De compiler
is deel van <quote>wereld</quote>, maar heeft enkele speciale
aandachtspunten.<para>
<para>We nemen ook aan dat u reeds de broncode van een nieuwer
systeem heeft verkregen. Bekijk, als de bronnen op een bepaald
systeem ook oud zijn, <xref linkend="synching"> voor uitgebreide
hulp over het synchroniseren ervan naar een nieuwere
versie.</para>
<para>Het bijwerken van het systeem vanaf de broncode is wat
subtieler dan het op het eerste gezicht lijkt, en de
ontwikkelaars van &os; vonden het in de loop der jaren nodig om
de aangeraden methode redelijk drastisch te veranderen met het
aan het licht komen van nieuwe soorten onontwijkbare
afhankelijkheden. De rest van deze sectie beschrijft de
rationale achter de huidige aanbevolen bijwerkmethode.</para>
<para>Elke succesvolle bijwerkmethode krijgt te maken met de
volgende punten:</para>
<itemizedlist>
<listitem>
<para>Het kan voorkomen dat de oude compiler de nieuwe kernel
niet kan compileren. (Oude compilers bevatten soms bugs.)
De nieuwe kernel dient dus met de nieuwe compiler gebouwd te
worden. In het bijzonder moet de nieuwe compiler gebouwd
worden voordat de nieuwe kernel gebouwd wordt. Dit betekent
niet per se dat de nieuwe compiler
<emphasis>ge&iuml;nstalleerd</emphasis> moet worden voordat
de nieuwe kernel gebouwd wordt.</para>
</listitem>
<listitem>
<para>De nieuwe wereld kan afhankelijk zijn van mogelijkheden
van de nieuwe kernel. Dus moet de nieuwe kernel worden
ge&iuml;nstalleerd voordat de nieuwe wereld wordt
ge&iuml;nstalleerd.</para>
</listitem>
</itemizedlist>
<para>De eerste twee gevallen zijn de basis voor de methode
<maketarget>buildworld</maketarget>,
<maketarget>buildkernel</maketarget>,
<maketarget>installkernel</maketarget>,
<maketarget>installworld</maketarget> die we in de volgende
paragrafen beschrijven. Dit is geen uitputtende lijst van alle
redenen waarom het huidige aanbevolen bijwerkproces de voorkeur
verdient. Wat minder voor de hand liggende redenen worden
hieronder genoemd:</para>
<itemizedlist>
<listitem>
<para>Het kan zijn dat de oude wereld niet correct draait op
de nieuwe kernel, dus moet de nieuwe wereld onmiddellijk na
het installeren van de nieuwe kernel ge&iuml;nstalleerd
worden.</para>
</listitem>
<listitem>
<para>Sommige instellingen moeten veranderd worden voordat de
nieuwe wereld wordt ge&iuml;nstalleerd, maar anderen kunnen
de oude wereld kapot maken. Vandaar dat over het algemeen
twee verschillende bijwerkstappen voor de instellingen nodig
zijn.</para>
</listitem>
<listitem>
<para>Voor het grootste gedeelte houdt het bijwerkproces zich
alleen bezig met het vervangen of toevoegen van bestanden;
bestaande oude bestanden worden niet verwijderd. Dit kan in
sommige gevallen problemen geven. Als een gevolg zal de
bijwerkprocedure soms aangeven dat bepaalde bestanden
tijdens bepaalde stappen handmatig verwijderd dienen te
worden. Dit kan in de toekomst eventueel geautomatiseerd
worden.</para>
</listitem>
</itemizedlist>
<para>Deze zorgen hebben tot het volgende aanbevolen bijwerkproces
geleid. Merk op dat het gedetailleerde proces voor bepaalde
updates aanvullende stappen nodig kan hebben, maar dit
kernproces zou de komende tijd ongewijzigd moeten
blijven:</para>
<orderedlist>
<listitem>
<para><command>make <maketarget>buildworld</maketarget></command></para>
<para>Dit compileert eerst de nieuwe compiler en enkele
aanverwante gereedschappen, daarna wordt de nieuwe compiler
gebruikt om de rest van de nieuwe wereld te compileren. Het
resultaat komt in <filename
class="directory">/usr/obj</filename> te staan.</para>
</listitem>
<listitem>
<para><command>make <maketarget>buildkernel</maketarget></command></para>
<para>In tegenstelling tot de oude aanpak, die &man.config.8;
en &man.make.1; gebruikt, gebruikt dit de
<emphasis>nieuwe</emphasis> compiler die in <filename
class="directory">/usr/obj</filename> verblijft. Dit
beschermt u tegen mismatches tussen de compiler en de
kernel.</para>
</listitem>
<listitem>
<para><command>make <maketarget>installkernel</maketarget></command></para>
<para>Plaatst de nieuwe kernel en kernelmodules op de schijf,
waardoor het mogelijk wordt om met de nieuw bijgewerkte
kernel op te starten.</para>
</listitem>
<listitem>
<para>Start opnieuw op in enkele-gebruikersmodus.</para>
<para>De enkele-gebruikersmodus minimaliseert problemen met
het bijwerken van software die al draait. Het minimaliseert
ook problemen die opduiken door een oude wereld op een
nieuwe kernel te draaien.</para>
</listitem>
<listitem>
<para><command>mergemaster <option>-p</option></command></para>
<para>Dit voert wat initi&euml;le updates aan
instellingenbestanden uit ter voorbereiding op de nieuwe
wereld. Het kan bijvoorbeeld nieuwe gebruikersgroepen aan
het systeem, of nieuwe gebruikersnamen aan de
wachtwoorddatabase toevoegen. Dit is vaak nodig wanneer er
nieuwe groepen of speciale accounts voor systeemgebruikers
zijn toegevoegd sinds de laatste keer bijwerken, zodat de
stap <maketarget>installworld</maketarget> zonder problemen
de nieuw ge&iuml;nstalleerde namen van systeemgebruikers of
systeemgroepen kan gebruiken.</para>
</listitem>
<listitem>
<para><command>make <maketarget>installworld</maketarget></command></para>
<para>Kopieert de wereld van <filename
class="directory">/usr/obj</filename>. U heeft nu een
nieuwe kernel en een nieuwe wereld op schijf staan.</para>
</listitem>
<listitem>
<para><command>mergemaster</command></para>
<para>Nu kunt u de overgebleven instellingenbestanden
bijwerken, aangezien u een nieuwe wereld op schijf heeft
staan.</para>
</listitem>
<listitem>
<para>Start opnieuw op.</para>
<para>Een volledige nieuwe start van de machine is nodig om de
nieuwe kernel en de nieuwe wereld met nieuwe
instellingenbestanden te laden.</para>
</listitem>
</orderedlist>
<para>Merk op dat als u van de ene uitgave van dezelfde tak van
&os; bijwerkt naar een recentere uitgave van dezelfde tak, i.e.
van 7.0 naar 7.1, dat deze procedure dan niet absoluut nodig is,
aangezien het onwaarschijnlijk is dat u serieuze problemen
krijgt met de compiler, kernel, gebruikersland en
instellingenbestanden. De oudere aanpak met <command>make
<maketarget>world</maketarget></command> gevolgd door het
bouwen en installeren van een nieuwe kernel kan voor kleine
updates goed genoeg zijn.</para>
<para>Maar mensen die deze procedure niet volgen tijdens het
bijwerken tussen grote uitgaven kunnen wat problemen
verwachten.</para>
<para>Het is ook goed om op te merken dat veel upgrades (i.e.
4.<replaceable>X</replaceable> naar 5.0) wat specifieke
aanvullende stappen nodig hebben (bijvoorbeeld het hernoemen of
verwijderen van specifieke bestanden voorafgaand aan
installworld). Lees het bestand
<filename>/usr/src/UPDATING</filename> zorgvuldig, met name het
einde, waar het huidig aangeraden bijwerkproces expliciet wordt
beschreven.</para>
<para>Deze procedure is in de loop der tijd veranderd aangezien de
ontwikkelaars zagen dat het onmogelijk was om bepaalde
mismatch-problemen volledig te voorkomen. Hopelijk blijft de
huidige procedure voor een lange tijd stabiel.</para>
<note>
<para>Het bijwerken van &os; 3.<replaceable>X</replaceable> of
eerdere uitgaven is wat lastiger; lees
<filename>UPDATING</filename> zorgvuldig door als u zo'n soort
upgrade moet uitvoeren.</para>
</note>
<para>Samengevat is de huidige aanbevolen manier om &os; vanaf
broncode bij te werken:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput>