Migrate to FreeBSD 9.1-RELEASE (PostgreSQL) に続いて JDK 1.6 を移行する機会がありました。
現在用いている /usr/ports/ は、環境移行を優先して 4 年前の ports.tar.gz のため、最新のスケルトンでは不要の可能性もあります。
何も準備せずに cd /usr/ports/java/jdk16/ ; make install を実行すると
Unable to load ZIP library: /usr/local/diablo-jdk1.6.0/jre/lib/amd64/libzip.so *** An XSLT processor (J2SE 1.4.x or newer) is required to bootstrap this build
とエラーが出て進みません。
8.0-RELEASE では /etc/libmap.conf に 以下の記述を追加することで /usr/ports/java/jdk16/ からインストールが可能との記事を見掛けました。
libz.so.4 libz.so.5
9.2-RELEASE では
# ls -l /usr/lib/libz.* -r--r--r-- 1 root wheel 117988 Dec 4 2012 /usr/lib/libz.a lrwxr-xr-x 1 root wheel 14 Dec 4 2012 /usr/lib/libz.so -> /lib/libz.so.6
libz.so.6 のため、以下の様に記述して、
libz.so.4 libz.so.6
進むことを確認しました。
ところがもう 1 つ問題が生じました。/usr/include/signal.h が変更されているため、コンパイルが通りません。今回は 7.1-RELEASE からコピーして通すことでインストールを完了させました。以下は新旧での diff です。
57,65d60 < #if __POSIX_VISIBLE || __XSI_VISIBLE < struct pthread; /* XXX */ < typedef struct pthread *__pthread_t; < #if !defined(_PTHREAD_T_DECLARED) && __POSIX_VISIBLE >= 200809 < typedef __pthread_t pthread_t; < #define _PTHREAD_T_DECLARED < #endif < #endif /* __POSIX_VISIBLE || __XSI_VISIBLE */ < 71,73d65 < int pthread_kill(__pthread_t, int); < int pthread_sigmask(int, const __sigset_t * __restrict, < __sigset_t * __restrict); 99,100d90 < int sighold(int); < int sigignore(int); 102,104d91 < int sigrelse(int); < void (*sigset(int, void (*)(int)))(int); < int xsi_sigpause(int); 107c94 < #if __XSI_VISIBLE >= 600 --- > #if __POSIX_VISIBLE >= 200112 111,114d97 < #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE < void psignal(unsigned int, const char *); < #endif < 121a105 > void psignal(unsigned int, const char *);
- Migrate 32bit to 64bit (FreeBSD, PostgreSQL)
- Migrate 32bit to 64bit (FreeBSD, GDBM)
- Migrate 32bit to 64bit (FreeBSD, ionCube PHP Loader)
- Migrate to FreeBSD 9.1-RELEASE (ImageMagick 6.4)
- Migrate to FreeBSD 9.1-RELEASE (PostgreSQL)
- Migrate to FreeBSD 9.1-RELEASE (JDK 1.6)
- Migrate to FreeBSD 9.1-RELEASE (idnconv)
- Migrate to FreeBSD 9.1-RELEASE (PDFJ)