CentOSでsendmailのエラー

SELinuxがアップデートされたせいか、CGIからsendmailを呼んでメールを出していた部分がエラーになっていた…。

sendmail: warning: premature end-of-input on /usr/sbin/postdrop -r while reading input attribute name,
referer: http://...
sendmail: fatal: apache(48): unable to execute /usr/sbin/postdrop -r: Success,
referer: http://...

以下の方法で対処した。

適当なディレクトリを作って、以下のmypostfix.teファイルを作る。

policy_module(mypostfix, 1.0)
gen_require(`
type sendmail_t;
type postfix_postdrop_t;
')
allow postfix_postdrop_t sendmail_t:unix_stream_socket { getattr read write ioctl };

そんで以下を実行。

# make -f /usr/share/selinux/devel/Makefile
# semodule -i mypostfix.pp

こういうアップデートを自動でされると痛いな…。

RHEL5でOpenJDK6をビルドしてみる

OpenJDK6をビルドしてみた。情報が少ないので、結構、面倒な感じ。とりあえず、必要そうなものを入れておく。

# yum install java-1.6.0-openjdk
# yum install gcc gcc-c++
# yum install alsa*
# yum install cups-devel
# yum install openmotif openmotif-devel
# yum install libX11-devel libXt-devel libXext-devel libXp-devel libXtst-devel libXi-devel
# yum install python-setuptools

ソースコードをチェックアウトするのにMercurialが必要なのでインストールする。

# easy_install -U mercurial

そんでもって、さらにForest拡張なるものがないと、一通りのソースコードを持ってこれないので、これを設定する必要がある。ここからは普通のユーザーで良い。

$ hg clone http://hg.akoha.org/hgforest
$ mkdir ~/py
$ cp hgforest/forest.py ~/py/

Mercurialマスターではないので、正しい持ってき方がわからんが、forest.pyを取得して、適当なところに置いておく。そんで、.hgrc を編集。

$ vi ~/.hgrc
[extensions]
forest=/home/taro/py/forest.py

ここまできたら、ようやくソースの取得が行える。適当なディレクトリで作業する。

$ cd
$ mkdir openjdk
$ cd openjdk
$ hg fclone http://hg.openjdk.java.net/jdk6/jdk6

これで、jdk6 に一式持ってこれる。ここからさらに環境整備。Plugs なるものが必要なので、これをダウンロードしてインストールする。

$ wget http://download.java.net/openjdk/jdk6/promoted/b17/jdk-6-ea-plug-b16-linux-i586-25_nov_2008.jar
$ java -jar jdk-6-ea-plug-b16-linux-i586-25_nov_2008.jar

今回は、/home/taro/openjdk/openjdk-binary-plugsに置く。そんで、環境変数を設定する。あらかじめ、JDK1.6.0_16を/usr/java/jdk1.6.0_16にインストールしておいた。

$ unset JAVA_HOME
$ export LANG=C ALT_BOOTDIR=/usr/java/jdk1.6.0_16
$ export ALT_BINARY_PLUGS_PATH=/home/taro/openjdk/openjdk-binary-plugs
$ export ALT_MOTIF_DIR=/usr

Antも必要なのでインストール。

$ wget http://ftp.riken.jp/net/apache/ant/binaries/apache-ant-1.7.1-bin.tar.gz
$ tar zxvf apache-ant-1.7.1-bin.tar.gz
$ export ANT_HOME=/home/taro/openjdk/apache-ant-1.7.1
$ export PATH=$ANT_HOME/bin:$PATH

Freetype 2.2 も必要なので入れる。RHEL5だと、2.1みたい。/home/taro/openjdk/usrにインストール。

$ mkdir usr
$ wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.11.tar.gz
$ tar zxvf freetype-2.3.11.tar.gz
$ cd freetype-2.3.11
$ ./configure --prefix=/home/taro/openjdk/usr
$ make
$ make install
$ cd ..
$ export ALT_FREETYPE_LIB_PATH=/home/taro/openjdk/usr/lib
$ export ALT_FREETYPE_HEADERS_PATH=/home/taro/openjdk/usr/include

これでようやく、openjdkのビルドにたどりつく。

$ cd jdk6
$ make sanity
$ make

これで出来上がり。以下で動作確認。

$ export JAVA_HOME=/home/r2fw/shinsuke/Projects/openjdk/jdk6/build/linux-amd64/j2sdk-image/
$ ./build/linux-amd64/j2sdk-image/bin/java -version
openjdk version "1.6.0-internal"
OpenJDK Runtime Environment (build 1.6.0-internal-taro_25_nov_2009_11_22-b00)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

うーん、環境作るの面倒だよ。結構、模索した。これじゃ、なかなか開発者も増えんのではなかろうか…。