サーバいじくり雑記

2009年11月25日

pkg_replaceを使う

Filed under: FreeBSD — bompopo @ 12:00 AM

今までずっと-rや-Rのあるportupgradeを使ってきたのだが先のUSE_GCCの件やいい加減重いのでこれを期に乗り換えることにする。

# cd /usr/ports/ports-mgmt/pkg_replace
# make install
# make clean

設定はportupgradeライクに行うことができるがportmaster併用のことも考えてMAKE_ARGSは使わないことにする。
/usr/local/etc/pkg_replace.confはこんな感じにしてみた。

PKG_REPLACE="-vc -l /root/pkg_replace.log -L /var/log/pkg/"
BEFOREDEINSTALL= {
  'lang/gcc44*' => '/bin/mv /etc/libmap.conf /etc/libmap.conf.bak',
  'mail/postfix*' => '/usr/local/etc/rc.d/postfix stop',
  'japanese/samba3' => '/usr/local/etc/rc.d/samba stop',
  'www/apache22' => '/usr/local/etc/rc.d/apache22 stop',
  'security/openssh-portable' => '/usr/local/etc/rc.d/openssh stop',
}
AFTERINSTALL= {
  'lang/gcc44*' => '/bin/mv /etc/libmap.conf.bak /etc/libmap.conf',
  'mail/postfix*' => '/usr/local/etc/rc.d/postfix start',
  'japanese/samba3' => '/usr/local/etc/rc.d/samba start',
  'www/apache22' => '/usr/local/etc/rc.d/apache22 start',
  'security/openssh-portable' => '/usr/local/etc/rc.d/openssh start',
}

portupgradeとの違いは-arRとかやると依存portsのmakeに失敗しているのにmake入ってしまう点でしょうか。前述のようにgcc44にするとか環境かえて-arRして失敗を洗い出したい場合はportupgradeの方がいいかもしれませんね。
ちなみにgcc44のときにlibmap.confを退避させているのはdeinstallしたときにgcc44のライブラリを見失ってしまうからです。

base以外のGCCを使いたい

Filed under: FreeBSD — bompopo @ 12:00 AM

gcc44を使ってPhenomII用に最適化makeしなおしたいと思いがんばったメモです。
LLVMの話を見てからやる気が無くなってしまったので途中ですが埋もれたままにしておくのも嫌だなと思い雑記します。
せっかくのPhenomIIです。gcc4.4以上で最適化コンパイルして恩恵にあやかりたいものです。最適化コンパイルによって20%ほどの性能向上が期待できるそうです。
参考:Using newer version of GCC and binutils with the FreeBSD Ports Collection
参考にしてmake.conf.portsに以下のようにします。

.if !${_PORTSDIR:M/sysutils/screen*}
CPUTYPE = amdfam10
MACHINE_CPU = amdfam10
USE_GCC=4.4
QMAKESPEC=/usr/local/share/qt4/mkspecs/freebsd-g++40
.endif

ただし、USE_GCC環境変数を使う場合は portupgrade や portmaster だとgcc44->libtool->libiconv->gcc44->といった風に-rがループしてしまいうまくいきません。それで以前から気になってはいた pkg_replace を試してみたのですがいいですね。いまさらですが pkg_replace の軽さにびっくりです。今後は pkg_replace を使っていこうと思います。
portupgrade や portmaster を使いたい場合はUSE_GCCの代わりに以下を設定します。

CC=gcc44
GCC=gcc44
CXX=g++44
CPP=cpp44

まずはgcc44のコンパイルします。

# cd /usr/ports/lang/gcc44
# make install
# make clean

成功したのならライブラリをgcc44の方を見に行くように/etc/libmap.confに以下を設定します。

libgcc_s.so.1   gcc44/libgcc_s.so.1
libgomp.so.1    gcc44/libgomp.so.1
libobjc.so.3    gcc44/libobjc.so.2
libssp.so.0     gcc44/libssp.so.0
libstdc++.so.6  gcc44/libstdc++.so.6

qt系のビルドで躓いてしまいました。
textproc/openjadeはiostream.h見つからないってエラーを出します。textproc/openjade/work/openjade-1.3.3-pre1/style/MultiLineInlineNote.cxxを以下のように修正します。私が現役VC++プログラマのときはどっちでもよかった気がするんですがね。

#include <cstring>


付け足してmakeします。
net-im/decibelは以下のファイルを修正します。/usr/ports/net-im/decibel/work/decibel-0.5.0/demos/accounthandling/registeraccount.cpp

-        QStringList keyValue(QString(argv[i]).split("="));
+        QStringList keyValue = QString(argv[i]).split("=");

と、ここまで書きかけですが、gcc44はあきらめます。おつかれさまです。

ついに登場! FreeBSD 8.0の新機能をさっそくチェックしてみました

Filed under: FreeBSD — bompopo @ 12:00 AM

ついに登場! FreeBSD 8.0の新機能をさっそくチェックしてみました
いいですね。Vimage jail。そのうち試してみましょう。それより気になるのはコンパイラがgccからLLVM+clangへってところ。前々から脱GPLの話はあり、LLVM+clangの話もありましたが、忘れていました。先日雑記したのだがここ数日はgcc44でPhenomII用にportsをmakeしなおすために四苦八苦しているのです。これは無用の技術になるのか…。

DNSSECの導入・普及へ、「DNSSECジャパン」設立

Filed under: その他 — bompopo @ 12:00 AM

DNSSECの導入・普及へ、「DNSSECジャパン」設立
ちょうどこの前「セキュアなDNS作るってbindの中の人言ってなかったけ?あれどうなったん?」と豆腐と話をしたところです。

HDDがカリカリ言い始めた

Filed under: ソフト, Windows — bompopo @ 12:00 AM

AVGでよく言われているカリカリとはこのことか!確かにうざいが、何がトリガになって発生しているのかわからん。なんなんだ。