Category Archives: FreeBSD - Page 6

FreeBSD/sparc64 こまった。


FreeBSD/sparc64使ってるマシンがあるのだが、5.2.1-RELEASEから5.3-RELEASEに上げようと思ったら
# make buildkernel でこんな風にこける。

--------------------------------------------------------------
>>> stage 3.2: building everything
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/GENERIC;  MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=sparc64  MACHINE=sparc64  CPUTYPE=  GROFF_BIN_PATH=/usr/obj/usr/src/sparc64/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/sparc64/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/sparc64/legacy/usr/share/tmac  DESTDIR=/usr/obj/usr/src/sparc64  _SHLIBDIRPREFIX=/usr/obj/usr/src/sparc64  INSTALL="sh /usr/src/tools/install.sh"  PATH=/usr/obj/usr/src/sparc64/legacy/usr/sbin:/usr/obj/usr/src/sparc64/legacy/usr/bin:/usr/obj/usr/src/sparc64/legacy/usr/games:/usr/obj/usr/src/sparc64/usr/sbin:/usr/obj/usr/src/sparc64/usr/bin:/usr/obj/usr/src/sparc64/usr/games:/sbin:/bin:/usr/sbin:/usr/bin /usr/obj/usr/src/make.sparc64/make KERNEL=kernel all -DNO_MODULES_OBJ
cc -c -x assembler-with-cpp -DLOCORE -o -pipe  -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -fformat-extensions -std=c99  -nostdinc -I-  -I. -I/usr/src/sys -I/usr/src/sys/contrib/dev/acpica -I/usr/src/sys/contrib/altq -I/usr/src/sys/contrib/ipfilter -I/usr/src/sys/contrib/pf -I/usr/src/sys/contrib/dev/ath -I/usr/src/sys/contrib/dev/ath/freebsd -I/usr/src/sys/contrib/ngatm -D_KERNEL -include opt_global.h -fno-common -finlinelimit=15000 --param inline-unit-growth=100 --param large
-function-growth=1000  -mcmodel=medlow -msoft-float -ffreestanding -Werror /usr/src/sys/sparc64/sparc64/locore.S
/usr/src/sys/sparc64/sparc64/locore.S: Assembler messages:
/usr/src/sys/sparc64/sparc64/locore.S:64: Error: undefined symbol `PCPU_PAGES' in operation
/usr/src/sys/sparc64/sparc64/locore.S:64: Error: undefined symbol `PAGE_SIZE' in operation
/usr/src/sys/sparc64/sparc64/locore.S:64: Error: can't resolve `pcpu0' {*UND* section} - `PC_SIZEOF' {*UND* section}
/usr/src/sys/sparc64/sparc64/locore.S:64: Error: can't resolve `pcpu0' {*UND* section} - `PC_SIZEOF' {*UND* section}

どうも、/usr/src/UPDATING.64BTT にある変更点などが原因と思われるが面倒なので
isoからCD焼いて入れようかなぁ。。。

FreeBSD 5.3-RELEASEに入れ替え


使ってるサーバのうちの1台が5.2.1-RELASEだったのだが、5.3-RELEASEに入れ替えることにした。
大幅な変更があるということで、5系は5.2RまではCURRENTブランチとして扱われていたのだが、5.3RからはSTABLEブランチになったということで、5.3Rが使いたいのである。
・マルチスレッド周りの強化
・BIND9に変更
などなど様々な変更が加えられているのも移行への理由である。
ということで、僕の5.2.1Rマシンでのcvsupを使っての5.3Rへの移行手順をメモ。
1. ソースの更新

*default host=cvsup2.jp.freebsd.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_5_3
*default delete use-rel-suffix
*default compress
src-all

と書いたファイル(例:hoge.cvsup)を用意して、
# cvsup hoge.dvsup
としてRELANG_5_3のソースツリーに手元のマシンのソースを更新してやる。
(SUPHOSTはStatistics for CVSup serversを参考にすると良さげ)
/etc/make.confに

CPUTYPE=    i686
CFLAGS=     -O -pipe
COPTFLAGS=  -O -pipe

