[an error occurred while processing this directive]
【CoffeeBreak】RED5インストール時に、Javaで手こずる・・・

第329日目:【CoffeeBreak】RED5インストール時に、Javaで手こずる・・・

【追記 2012/09/21 18:25】
ども、ども、▲('A`)/です。
えーと、本編で書けなかったのですが、ようやっとRED5の動画再生を1つ攻略しました。
デモの種類で言うと、「OFLA Demo」になります。
flash動画(.flv)の再生です。

えーと、日記の本編でご紹介したRED5のTOPページにアクセスします。画像[1]で青丸で
囲ったリンクをクリックします。すると画像[2]のデモ一覧のページが表示されます。
その中に「OFLA Demo」が出ているので、青丸で囲った「View Demo」のリンクをクリックします。

[1]   [2]   [3]

すると、画像[4]の画面が表示されます。Flashプレイヤーの画面です。
砂嵐しか表示されていません。
で、ここで、緑の枠で囲った部分の内容を修正します。
localhost の部分を今回の例ですと 114.160.23.44 に修正入力します。
(これはRED5の定義ファイルで今回設定したホスト(IP)に対応します。)
入力が終わったら、画像[5]で赤丸で囲った [connect] をクリックします。
すると、画像[6]の様に向かって左上の緑の枠で囲った欄に動画の一覧が
表示されます。これはデモ用に配布されている動画です。

[4]   [5]   [6]

試しに画像[7]の様に「toystory」をマウスでクリックして選択すると、
画像[8]の様に動画の再生が始まります。
再生を終わらせたい時には、画像[9]で赤丸で囲った[disconnect]を
クリックすると再生が止まりますので、後はブラウザを閉じるなりしてください。
別の動画を見たいときには、赤丸に囲ったリンクが[connect]に変わって
いるので、まずはそのリンクをクリックしてから見たい動画をマウスで
選択します。

[7]   [8]   [9]

まあ、localhostの部分の書き換えなどせずに最初から動画一覧を表示させる
様にするにはどうするか、というのはこれから調べるところです。
恐らくは、本編でも紹介しました
/usr/local/red5/webapps/oflaDemo/ の中にあるどこかのデータを修正すれば
よいのだと思います。
ちなみにデモ用の動画は /usr/local/red5/webapps/oflaDemo/streams/ の中に
設置されていましたので、ここにflash動画(.flv)を置けば一覧に追加されます。

えーと、今回は長い追記でゴメンなさい。
それでは、また!▲('A`)/

↓ 本編はこちらです。

(2012/09/20 18:20)
ども、ども、▲('A`)/です。
今日はCoffeeBreakという事で、本当ならRED5の事を詳しく取り上げたかったのですが、
たぶん流れ的にはJavaの事を書くんじゃないかなあ、と思っています(オイ・・・
今回はちょっとメモも兼ねて日記を書いています。

そもそもが、前回の日記の追記4で書いた様に「ニコニコ動画」とか「Ustream」みたいな
サイトを構築できないかなあと思いまして・・・
で、ClipBucketとかPHPMotionなどに触れていた訳です。
そうしてRED5というJavaで開発されているオープンソースなFlashサーバというのを
見つけました。なんでもAdobe社のFlashMediaServerと互換だそうです。
Flashサーバと銘打っている様にflashの技術を使って、主にストリーミングで動画を
見せるのです。

RED5を動かす為に前提となるソフトはJava(JDK)になります。
そしてRED5はportsの中(/usr/ports/www/red5)に収録されていますので、
インストールは簡単・・・・の、はずでした。
ここで▲('A`)は罠にはまったのです。

今回は「本当にJDKだけあれば動くの?」と思い、まっさらなサーバ(OSのみを
インストールしたサーバ)でRED5のインストールを試みました。
OSバージョンはS-Bananaサーバと同じ FreeBSD 8.2R amd64 です。
結論から言うとその通りでした。Apacheも必要ありません。
RED5のパネルらしきページもブラウザから専用のポートに対してアクセスする
形式で表示できました。
あ、ちょっと説明を「はしょって」しまいましたね。すみません。

RED5が依存関係を持つソフトは何があるのかを最初に調べました。
調べ方はこうです。

cd /usr/ports/www/red5
make all-depends-list

すると、以下の様にズラズラとソフトが表示されてきます。
これらが依存関係のあるソフト達です。もしもRED5をインストールする時に
マシン上にインストールされていなければ、RED5インストール前にこれらが先に
インストールされます。

/usr/ports/java/diablo-jdk16
/usr/ports/archivers/unzip
/usr/ports/x11/libXi
/usr/ports/x11/libXp
/usr/ports/x11-toolkits/libXt
/usr/ports/x11/libXtst
/usr/ports/misc/compat7x
/usr/ports/java/javavmwrapper
/usr/ports/x11/xextproto
/usr/ports/x11/inputproto
/usr/ports/x11/xproto
/usr/ports/x11/libX11
/usr/ports/x11/libXext
/usr/ports/devel/pkg-config
/usr/ports/x11/printproto
/usr/ports/x11/libXau
/usr/ports/devel/libtool
/usr/ports/x11/kbproto
/usr/ports/x11/libSM
/usr/ports/x11/recordproto
/usr/ports/x11/libxcb
/usr/ports/devel/xorg-macros
/usr/ports/x11/bigreqsproto
/usr/ports/x11/xcmiscproto
/usr/ports/x11/xtrans
/usr/ports/x11-fonts/xf86bigfontproto
/usr/ports/x11/libXdmcp
/usr/ports/devel/automake
/usr/ports/devel/autoconf
/usr/ports/devel/gmake
/usr/ports/x11/libICE
/usr/ports/devel/libcheck
/usr/ports/textproc/libxslt
/usr/ports/x11/xcb-proto
/usr/ports/devel/libpthread-stubs
/usr/ports/lang/python26
/usr/ports/lang/perl5.10
/usr/ports/devel/automake-wrapper
/usr/ports/devel/m4
/usr/ports/misc/help2man
/usr/ports/devel/autoconf-wrapper
/usr/ports/devel/gettext
/usr/ports/security/libgcrypt
/usr/ports/textproc/libxml2
/usr/ports/devel/p5-Locale-gettext
/usr/ports/converters/libiconv
/usr/ports/security/libgpg-error

「そうか・・・diablo-jdkか。」
という事は日記第310日目を参考に予め必要なファイルを /usr/ports/distfiles に
設置しておけば良いな、と思い、こんな風にしました。
(OSバージョンがFreeBSD 8.2R amd64 というのを念頭に置いて)

cd /usr/ports/distfiles
fetch http://www.maido3.com/server/zousan/diablo-caffe-freebsd7-amd64-1.6.0_07-b02.tar.bz2
fetch http://www.maido3.com/server/zousan/tzupdater-1_3_34-2010o.zip
fetch http://www.maido3.com/server/zousan/jce_policy-6.zip

(tzupdater-1_3_34-2010o.zip なんてファイルはもう手に入らないんじゃないかなあ。
現時点(2012年9月)ではORACLE社のJavaのダウンロードページ上ではこのファイル
tzupdater-1_3_48-2012d.zip が最新版として公開されています。)

「これで下ごしらえはできたかな?」と思い、/usr/ports/www/red5 へ移動して
早速 make install と叩いてインストールを始めたら・・・うん?
何か見慣れない画面が出てきたぞ?・・・



あれっ?JDK 1.6.0.3p4_20 って、、、、なぜこいつが出てくるんだ。
これが▲('A`)が言っていた罠なのです。この後、この画面が出てきたからくりをご説明しますが、
まずはRED5をインストールしたいので、先に終わらせてしまいましょう。

RED5は先程コマンドで確認した通り、Java(diablo-JDK16)と依存関係を持っています。
diablo-JDK16がインストールされていれば後は依存関係を持っている他のソフトと、
RED5本体をインストールすれば良いだけ、です。
じゃあ、先にdiablo-JDK16をインストールしましょう。

という事で以下のコマンドを実行します。

cd /usr/ports/java/diablo-jdk16
make install clean
rehash

インストール中に以下の画面が表示されますが、全てOKを選択して進んでください。
(依存関係でPerlもインストールされます。これは実は 8.2R の ports だからです。
他のバージョン、例えば 8.3R や 現在リリース作業真っ最中の 9.1RではPerlは
インストール対象から外されています。。。)

                 
で、diablo-JDKのインストールが終わったら、改めて/usr/ports/www/red5 へ移動して
make install を叩くと、無事にRED5がインストールされます。

さて、RED5を動かすにはどうするかと言いますと、以下のファイルを修正します。
1つは /etc/rc.conf です。この行を追記します。

red5_enable="YES"

もう1つのファイルはRED5の定義ファイル(/usr/local/red5/conf/red5.properties)です。
なお、このファイルは最初パーミッションが444になっているので、修正前に変更しておきます。

chmod 644 /usr/local/red5/conf/red5.properties

で、viエディタで開くとこんな風に表示されます。

# Socket policy^M
policy.host=127.0.0.1^M
policy.port=843^M
^M
# HTTP^M
http.host=127.0.0.1^M
http.port=5080^M
https.port=8443^M
^M
# RTMP^M
rtmp.host=127.0.0.1^M
rtmp.port=1935^M
rtmp.io_threads=16^M
rtmp.connect_threads=4^M
rtmp.send_buffer_size=271360^M
rtmp.receive_buffer_size=65536^M
rtmp.ping_interval=1000^M
rtmp.max_inactivity=60000^M
rtmp.tcp_nodelay=true^M
^M
# RTMPS^M
rtmps.host=127.0.0.1^M
rtmps.port=8443^M
rtmps.ping_interval=5000^M
rtmps.max_inactivity=60000^M
rtmps.max_keep_alive_requests=-1^M
rtmps.max_threads=20^M
rtmps.acceptor_thread_count=2^M
rtmps.processor_cache=20^M
# RTMPS Keystore Password^M
rtmps.keystorepass=password^M
^M
# RTMPT^M
rtmpt.host=127.0.0.1^M
rtmpt.port=8088^M
rtmpt.ping_interval=5000^M
rtmpt.max_inactivity=60000^M
rtmpt.max_keep_alive_requests=-1^M
rtmpt.max_threads=20^M
rtmpt.acceptor_thread_count=2^M
rtmpt.processor_cache=20^M
^M
# MRTMP^M
mrtmp.host=127.0.0.1^M
mrtmp.server=localhost^M
mrtmp.port=9035^M
mrtmp.event_threads_core=4^M
mrtmp.event_threads_max=32^M
# event threads queue: -1 unbounded, 0 direct (no queue), n bounded queue^M
mrtmp.event_threads_queue=0^M
mrtmp.event_threads_keepalive=60^M
mrtmp.send_buffer_size=271360^M
mrtmp.receive_buffer_size=65536^M
mrtmp.ping_interval=5000^M
mrtmp.max_inactivity=60000^M
mrtmp.tcp_nodelay=true^M
^M
# Debug proxy (needs to be activated in red5-core.xml)^M
proxy.source_host=127.0.0.1^M
proxy.source_port=1936^M
proxy.destination_host=127.0.0.1^M
proxy.destination_port=1935^M
^M
# JMX^M
jmx.rmi.port.registry=9999^M
jmx.rmi.port.remoteobjects=^M
jmx.rmi.host=127.0.0.1^M
jmx.rmi.ssl=false^M
^M
^M
^M

ちょっと抜粋して掲載しましたが、この「^M」というのは改行コード(CR+LF)です。
LinuxとかFreeBSDなどの世界では改行コードはLFだけです。
RED5はLinuxやFreeBSD等のUnixマシン以外にもWindowsでも動きますので、こういう作りに
なっています。
ただ、余計なコードが入っているのはアレなんで・・・取っちゃいましょう。
viエディタだとコマンドモードで以下の様に入れます。

:%s/^M//g

えーと、コピペはできませんからね。なぜなら制御コード込みですから・・・
じゃあどうすれば良いかといいますと、:%s/ まで入力したら、以下の操作をします。
・キーボードのCtrlキーを押しながらVキーを押す。
・キーボードのCtrlキーを押しながらMキーを押す。
すると、^M が入りますので、後は //g を入力してENTERを押します。
そうすると、^Mが除かれた状態に一括返還されます。

続けて なんちゃら.host=127.0.0.1 と書かれている箇所があります。
ここの 127.0.0.1 をサーバ(マシン)のIPに変更しましょう。
これもさっきの要領で置換します、こんな風に。
(例として dokuo号でいつも使っている 114.160.23.44 に変更します。)

:%s/127.0.0.1/114.160.23.44

ここまで済んだらサーバ(マシン)を再起動します。

RED5で使用するポートはHTTPポートがデフォルトで5080です。
なので、Webブラウザから IPアドレス:5080 でアクセスすると、以下の画面が
表示されます。
もし表示されない場合には、ファイヤーウォールとか色々原因となる箇所はあると
思いますが、そもそもサーバ側で5080で通信できているかをnetstat コマンドで
確認しておいた方が良いでしょう。
以下の様に表示されていたら、少なくともサーバ側の方でRED5のシステムは動いていると
考えてよいです。コマンドはこうです。

netstat -a | grep LISTEN

# netstat -a | grep LISTEN
tcp4       0      0 localhost.smtp         *.*                    LISTEN
tcp4       0      0 w44.5080               *.*                    LISTEN
tcp4       0      0 w44.8443               *.*                    LISTEN
tcp4       0      0 w44.1935               *.*                    LISTEN
tcp4       0      0 *.56163                *.*                    LISTEN
tcp4       0      0 *.9999                 *.*                    LISTEN
tcp4       0      0 *.ssh                  *.*                    LISTEN
tcp6       0      0 *.ssh                  *.*                    LISTEN
# 

5080 というポートでLISTENされていればOKです。
ちなみに、8443と1935もRED5が使っているポートですが、これは8443(RTMPS)
1935(RTMP)プロトコルでの通信の為に使用しているのです。

画面[1]がTOPページになります。ここのページに赤文字で「install」と書かれたリンクを
クリックすると画面[2]が表示されます。「demo」と書かれたリンクをクリックすると
画面[3]が表示されます。
但し、demoを動かすには画面[2]で表示されている各demo用アプリケーションをインストール
してあげないといけません。
画面[4]は「Shared Ball」、画面「5」は「Publisher」のdemo画面です。

[1]   [2]   [3]
[4]   [5]

ええっと、、、何だか話が長くなりそうなので、ちょっと急ぎます。
インストールされたRED5のメインのディレクトリは /usr/local/red5 になります。
その中はこんな感じです。
(内訳はよく判りません。これから勉強します・・・・)
なんか、動かすにはJavaのプログラムを書かないといけないみたいなので・・・
誰か書いてー!

# ls -l /usr/local/red5
total 1016
-rwxr-xr-x  1 www  www   15725 Sep 20 03:12 boot.jar
drwxr-xr-x  3 www  www    1024 Sep 20 03:12 conf  <-- 定義ファイルの格納場所
drwxr-xr-x  2 www  www    1536 Sep 20 03:12 lib  <-- .jarファイルの格納先(よく判らない)
drwxr-xr-x  2 www  www     512 Sep 20 03:12 log  <-- logファイルの格納場所
-rwxr-xr-x  1 www  www  983570 Sep 20 03:12 red5.jar
drwxr-xr-x  4 www  www     512 Sep 20 03:12 webapps  <-- コンテンツとかの置き場だと思う。
# ls -l /usr/local/red5/conf
total 190
-r--r--r--  2 www  www   2037 Feb 21  2010 Red5_SMF.xml
-r--r--r--  2 www  www   1670 Feb 21  2010 access.properties
-r--r--r--  2 www  www    822 Feb 21  2010 build_standalone.properties
-r--r--r--  2 www  www  10168 Feb 21  2010 catalina.policy
-r--r--r--  2 www  www   1622 Feb 21  2010 context.xml
-r--r--r--  2 www  www  13879 Feb 21  2010 ehcache.xml
-r--r--r--  2 www  www    916 Feb 21  2010 keystore
-r--r--r--  2 www  www   1364 Feb 21  2010 keystore.jmx
-r--r--r--  2 www  www   3950 Feb 21  2010 log4j.properties
-r--r--r--  2 www  www   6266 Feb 21  2010 logback.xml
-r--r--r--  2 www  www   1346 Feb 21  2010 password.properties
-r--r--r--  2 www  www   1992 Feb 21  2010 quartz.properties
-r--r--r--  2 www  www    449 Feb 21  2010 realm.properties
-r--r--r--  2 www  www  11454 Feb 21  2010 red5-common.xml
-r--r--r--  2 www  www  11670 Feb 21  2010 red5-core.xml
-r--r--r--  2 www  www   5358 Feb 21  2010 red5-edge-core.xml
-r--r--r--  2 www  www   1944 Feb 21  2010 red5-edge.xml
-r--r--r--  2 www  www  10892 Feb 21  2010 red5-origin-core.xml
-r--r--r--  2 www  www   6795 Feb 21  2010 red5-origin.xml
-r--r--r--  2 www  www     55 Feb 21  2010 red5.globals
-r--r--r--  2 www  www  12708 Feb 21  2010 red5.policy
-r--r--r--  2 www  www   1538 Sep 20 03:12 red5.properties
-r--r--r--  2 www  www   1524 Feb 21  2010 red5.properties.bak
-r--r--r--  2 www  www   4818 Feb 21  2010 red5.xml
-r--r--r--  2 www  www    506 Feb 21  2010 tomcat-users.xml
-r--r--r--  2 www  www    661 Feb 21  2010 truststore.jmx
drwxr-xr-x  2 www  www    512 Feb 21  2010 war
-r--r--r--  2 www  www  51208 Feb 21  2010 web.xml
w44# 
# ls -l /usr/local/red5/webapps/
total 6
drwxr-xr-x  4 www  www   512 Feb 21  2010 installer
-r--r--r--  2 www  www  1884 Feb 21  2010 red5-default.xml
drwxr-xr-x  4 www  www   512 Feb 21  2010 root
# ls -l /usr/local/red5/webapps/root
total 30
drwxr-xr-x  2 www  www   512 Feb 21  2010 WEB-INF
-r--r--r--  2 www  www  7336 Feb 21  2010 biglogo.png
-r--r--r--  2 www  www   248 Feb 21  2010 crossdomain.xml
drwxr-xr-x  3 www  www  1024 Feb 21  2010 demos
-r--r--r--  2 www  www   894 Feb 21  2010 favicon.ico
-r--r--r--  2 www  www   733 Feb 21  2010 favicon.png
-r--r--r--  2 www  www   839 Feb 21  2010 flvdemo.html
-r--r--r--  2 www  www  3410 Feb 21  2010 index.html
-r--r--r--  2 www  www  5128 Feb 21  2010 logo.png
# ls -l /usr/local/red5/webapps/root/demos
total 3238
-r--r--r--  2 www  www     871 Feb 21  2010 BallControl.html
-r--r--r--  2 www  www   91060 Feb 21  2010 BallControl.swf
-r--r--r--  2 www  www   65723 Feb 21  2010 DevNotes_NetConnection.swf
-r--r--r--  2 www  www  211381 Feb 21  2010 FITCPresentation.swf
-r--r--r--  2 www  www   71980 Feb 21  2010 FITCSpeakerBroadcaster.swf
-r--r--r--  2 www  www  124466 Feb 21  2010 MessageRecorder.swf
-r--r--r--  2 www  www   60461 Feb 21  2010 RemotingTest.swf
-r--r--r--  2 www  www     869 Feb 21  2010 SimpleChat.html
-r--r--r--  2 www  www   66164 Feb 21  2010 SimpleChat.swf
-r--r--r--  2 www  www  335436 Feb 21  2010 adminPanel.air
-r--r--r--  2 www  www    1078 Feb 21  2010 adminPanel.html
-r--r--r--  2 www  www  329776 Feb 21  2010 adminPanel.swf
drwxr-xr-x  2 www  www     512 Feb 21  2010 assets
-r--r--r--  2 www  www     866 Feb 21  2010 bwcheck.html
-r--r--r--  2 www  www  169847 Feb 21  2010 bwcheck.swf
-r--r--r--  2 www  www    1083 Feb 21  2010 echo_test.html
-r--r--r--  2 www  www  240961 Feb 21  2010 echo_test.swf
-r--r--r--  2 www  www    4749 Feb 21  2010 index.html
-r--r--r--  2 www  www     861 Feb 21  2010 ofla_demo.html
-r--r--r--  2 www  www  130194 Feb 21  2010 ofla_demo.swf
-r--r--r--  2 www  www   76527 Feb 21  2010 othello.swf
-r--r--r--  2 www  www     870 Feb 21  2010 port_tester.html
-r--r--r--  2 www  www  223871 Feb 21  2010 port_tester.swf
-r--r--r--  2 www  www    1150 Feb 21  2010 publisher.html
-r--r--r--  2 www  www  398919 Feb 21  2010 publisher.swf
-r--r--r--  2 www  www     883 Feb 21  2010 simpleBroadcaster.html
-r--r--r--  2 www  www   71962 Feb 21  2010 simpleBroadcaster.swf
-r--r--r--  2 www  www     877 Feb 21  2010 simpleRecorder.html
-r--r--r--  2 www  www   75514 Feb 21  2010 simpleRecorder.swf
-r--r--r--  2 www  www     881 Feb 21  2010 simpleSubscriber.html
-r--r--r--  2 www  www   71825 Feb 21  2010 simpleSubscriber.swf
-r--r--r--  2 www  www    1044 Feb 21  2010 videoConference.html
-r--r--r--  2 www  www  125511 Feb 21  2010 videoConference.swf
-r--r--r--  2 www  www  117777 Feb 21  2010 videoConference_Flash7.swf
-r--r--r--  2 www  www   15591 Feb 21  2010 xray.swf
-r--r--r--  2 www  www   24224 Feb 21  2010 xrayConnector_1.6.1.swf
-r--r--r--  2 www  www   21847 Feb 21  2010 xrayconnector.swf
# 

さて、ちょっとRED5は横に置いておいて、先程の罠(JDK 1.6.0.3p4_20)の説明に移ります。
何気なく言っているJDKですが、、、FreeBSDのportsには複数存在します。
と、その前に 今さらですが JDKって何?というところから・・・(間違ってたら、すみません)

JDKというのはJava Development Kitの略でして、Java言語でプログラミングを
行なう際に必要な最低限のソフトウェアのセットを言います。
この中にはコンパイラとかデバッガ、クラスライブラリやJavaプログラムの
実行環境が含まれています。

Javaは昔々Sun Microsystemsという会社がありまして、そこが開発していた
プログラミング言語です。この会社は後にオラクル(Oracle)社に買収されたのですが、
その前から、JDKをオープンソース化しようと色々やっていました。
その結果が、OpenJDKの始まりです。
(あ、OpenJDKを出しちゃった。フライング、フライング・・・後で説明します。)

うん?Java SEって何だ?

Java SE は 正式名称 Java Platform, Standard Editionと言うそうです。
Standard Editionの意味は、このJavaがデスクトップマシン上で動く事を
前提にしているからです。
Javaは皆さんもご存知でしょうが、携帯電話とかでも動いています。
そういう携帯電話向けとしてJavaはJavaでも Micro Edition というのがあります。
その他にはサーバ向けのEnterprise Editionがあります。
Javaプラットフォームとは何かと言いますと、Javaというプログラムを
動かす為の仮想マシン、及びその環境を構築しているソフトウェアの集合体が
当てはまります。
大雑把な認識としては、JDKは「Javaを動かす為のソフト」というのでOKでしょう。
(はー、いつもぐだぐだな説明ですみませんねえ・・・・)

この「動かす為のソフト」JDKにも種類があります。
先程出てきたOpenJDKは基本的にGPLライセンスの元、ソースコードとかを提供しています。
(基本、無料です。)
で、FreeBSDではオープンソース化の流れとは別にSun Microsystems(今はOracle)から
協力を得て、FreeBSDの環境に移植したのです。これがdiablo-JDKです。
diablo-JDKは FreeBSDを支援・推進する非営利団体である「FreeBSD foundation」が
提供しています。
で、ちょっと混乱してしまうのが、実はportsの中にjdk16というのがあります。
これはSun Microsystemsが提供していた版のJDKです。
(ある意味本家本元と言えるでしょう。)
なので、このJDKをインストールする際にはSun Microsystems(今はOracle)の
ライセンス規約に同意した上で、FreeBSD上で動かす為のパッチファイル等を
適用して動かす事になります。

という事で、3種類のJDKです。
(以下は8.2R版で、説明していますので、予めご了承ください。)

・JDK
/usr/ports/java/jdk16
本家本元のJDK
インストールする為には以下のパッチファイルや以下のpolicyファイル等が必要
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar
http://www.maido3.com/server/zousan/bsd-jdk16-patches-4.tar.bz2
tzupdater-1_3_34-2010o.zip
jce_policy-6.zip

・diablo-JDK
/usr/ports/java/diablo-jdk16
FreeBSD移植版のJDK
インストールする為には以下のファイル群が必要
diablo-caffe-freebsd7-amd64-1.6.0_07-b02.tar.bz2
tzupdater-1_3_34-2010o.zip
jce_policy-6.zip

・OpenJDK
/usr/ports/java/openjdk6
オープンソース版のJDK
インストールする場合はdiablo-JDKも合わせてインストールされるので、以下のファイルが必要
diablo-caffe-freebsd7-amd64-1.6.0_07-b02.tar.bz2
tzupdater-1_3_34-2010o.zip

で、どのJDKをインストールすれば良いのかは各自のマシン環境とか、必要としている
ソフトウェアとの関連とか、OS&その他のソフトのバージョンとかを勘案しながら
決めてください。
ちなみに、本家本元のJDKをインストールする場合には以下の様なライセンスの
画面が途中で表示されます。
スペースキーでスクロールされるので、最後まで読むとライセンスに同意するかどうかの
応答画面(向かって右側の画面です)が表示されるので、同意するなら yes と入力します。

  

えーと、Javaの教科書じゃないんだから、、、本題に戻りますね。
で、今回の罠のおさらいです。

RED5をインストールしようとした。
-> JDKが無い。
-> 関連付けされているJDKは diablo-jdk16なのに、
  何故かJDK 1.6.0.3p4_20をインストールしようとしている。

腑に落ちなかったのは、どこでJDK 1.6.0.3p4_20が出てきたのか、でした。
それで、portsの中のMakefileを調べたりしたのですが、、、、こういう事でした。

portsの中には各ソフトのインストール用のMakefileの他のこういうファイルも存在します。

# ls -l /usr/ports/Mk
total 822
-rw-r--r--  1 root  wheel   17815 Jan 11  2012 bsd.apache.mk
-rw-r--r--  1 root  wheel   12550 Feb 25  2011 bsd.autotools.mk
-rw-r--r--  1 root  wheel    2972 Nov 10  2011 bsd.cmake.mk
-rw-r--r--  1 root  wheel    3661 Feb 22  2012 bsd.commands.mk
-rw-r--r--  1 root  wheel    1609 Feb 26  2012 bsd.cran.mk
-rw-r--r--  1 root  wheel   16023 Mar 14  2012 bsd.database.mk
-rw-r--r--  1 root  wheel    7701 Jan 25  2011 bsd.destdir.mk
-rw-r--r--  1 root  wheel    4793 Aug 31  2011 bsd.drupal.mk
-rw-r--r--  1 root  wheel   14172 Dec 15  2011 bsd.efl.mk
-rw-r--r--  1 root  wheel    8264 Feb 22  2012 bsd.emacs.mk
-rw-r--r--  1 root  wheel    6526 Aug 12  2011 bsd.fpc.mk
-rw-r--r--  1 root  wheel    7201 Nov 12  2011 bsd.gcc.mk
-rw-r--r--  1 root  wheel   31258 Mar 14  2012 bsd.gecko.mk
-rw-r--r--  1 root  wheel   36643 Aug 12  2011 bsd.gnome.mk
-rw-r--r--  1 root  wheel   19538 Jan 16  2012 bsd.gnustep.mk
-rw-r--r--  1 root  wheel    7479 Feb 25  2011 bsd.gstreamer.mk
-rw-r--r--  1 root  wheel   17975 Feb  9  2012 bsd.java.mk
-rw-r--r--  1 root  wheel    4932 Sep 23  2011 bsd.kde.mk
-rw-r--r--  1 root  wheel    5484 Feb 24  2012 bsd.kde4.mk
-rw-r--r--  1 root  wheel    3398 Feb 24  2011 bsd.ldap.mk
-rw-r--r--  1 root  wheel    5343 Jan  9  2012 bsd.licenses.db.mk
-rw-r--r--  1 root  wheel   26926 Mar 13  2012 bsd.licenses.mk
-rw-r--r--  1 root  wheel   23296 Jan 14  2012 bsd.linux-apps.mk
-rw-r--r--  1 root  wheel    7109 Apr 18  2011 bsd.linux-rpm.mk
-rw-r--r--  1 root  wheel     771 Dec 10  2006 bsd.local.mk
-rw-r--r--  1 root  wheel   19001 Dec 31  2011 bsd.lua.mk
-rw-r--r--  1 root  wheel    1956 Aug  4  2007 bsd.mail.mk
-rw-r--r--  1 root  wheel    3043 Sep 23  2011 bsd.ncurses.mk
-rw-r--r--  1 root  wheel    5520 Dec 15  2011 bsd.ocaml.mk
-rw-r--r--  1 root  wheel    1721 Jan 31  2012 bsd.octave.mk
-rw-r--r--  1 root  wheel    4725 Sep 23  2011 bsd.openssl.mk
-rw-r--r--  1 root  wheel    8291 Mar 11  2012 bsd.perl.mk
-rw-r--r--  1 root  wheel   13586 Nov 25  2011 bsd.php.mk
-rw-r--r--  1 root  wheel    9528 Feb 22  2012 bsd.pkgng.mk
-rw-r--r--  1 root  wheel  211617 Mar 13  2012 bsd.port.mk
-rw-r--r--  1 root  wheel     556 May 24  2007 bsd.port.options.mk
-rw-r--r--  1 root  wheel     139 Aug 25  1999 bsd.port.post.mk
-rw-r--r--  1 root  wheel     140 Aug 25  1999 bsd.port.pre.mk
-rw-r--r--  1 root  wheel   16934 Jul 21  2011 bsd.port.subdir.mk
-rw-r--r--  1 root  wheel   25906 Nov  7  2011 bsd.python.mk
-rw-r--r--  1 root  wheel   11372 Oct 16  2011 bsd.qt.mk
-rw-r--r--  1 root  wheel   18093 Feb 25  2012 bsd.ruby.mk
-rw-r--r--  1 root  wheel    2492 Aug 14  2009 bsd.scons.mk
-rw-r--r--  1 root  wheel    4288 Feb 18  2012 bsd.sdl.mk
-rw-r--r--  1 root  wheel   66004 Feb 24  2012 bsd.sites.mk
-rw-r--r--  1 root  wheel   14635 Jul  7  2009 bsd.tcl.mk
-rw-r--r--  1 root  wheel   17769 Dec 11  2011 bsd.wx.mk
-rw-r--r--  1 root  wheel    2594 Oct 28  2011 bsd.xfce.mk
-rw-r--r--  1 root  wheel   14473 Mar  1  2011 bsd.xorg.mk
-rw-r--r--  1 root  wheel    2057 Oct 20  2011 bsd.zenoss.mk
# 

ちょうどCのプログラムの中に記述されるヘッダーファイル(.h)みたいにMakefileの中で
include文で読み込まれるのです。

で、その中で注目するファイルは bsd.java.mk です。このファイルは bsd.port.mk から
呼び出されて、bsd.port.mkは各ソフトのMakefileから呼び出されます。

RED5のMakefileはこんな内容です。最後の行で bsd.port.mk を読み込んでいます。
そしてJava関連のパラメータは 「USE_JAVA= yes」です。

# New ports collection makefile for:    devel/red5
# Date created:         14 March 2008
# Whom:                 wenheping@gmail.com
#
# $FreeBSD: ports/www/red5/Makefile,v 1.6 2011/01/09 22:09:11 jpaetzel Exp $
#

PORTNAME=       red5
PORTVERSION=    0.9.1
PORTREVISION=   1
CATEGORIES=     www java
MASTER_SITES=   http://www.red5.org/downloads/0_9/ \
                http://red5.rmdir.fr/

MAINTAINER=     joris.dedieu@gmail.com
COMMENT=        Red5 is an Open Source Flash Server

USE_JAVA=       yes
NO_BUILD=       yes
USE_RC_SUBR=    red5

RED5_USER?=     ${WWWOWN}
RED5_GRP?=      ${WWWGRP}
RED5_HOME?=     ${PREFIX}/${PORTNAME}

SUB_LIST+=      RED5_USER=${RED5_USER} RED5_HOME=${RED5_HOME}

pre-install:
        @${REINPLACE_CMD} -e 's/0.0.0.0/127.0.0.1/' ${WRKSRC}/conf/red5.properties

do-install:
        ${MKDIR} ${RED5_HOME}/conf ${RED5_HOME}/lib ${RED5_HOME}/webapps ${RED5_HOME}/log
        ${INSTALL} ${WRKSRC}/boot.jar ${RED5_HOME}
        ${INSTALL} ${WRKSRC}/red5.jar ${RED5_HOME}
        (cd ${WRKSRC}/conf && ${COPYTREE_SHARE} \* ${RED5_HOME}/conf)
        (cd ${WRKSRC}/lib && ${COPYTREE_SHARE} \* ${RED5_HOME}/lib)
        (cd ${WRKSRC}/webapps && ${COPYTREE_SHARE} \* ${RED5_HOME}/webapps)
        ${CHOWN} -R  ${RED5_USER}:${RED5_GRP} ${RED5_HOME}

post-install:
.if !defined(NOPORTDOCS)
        ${MKDIR} ${DOCSDIR}
        (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \* ${DOCSDIR})
.endif
        @${ECHO_CMD} '@exec ${CHOWN} -R ${RED5_USER}:${RED5_GRP} ${RED5_HOME}' \
                >> ${TMPPLIST}

.include <bsd.port.mk>

このJava関連のパラメータ(USE_JAVA= yes)が bsd.port.mk の中の以下の行で判定されて、
bsd.java.mk を呼び出すのです。

.if defined(USE_JAVA)
.include "${PORTSDIR}/Mk/bsd.java.mk"
.endif

呼び出された 8.2Rのports中の bsd.java.mk では以下のルーチンでインストールすべきJDKの
種類とバージョンを決定しています。

# Enforce preferred Java ports according to OS
.               if (${OSVERSION} >= 600000 && ${OSVERSION} < 800000)
_JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_FREEBSD_JDK_1_6
.               else
_JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_BSDJAVA_JDK_1_6
.               endif

判りますか?
このルーチンだとOSVERSIONが600000(つまり6.0R)以上8000000(つまり8.0R)より小さかったら
JAVA_PORT_NATIVE_FREEBSD_JDK_1_6 を、
そうでなければ
JAVA_PORT_NATIVE_BSDJAVA_JDK_1_6 を、
選択・セットして返す、と。
では8.2Rのports中の bsd.java.mkの中ではどういう風に割り当てされているのか、と言いますと
こうでした。(内容を一部抜粋して書いています。)

_JAVA_PORT_NATIVE_FREEBSD_JDK_1_6_INFO= PORT=java/diablo-jdk16
_JAVA_PORT_NATIVE_BSDJAVA_JDK_1_6_INFO= PORT=java/jdk16
_JAVA_PORT_NATIVE_OPENJDK_JDK_1_6_INFO= PORT=java/openjdk6

なので、OSバージョンは8.2Rなのでelseの方に流れて JAVA_PORT_NATIVE_BSDJAVA_JDK_1_6
つまり java/jdk16(JDK 1.6.0.3p4_20) が選択されたのです。
この仕組みが判った時に、「勘弁してくれよ!」と思いました・・・・
実は8.3R並びに9.1-RC1に収録されているports中の bsd.java.mk では、この判定条件が無く、
変わりに以下の行があるだけです。

# Enforce preferred Java ports according to OS
_JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_OPENJDK_JDK_1_6

参考までに8.3R版と9.1-RC1のbsd.java.mkを以下に置いておきます。
bsd.java.mk(8.3R版)
bsd.java.mk(9.1-RC1版)

しかし、普段こんなところ見ないですから、気がつきませんよ。。。

なんだか今日の日記は「チラシの裏」状態になってしまいました。
すみませんねえ。 ごくたまーにですが、小手先で切り抜けるんじゃなくて、止め処なく掘り下げますんで。

えーと、最後にお知らせを。
BIG-Server.comでは只今めずらしくキャンペーンを実施中です。今月9月末までに
ご契約頂いたお客様にはセットアップ料金は頂かずにご利用頂く事にしております。
残りあと僅かの期間ですが、ぜひご検討ください。
あと、ショッピングサイトを始めたい人向けに新しいサービスを今日公開したんだけど。
(ちょっと手違いでプレスリリースがうまく出せなかったのでした・・・トホホ)

ショッピングサイトコース

どういうサービスかというと、CS-CartとかEC-cube等のショッピングカートのソフトの
インストールもこちら(BIG-Server.com)で行ないますよー、という事です。
可能な限り納期にかかる時間は早めようとおもいますが、その為には以下の2つを
予め教えて頂けると、とても助かりますし、時間も早まります。
(使用したいショッピングカートソフト、サイトで使用するドメイン名)
ドメイン?と思うかもしれませんが、ショッピングカートソフトの中にはインストール時に
予め決めておかないといけないものもあるので・・・
ご協力よろしくお願いします。

さて、営業もやっちゃった。今週はゆっくりしようw
それでは、また!▲('A`)/

328日目に戻る。   330日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]