Uppgradera FreeBSD

Från Unix.se, den fria unixresursen.

Den här artikeln beskriver hur du enkelt uppgraderar ditt FreeBSD-system till en nyare version, samt hur du uppdaterar ditt ports-träd.

Innehåll

Vad vill du ha?

FreeBSD har två "utvecklingsgrenar"; FreeBSD-CURRENT och FreeBSD-STABLE. CURRENT är där den mesta utvecklingen sker; där kommer de nya funktionerna allra först. Många förändringar och experimentell kod är nyckelorden - det är inget för nybörjare. CURRENT är huvudsakligen för utvecklare och testare (men om du har tid och tålamod - använd det! Fler testare behövs alltid).

FreeBSD-STABLE (med detta syftar jag på RELENG_4) är utvecklingsgrenen för de stabila 4.x-releaserna. Följ denna om du är intresserad av utvecklingen men ändå vill ha ett stabilt system (detta kan dock inte garanteras). På produktionsservrar bör du använda en stabil RELEASE och sedan hålla systemet uppdaterat genom att följa releasens 'security branch', där bara säkerhetsfixar inkluderas.

För information om FreeBSD 5.0, se slutet av artikeln.

Viktigt: Du behöver ungefär 350MB ledigt för /usr/src och drygt 400MB ledigt för /usr/obj.

Installera CVSup

För att ladda hem all källkod kan du använda ett par olika metoder; i denna artikel beskriver jag hur du gör detta med CVSup. Cvsup är ett program som kommunicerar med angiven cvsupd-server och laddar ner/uppdaterar det som behövs för att hålla ditt källkodsträd helt uppdaterat.

Du kan ladda hem ett förkompilerat paket och installera (ta bort -without-gui om du vill ha grafiskt interface):

# fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/net/cvsup-without-gui-16.1f.tgz
# pkg_add cvsup-without-gui-16.1f.tgz

Eller helt enkelt följande, vilket automatiskt laddar ner och installerar paketet:

# pkg_add -r cvsup-without-gui

Vill du kompilera källkoden och installera kan du göra det med ports:

# cd /usr/ports/net/cvsup-without-gui
# make install clean

När CVSup väl är installerat är det dags att skapa en konfigurationsfil som den kan läsa. Skapa en fil, t.ex. /etc/src-supfile, och lägg följande i denna:

*default host=cvsup.se.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs
*default tag=RELENG_4
*default delete use-rel-suffix

# use compression if your speed is less then T1
#*default compress
src-all

# Avkommentera följande rad om du också vill uppdatera ports
#ports-all tag=.

Lägg märke till raden *default tag=RELENG_4. RELENG_4 är FreeBSD-STABLE; vill du bara ha alla säkerhetsfixarna för din release ska du byta ut RELENG_4 mot t.ex. RELENG_4_5, om du nu kör 4.5. För mer om de olika inställningarna, se /usr/share/examples/cvsup/standard-supfile.

Kör CVSup

Nu är det bara att köra CVSup.

# cvsup -g -L 2 /etc/src-supfile

Detta kommer att ta ett tag. Parametern -g betyder no graphics och -L 2 betyder loglevel 2. Ta bort dessa om du är i X och vill köra cvsup grafiskt (som root, förstås).

Bygg världen och kärnan

Nu är det dags att bygga hela FreeBSD:s userland, dvs alla program och bibliotek som finns med i bassystemet. Läs också /usr/src/UPDATING.

# cd /usr/src
# make buildworld

Det här kan ta flera timmar beroende på systemets hårdvara. När buildworld väl är klart är det dags att bygga kärnan (kerneln) och dess moduler.

# cd /usr/src
# make buildkernel

Har du en speciell kärna lägger du till KERNCONF=NAMN:

# cd /usr/src
# make buildkernel KERNCONF=DIN_KERNEL

Installera

När allt ovan är klart ska du installera allting. FreeBSD Handbook rekommenderar att detta görs i single user mode. Jag har dock aldrig haft några problem med att göra detta i multiuser, men det är upp till dig själv. Notera att du måste ha fysisk tillgång till maskinen om du vill göra det i single-user, eftersom alla nätverksanslutningar dödas. Har du inte detta kan du gå direkt till make installworld.

# shutdown now
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

Vad du än valde är det dags att installera allt. Glöm inte att lägga till KERNCONF=DIN_KERNEL till raden make installkernel om du inte använder GENERIC.

# cd /usr/src
# make installworld
# make installkernel

Tips från Johan Björk, om din /tmp är mountad noexec: "För att undvika problemen vid make installworld kan man lägga till detta efter installworld: TMPDIR=/var/tmp (eller valfri katalog). Kanske även på ett mfs, så kan man fortfarande köra noexec på /tmp."

Synkronisera /etc

Installworld uppdaterar inte konfigurationsfiler i t.ex. /etc; det måste du göra med mergemaster. För att vara på den säkra sidan bör du göra en backup av /etc:

# cp -Rp /etc /etc.old

Kör sedan mergemaster:

# mergemaster

Mergemaster är ett shellskript som kommer att gå igenom alla ändrade filer i /etc och fråga dig vad som ska göras. I regel går det bra att svara "i" (install) på de filer du aldrig rört tidigare, och merge:a de som du har ändrat.

Klart! Nu kan du reboota ditt system. Det går bra att ta bort /usr/obj när du är klar.

Hela processen kan förstås enkelt automatiseras;

cvsup -g -L 2 /etc/src-supfile && cd /usr/src && make buildworld \
&& make buildkernel && make installworld && make installkernel \
&& mergemaster && reboot

Uppdatera ports-trädet

För enkelhetens skull kan du skapa en egen fil för ports-uppdateringen, lämpligtvis /etc/ports-supfile:

*default host=cvsup.se.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs
*default tag=RELENG_4
*default delete use-rel-suffix

# use compression if your speed is less then T1
#*default compress
ports-all tag=.

Det här laddar ner/uppdaterar hela ports-trädet. Vill du bara uppdatera vissa delar, t.ex. ports-audio och ports-net, är det bara att skriva dessa på varsin rad och kommentera ports-all. Se denna fil för mer information.

Från och med FreeBSD 6.0 medföljer portsnap. Ett enklare alternativ till att uppdatera portsträdet med cvsup. För att initialt installera portsträdet.

portsnap fetch extract

Och för att uppdatera portsträdet kör man.

portsnap fetch update

FreeBSD 5.0

För att få hem all FreeBSD 5.0-källkod är det bara att följa anvisningarna ovan, men ändra RELENG_4 till RELENG_5_0. Läs sedan /usr/src/UPDATING, som bl.a. innehåller "To upgrade from 4.x-stable to current" som beskriver hur du uppgraderar från 4.x, steg för steg. Läs också Early Adopter's Guide to FreeBSD 5.0-RELEASE (http://www.freebsd.org/releases/5.0R/early-adopter.html).

Referenser och mer läsning

Personliga verktyg