と書いてやると良いかも。(CPUTYPEなどはもちろんマシンと相談してください)
2. baseのコンパイル
kernelなどをコンパイルするより前に、baseのバイナリを作ってやります。
ディスクの空き容量を確認して
# cd /usr/src
# make buildworld >& buildworld.log &
と、してコンパイルを開始。(進捗を見たければ、tail -f buildworldlog とすれば大丈夫)
3. kernelのコンパイル
GENERICカーネルを使っていれば、特に気をつかうこともありませんが、自前でkernelをチューニングしている人は、もちろんconfigしてください。
# cd /usr/src
# make buildkernel KERNCONF=GENERIC
4. kernelのインストール
3で作ったkernelをinstallする。
# make installkernel KERNCONF=GENERIC
5. /etc以下のmerge
設定ファイルの書き換え
# mergemaster -siva
# mergemaster -sivr
これは手間です。基本的には編集していないファイルは「i」で上書きしてしまう。
書き換えて使っていたものは「m」でマージモードに入って、左(旧い)と右(新しい)のどちらを残すか「l」「r」で入力。マージモードでうまくいかないことがあるので、注意すべきかと。
6. baseのインストール
kernel以外のバイナリをインストールします。
シングルユーザーモードでリブートして、
# mount /
# mount /usr
# mount /var
としてファイルシステムをマウントしたのちに、
# cd /usr/src
# make installworld
として、インストールしてやってください。
namedがbind9になって、/var/named/etc/namedbに設定ファイルが移るので、
/etc/namedbをrenameしておくべきです。
それが終われば、reboot。
これで完了です。細かいところの手直しはしましょう。
2005.1.1(追記)
参考文献:http://www.freebsd.org/releases/5.3R/migration-guide.html

apacheのログのローテート


長らくapacheのlogをFreeBSDでnewsyslogを使ってローテートしていたのだが、いまさら発見したネタをひとつ。
/etc/newsyslog.confには次のように書くらしい。

/var/log/access.log 644  12     *   $M1D0 J   /var/run/httpd.pid 30
/var/log/error.log   644  12     *   $M1D0 J   /var/run/httpd.pid 30

Apahce にログファイルが変更されたことを伝えるには SIGUSR1 というシグナルを送る必要があるそうなのだが、UNIX(POSIX) の SIGUSR1 の値が 30 番なのでその値を書くものらしい。
いやー知らんかったすわ。いままでシグナルの種類書いてなかった…

Read more »

PDFlib対応のPHPをinstall


FreeBSD/sparcにPHP-4.3.9とPDFlibをinstallする手順のmemo
すでにphp-4.3.6が入っているマシンだったので、細かい手順は省く。
libjpeg,libtiff,libpngをinstall
/usr/ports/graphics/jpegでmake install
/usr/ports/graphics/tiffでmake install
/usr/ports/graphics/pngでmake install
freetype1,2をinstall
/usr/ports/print/freetypeでmake install
/usr/ports/print/freetype2でmake install
freetypeってX依存だと思っていたがそうではないらしい…
PDFlib-Lite-6.0.0p1.tar.gzをinstall
製品版はbinaryしか提供されておらずFreeBSD/sparc用はもちろんないので、PDFlib Liteを使った。
tar xvzf PDFlib-Lite-6.0.0p1.tar.gz
configure
make
make install
tar xvzf php-4.3.9.tar.gz
cd php-4.3.9
./configure –enable-mbstring –enable-mbregex –enable-zend-multibyte –with-pgsql=/usr/local/pgsql –with-apxs=/usr/local/apache/bin/apxs –without-mysql –with-pdflib=/usr/local –with-jpeg-dir=/usr/local/lib –with-tiff-dir=/usr/local/lib –with-png-dir=/usr/local/lib –with-gd –with-zlib –with-freetype-dir=/usr/local/lib
with-pdflib=/usr/local とするのがミソっぽい。/usr/local/libとしたらincludeが発見できなかった。
make
このままだと、pdflibとphpのversionの不整合でmakeが通らない。
詳細はここで。
新しいpeclはここで発見。
cd /usr/local/src/php-4.3.9/ext
fetch http://pecl.php.net/get/pdflib-2.0.2.tgz
tar xvzf pdflib-2.0.2.tgz
mv pdf pdf.org
ln -s pdflib-2.0.2 pdf
cd ..
make clean
make
make install

POP3 over SSL問題の解決


結構悩んでいた問題だが、解決した。
詳細については、ここに追記しておきました。