Upgrade z FreeBSD 6.x na FreeBSD 7.0

strict warning: Only variables should be passed by reference in /app/www/honza/www/drupal-new/modules/book/book.module on line 559.
Konečně je to tu. FreeBSD 7.0, kterou jsem čekal už jako dárek pod stromeček. Je tu pár změn. Jak je vidět v článcích na rootu - http://www.root.cz/clanky/freebsd-7-0-je-venku-i-s-mnoha-novinkami/ - (nebo ještě lépe a podrobněji na http://www.freebsd.org/releases/7.0R/relnotes.html ) došlo k různým úpravám. Čeho si podstatně cením je dopracovaný správce zařízení (už pouze devd, žádný usbd a podobně), zvýšená výkonnost. Většinu postupů pro verzi 6.x lze použít i pro novější verzi.
Upgrade na verzi 7.x lze uděla jednoduše, tedy pokud jsou k dispozici zdroje a cvsup. Pro jistotu ovšem doporučuji zazálohovat konfiguraci a data. Upgrade mi proběhl na několika strojích dobře, ale stát se může všelico.
1) Update zdrojů je popsáno v http://www.dusatko.org/index.php?q=node/67

2) Rekompilace systému
make buildworld
make buildkernel
make installworld
make installkernel
mergemaster -iU


3) Při mergi systému bude chtít mergemaster smáznout pár souborů v /etc/rc.d - to je v pořádku. Jedná se o soubory:
ike
nfslocking
pccard
pcvt
ramdisk
ramdisk-own
usbd


Dále bude chtít tato rutina možná pozměnit soubory pam.d, groups a pár dalších, zde záleží na zvážení co přesně potřebujete a jakou máte konfiguraci.

4) Po instalaci je potreba vytvořit databázi jednotlivých tříd přihlášení:
/usr/bin/cap_mkdb /etc/login.conf

a nyní už jenom restart stroje. Většina postupů pro FreeBSD 6.x platí v nezměněné podobě i pro verzi 7, ale například vešeré informace z usbd.conf jsou přesunuty do souboru devd.conf a podobné drobnosti.

Problémy:
Po upgrade na verzi 7 může dojít k problémům s ruby. Ve většině případů se objeví něco jako:
Fatal error 'Cannot allocate red zone for initial thread'
V takovém okamžiku pomůže najít všechny porty s ruby:
pkg_info | grep ruby
odstranit je pomocí pkg_delete a pomocí make install je znovu nainstalovat z adresářů jejich portů. V mém případě se jednalo o sekvence:
cd /usr/ports/lang/ruby18
make install clean

cd /usr/ports/databases/ruby-bdb
make install clean

cd /usr/ports/textproc/ruby-deplate
make install clean
Kde konkrétně se daný port nachází lze zjistit pomocí příkazu whereis

Powered by Drupal - Design by artinet