* FreeNXを使ってみる [#k531fa03]
 この間のIUCrでビームラインのリモートアクセスでよく使われていたNXというものを使ってみました。これは細い帯域でもそこそこ速いというものです。~
 インストールが結構大変だったのでメモ。FreeNX 0.7.3 + NX Open Source Components Ver.3.2.0で構築してみました。Ubuntuなら簡単にインストールできるみたいですが。あえてVine 4.2にインストールしてみました。なお、VineではNOMACHINE社のRPMではlibstdc++のバージョンが合わなくて動きませんでした。
 インストールが結構大変だったのでメモ。FreeNX 0.7.3 + NX Open Source Components Ver.3.2.0で構築してみました。UbuntuやCentOSなどならパッケージで簡単にインストールできるみたいですが。あえてVine 4.2にインストールしてみました。なお、VineではNOMACHINE社のRPMではlibstdc++のバージョンが合わなくて動きませんでした。
 
 ** 準備 [#n7228946]
 あらかじめ、
 - expect
 - netcat <-- 自分でコンパイルが必要
 - XOrg-devel
 - XOrg-gl-devel
 
 をインストールしておきます。
 
 ** ファイルの取得とビルド [#n3bc5cf6]
 とりあえずはFreeNXのアーカイブを取得して展開しますが、実際にFreeNXのディレクトリで作業をするのは最終段階になってからです。http://freenx.berlios.de/からfreenx-server-0.7.3.tar.gzをダウンロードします。ダウンロードしたら展開しておいても構いません。このアーカイブの中にINSTALLドキュメントがあるのでその手順に従ってビルドします。~
 続いて、NOMACHINE社のホームページにある[[NX Open Source Components>http://www.nomachine.com/sources.php]]からnx-X11-compat''以外の''ファイルをすべてダウンロードします。全部で18個あります。~
 ダウンロードしたらすべて展開してビルドします。
  % tar zxf nxproxy-3.2.0-1.tar.gz
  ...(18個すべてを展開)
  % cd nx-X11
  % make World
  % cd ..
  % cd nxproxy
  % ./configure
  % make
 nx-X11のビルドにはおそらく30分ぐらいはかかると思いますので気長に待ちましょう(Pentium-Dual 1.8GHz)。~
 すべてのビルドが終わったらライブラリをコピーします。私は''/usr/local/NX''以下に構築することにしました。
  # NXPREFIX=/usr/local/NX
  # mkdir -p ${NXPREFIX}/lib ${NXPREFIX}/bin
  # cp -a nx-X11/lib/X11/libX11.so* ${NXPREFIX}/lib
  # cp -a nx-X11/lib/Xext/libXext.so* ${NXPREFIX}/lib
  # cp -a nx-X11/lib/Xrender/libXrender.so* ${NXPREFIX}/lib
  # cp -a nxcomp/libXcomp.so* ${NXPREFIX}/lib
  # cp -a nxcompext/libXcompext.so* ${NXPREFIX}/lib
  # cp -a nxcompshad/libXcompshad.so* ${NXPREFIX}/lib
  # cp -a nx-X11/programs/Xserver/nxagent ${NXPREFIX}/bin
  # cp -a nxproxy/nxproxy ${NXPREFIX}/bin
 FreeNXのINSTALLドキュメントにはnxcompshadのコピーについては書かれていませんでしたが、必要みたいです。ここまで終わればようやくFreeNXのインストールに入ります。
  % tar zxvf freenx-0.7.3.tar.gz
  % cd freenx-0.7.3
 ディレクトリ構成を制御するためのファイルnxloadconfigを編集します。
 :nxloadconfig|
 実行ファイルのディレクトリ構成およびログファイル、sessregコマンドの場所を変更しています。
   58 # Where can different nx components be found
   59 NX_DIR=/usr/local/NX              <-- 変更
   60 PATH_BIN=$NX_DIR/bin
   61 PATH_LIB=$NX_DIR/lib
   62 NX_ETC_DIR=$NX_DIR/etc            <-- 変更
   63 NX_SESS_DIR=$NX_DIR/var/lib/db    <-- 変更
   64 NX_HOME_DIR=$NX_DIR/var/lib/home  <-- 変更
  
  133 NX_LOGFILE=$NX_DIR/var/log/nxserver.log
  
  220 COMMAND_SESSREG="/usr/X11R6/bin/sessreg"
 以上の場所を変更しました。なお、NX_LOGFILEとCOMMAND_SESSREGはインストール後に$NX_ETC_DIR/node.confを編集することで設定することも可能です。~
 インストールします。
  % make
  # make install
 これでFreeNXが配置されました。
 
 ** FreeNXの初期設定 [#n9f112b1]
 ファイルをインストールした後に初期設定を行います。
  # cd /usr/local/NX/bin
  # ./nxsetup --install
 でOKのはずです。
 
 ** ディレクトリ構成 [#ua601865]
 以上のセットアップでのファイル配置は以下のようになります。
  /usr/local/NX
    + bin/
    |   + nxserver, nxsetupなどの実行ファイル
    |
    + lib/
    |   + libX11, libXcomp, libXcompext, libXcompshad, libXext, libXrender, libnxredir
    |         などのライブラリファイル
    + etc/
    |   + node.conf        -- 設定ファイル。必要なときnode.conf.sampleをコピーして編集
    |     passwords        -- ENABLE_PASSDB_AUTHENTICATION="1"の時に使用されるユーザーDBファイル
    |     passwords.orig   -- passwordsのバックアップ
    |     users.id_dsa     -- 秘密鍵、でも何に使うか不明
    |     users.id_dsa.pub -- 公開鍵、でも何に使うか不明
    |
    + var/
        + lib/
            + db/    -- セッション格納ディレクトリ
              home/  -- ユーザーnxのホームディレクトリ
                + .ssh/ -- SSH個人ディレクトリ
                    + authorized_keys2      -- NX認証用公開鍵
                      client.id_dsa.key     -- NX認証用秘密鍵
                      server.id_dsa.pub.key -- NX認証用公開鍵(authorized_keys2の元)
 このようになっているはずです。なお、var/lib/db、var/lib/homeはユーザーnxがオーナーになっているはずです。~
 
 ** Windowsからの接続(書きかけ) [#db3ebf47]
 NXクライアントをNOMACHINE社からダウンロードします。http://www.nomachine.com/download-client-windows.phpからNX Client for Windowsを取得して下さい。ダウンロード後nxclient-3.2.0-13.exeを実行すればインストールされます。
 #br
 クライアントからの接続で失敗するときは以下の点を確認しましょう。
 - ユーザーnx(FreeNXで作成されます)はSSH経由の公開鍵認証でログイン可能か?
 
 ** パフォーマンスは? [#k54c9a10]
 ためしにCootを使ってみましたが、そこそこの速さでした。さすがに実用にはちょっと厳しいかなーと言うところですが・・・~
 3Dでこのぐらいの速度がでるなら、通常のXアプリケーションは十分使えるのでは無いでしょうか。