構築ネタ(FreeBSD) W2chサーバ化 (1)

Pocket

W2ch は docomo の FOMA専用の iアプリ版 2chブラウザ。iアプリの仕様は詳しく知らないが、W2chはアプリをダウンロードしたサーバ(中間サーバ=通称「中間鯖」)としか通信ができないらしい。携帯電話は中間鯖をリバースプロキシとして2ちゃんねるとの通信を行う。有志が公開の中間鯖を運用しているが、アクセス増に伴う負荷分散が課題のようだ。そこで自宅サーバを自分専用の中間鯖化しようというのがテーマ。

参考: docomo FOMA専用2ちゃんねるブラウザ W2Chまとめwiki

W2ch は java で書かれているので、基本的には Apache + Tomcat の環境を用意すればよい。これが意外に厄介だった。

■Java(jdk)のインストール
Tomcat の前段として、jdk をインストールする。基本的には ports を利用するが、jdk と依存関係のある以下のツールがライセンスの関係で自動ダウンロードできないもため、事前に手動で取得しておく必要がある。

  • jdk-6u3-fcs
  • bsd-jdk-patches-4
  • diable-caffe-freebsd7
  • tzupdater

○jdk-6u3-fcs
wgetで取得可能。

# cd /usr/ports/distfiles
# wget http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
# wget http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
# wget http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar

○bsd-jdk-patches-4
http://www.eyesbeyond.com/freebsddom/java/JDK16JRLConfirm.html
[Accept] をクリックしてローカルにダウンロード。

○diable-caffe-freebsd7
以下のURLにブラウザでアクセス。
http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2
I agree to the terms of this license agreement. のチェックボックスをオンにし、[submit] をクリックしてローカルにダウンロード。

○tzupdater
http://www.oracle.com/technetwork/java/javase/downloads/index.html
の中の JDK DST Timezone Update Tool – 1.3.39 をローカルにダウンロード。

ダウンロードした bsd-jdk16-patches-4.tar.bz2
diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2
tzupdater-1_3_39-2011g.zip を /usr/ports/distfiles に配置。

以上の準備が終わったら、jdk を ports からインストール。

# portinstall jdk
Install 'java/jdk13'? [yes] no
Install 'java/jdk14'? [yes] no
Install 'java/jdk15'? [yes] no
Install 'java/jdk16'? [yes] yes

JAVA RESEARCH LICENSE
Version 1.6
(略)
Do you agree to the above license terms? [yes or no]
yes

運がよければ、これでサクッと jdk が入るはず。以下は運が悪かった記録。参考までに。

■tzupdaterのバージョンが合わない
tzupdater は上記オラクルのサイトで配布されているが、サイトから入手できる最新バージョンと ports の jdk が要求するバージョンが合わない(portsの方が古い)場合がある。この場合は気長に待っていればそのうち ports が修正される(と信じたい)が、待てなければ ports 側の記述を自分で書き換える必要がある。以下は、サイト上のバージョンが 1.3.39、ports 側の要求バージョンが 1.3.38 だったケース。

まず、入手した tzupdater のSHA256ハッシュ値とファイルサイズを確認しておく。

# sha256 tzupdater-1_3_39-2011g.zip
SHA256 (tzupdater-1_3_39-2011g.zip) = 0db7131275df13827d2ca3a20c35e916cbc5a058215d3b09442d5d1bba0768f6

# ls -l | grep tzupdate
-rw-r--r--  1 root   wheel    258027 Jun 22 16:07 tzupdater-1_3_39-2011g.zip

次に、jdk16 と diable-jdk16 の Makefile と distinfo を書き換え、インストール実行。

# vi /usr/ports/java/jdk16/Makefile
[/usr/ports/java/jdk16/Makefile]
65,66c65,66
< TZUPDATE_VERSION=     1_3_38
< TZUPDATE_TZVERSION=   2011e
---
> TZUPDATE_VERSION=     1_3_39
> TZUPDATE_TZVERSION=   2011g

# vi /usr/ports/java/diablo-jdk16/Makefile
[/usr/ports/java/diablo-jdk16/Makefile]
80,81c80,81
< TZUPDATE_VERSION=     1_3_38
< TZUPDATE_TZVERSION=   2011e
---
> TZUPDATE_VERSION=     1_3_39
> TZUPDATE_TZVERSION=   2011g

# vi /usr/ports/java/jdk16/distinfo
[/usr/ports/java/jdk16/distinfo]
11,12c11,12
< SHA256 (tzupdater-1_3_38-2011e.zip) = cfe7683d5721ab322a8e847f741a24f0bf35f5654a8ff86c3e234220f9b770b1
< SIZE (tzupdater-1_3_38-2011e.zip) = 258948
---
> SHA256 (tzupdater-1_3_39-2011g.zip) = 0db7131275df13827d2ca3a20c35e916cbc5a058215d3b09442d5d1bba0768f6
> SIZE (tzupdater-1_3_39-2011g.zip) = 258027

# vi /usr/ports/java/diablo-jdk16/distinfo
[/usr/ports/java/diablo-jdk16/distinfo]
11,12c11,12
< SHA256 (tzupdater-1_3_38-2011e.zip) = cfe7683d5721ab322a8e847f741a24f0bf35f5654a8ff86c3e234220f9b770b1
< SIZE (tzupdater-1_3_38-2011e.zip) = 258948
---
> SHA256 (tzupdater-1_3_39-2011g.zip) = 0db7131275df13827d2ca3a20c35e916cbc5a058215d3b09442d5d1bba0768f6
> SIZE (tzupdater-1_3_39-2011g.zip) = 258027

# portinstall jdk

■cups-client が build 不能

インストール失敗記録

# portinstall jdk
--->  Found 3 ports matching 'jdk':
        java/jdk13
        java/jdk15
        java/jdk16
Install 'java/jdk13'? [yes] no
Install 'java/jdk15'? [yes] no
Install 'java/jdk16'? [yes] yes

--->  Skipping 'java/jdk16' because a requisite port 'print/cups-client' failed (specify -k to force)
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! print/cups-client     (unknown build error)
        * java/jdk16

とりあえず cups-client を単独でインストールしてみる。

# portinstall cups-client

===>  Installing for gnutls-2.12.7_2
===>   gnutls-2.12.7_2 depends on executable: pkg-config - found
===>   Generating temporary packing list
===>  Checking if security/gnutls already installed
===>   gnutls-2.12.7_2 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of security/gnutls
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop in /usr/ports/security/gnutls.
*** Error code 1

Stop in /usr/ports/print/cups-client.
*** Error code 1

Stop in /usr/ports/print/cups-client.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20110717-39470-e5iezm-0 env make WITHOUT_X11=yes
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! print/cups-client     (unknown build error)

Error: shared library "gnutls-openssl.40" does not exist

ここから problem を fix すべくあれこれと試行錯誤を繰り返したが結局インストールできず。しかし、これが入らないことには jdk が入らない。そもそも cups なんて Linux 入れたときには真っ先に止めるサービス。入れたところで利用することなんぞ未来永劫あるまい、という独断と偏見に基づき、バイナリパッケージをFTPサイトから拾ってきて無理矢理突っ込むことにした。

# wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/print/cups-client-1.4.6.tbz
# pkg_add cups-client-1.4.6
# portinstall jdk

これでともあれ jdk のインストールは完了。tomcat へ続く。

cups-clientの件、その後解決

この記事にコメントする

Powered by WordPress, WP Theme designed by WSC Project. ログイン