IBM Lotus Symphony 3 Bata 2 on Windows XP x64

2010/04/24PC::Tips

IBM Lotus SymphonyというOpenOffice.orgとEclipseをベースにした、IBMにより無償で提供されるオフィスアプリケーションがあります。
OpenOffice.orgのファイルはもちろん開くことができ、かつMS Officeファイルの再現性がOpenOffice.orgよりも良い場合があるため、使ってみようとしましたが後述のエラーが発生するため正攻法ではWindows XP x64環境では利用することができません。
が、いろいろやってみた結果、XP x64環境でインストールすることができましたのでメモ代わりに残しておきます。

環境

  • Windows XP x64 Edition SP2
  • IBM Lotus Symphony 3 Bata 2

インストール方法

落としてきたLotus Symphonyのバイナリを叩くとインストーラーが起動しますが、次の画面が出て進むことができません。

symphony3-win64a.jpg

Lotus SymphonyのFAQではWindowsインストーラーがXP/Vista x64プラットフォームをサポートしていないことが原因のようです。

Windows installer does not support AMD64 CPU with XP/Vista 64 bit platforms installed

IBM Lotus Symphony - General FAQs

このインストーラーが走っている状況では、Tempディレクトリ以下にインストーラーの実体などのファイルが展開されています。

symphony3-win64b.jpg

ここで、C:\symphony3\のようなディレクトリを作成し*1、このフォルダに展開されているファイルすべてをコピーします。

コピーが完了すれば、"IBM Lotus Symphony.msi"を直接実行するとインストーラーが起動し、32bit版Windowsと同様にインストールを行うことが出来ます。

インストールが完了した後に動作させてみました。

スプラッシュ画面

symphony3-win64c.jpg

IBM Lotus Symphonyについての画面

symphony3-win64d.jpg

まだ使い込んでいませんが、動作させた範囲内では正常に動いているように見えます。

*1 : ここでコピー先フォルダ名にスペースが入っていると後述の方法によるインストールに失敗します。

[XP x64] Service Pack 適用時のアンインストール情報とアーカイブを削除する

2010/04/04PC::Tips

Windows XP x64 EditionにService Packを適用すると、32bit版XPとは異なり「窓の手」などのツールのアンインストール情報に載りません。クリーンインストール直後にService Packを適用する場合などは、アンインストール情報であったり、ロールバックのためのアーカイブファイルは必要ない場合がほとんどですので、これらを削除する方法について調べてみました。

環境

  • Windows XP x64 Edition
    • SP1 -> SP2 へアップデート

プログラムに追加と削除からエントリを削除する

レジストリエントリ「\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows x64 Service Pack」以下のエントリを削除する

アーカイブファイルを削除する

Cドライブだけの構成であれば"C:\Windows\$NtServicePackUninstall$"、複数ドライブ環境でアーカイブファイルのフォルダを指定した場合は"<指定したフォルダのパス>\$NtServicePackUninstall$を削除する

NFSで利用するポートを固定する

2010/03/24PC::Linux/BSD

NFSサーバーのポートの固定をしたときのメモ。

環境

  • Debian GNU/Linux 4.0/i386
    • Kernel 2.6.18-6-686
    • nfs-kernel-server 1.1.0.10-6+etch.1

NFSが利用するポート

NFSが利用するポートは以下の通り。

  • portmapper: 111/tcp, 111/udp
  • nfs: 2049/tcp, 2049/udp
  • statd: 不定/tcp, 不定/udp
  • nlockmgr: 不定/tcp, 不定/udp
  • mountd: 不定/tcp, 不定/udp

上記のように、nlockmgr, statd, mountdが利用するポートは不定の為、iptablesでルールを記述することができません。ですので、iptablesを用いたセキュアな環境を構築するためにはこれらのポートを固定する必要があります。

NFSのポートを固定する

statdの固定

/etc/default/nfs-common

# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".

# Options for rpc.statd.
#   Should rpc.statd listen on a specific port? This is especially useful
#   when you have a port-based firewall. To use a fixed port, set this
#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
#   For more information, see rpc.statd(8) or http://wiki.debian.org/?SecuringNFS
STATDOPTS="--port 49152 --outgoing-port 49155"

# Some kernels need a separate lockd daemon; most don't. Set this if you
# want to force an explicit choice for some reason.
NEED_LOCKD=

# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=

# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=

STATDOPTSのパラメータ指定で入力側ポートと出力側ポートを指定します。
上記の例では入力に両方でプライベートポート*1である49152を、出力にも49155を指定しています。*2

nlockmgrの利用するポートの固定

/etc/modprobe.d/options.local
このファイルは用意されていないので、作成する必要があります。混乱を避けるためにあえて私は新規に作成していますが、modprobe.confに記述してもよいかと。

options lockd nlm_udpport=49153 nlm_tcpport=49153

新規に作成、もしくは既存のmodprobe.confに上記を記述します。上記の例ではnlockmgrの利用するポートを49153/tcp, 49153/udpを指定しています。

mountdの使用するポートの固定

/etc/init.d/nfs-kernel-server

  • 中略-
log_progress_msg "mountd" start-stop-daemon --start --oknodo --quiet --exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS -p 49154 if [ $? != 0 ]; then
  • 後略-

nfs-kernel-serverの起動スクリプト中でポート番号の指定を書き加えます。
上記の例では49154番ポートを利用するように指定しています。

*1 : 49152~65535

*2 : 同じポートを指定すると正常に動作しない

確認する

設定が完了したら、nfs-kernel-serverの場合nlockmgrのポートの選定は起動時に行われるため、再起動が必要です*3。再起動後に、以下のコマンドでどのポートが利用されているかを確認することができます。

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100021    1   udp  49153  nlockmgr
    100021    3   udp  49153  nlockmgr
    100021    4   udp  49153  nlockmgr
    100021    1   tcp  49153  nlockmgr
    100021    3   tcp  49153  nlockmgr
    100021    4   tcp  49153  nlockmgr
    100024    1   udp  49152  status
    100024    1   tcp  49152  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100005    1   udp  49154  mountd
    100005    1   tcp  49154  mountd
    100005    2   udp  49154  mountd
    100005    2   tcp  49154  mountd
    100005    3   udp  49154  mountd
    100005    3   tcp  49154  mountd

参考

*3 : nfs-user-serverではどうだかわかりません

samba経由で別のnfsサーバの公開領域に書き込みができるようにする

2010/02/26PC::Linux/BSD

sambaファイルサーバに、別のnfsサーバが公開している領域をマウントさせ、その領域をsamba経由で公開する場合のメモ。

環境

sambaサーバ

  • Debian GNU/Linux 4.0/i386
    • samba 3.0.24-6etch10

nfsサーバ

  • Debian GNU/Linux 5.0/i386
    • nfs-kernel-server 1.1.2-6lenny1

samba側サーバのnfs領域公開設定

NFSのマウント設定は別記事の設定を参照

/etc/samba/smb.conf

[nfs-srv]
            path = /mnt/nfs/nfs-srv
            writable = yes
            create mask = 0660
            directory mask = 0770
            guest ok = no

この状態で使ってみる

この状態でWindowsクライアントからファイルを書き込もうとすると、以下のエラーが発生します。

smb_error.jpg

クライアントの挙動として、以下のようになります。

  • nfs公開ファイルの読み込み: 問題なし
  • nfs公開領域へのフォルダ作成: 問題なし
  • nfs公開領域へファイル書き込み: エラー発生

対処方法

/etc/samba/smb.confのglobalセクションに以下を追加します。

kernel oplocks = no

kernel oplocks

カーネルoplocks をサポートしているUNIX(現在はIRIXとLinux 2.4カーネルのみ)の場合、 このパラメータにより oplock の利用を制御できる。

カーネル oplocks のサポートにより、 smbd(8) が oplock を行ったファイルに対して、 ローカルな UNIX プロセスや NFS 経由でのアクセスがあった際に、 Sambaが oplocks を破棄することが可能となる。 これにより、 SMB/CIFS と NFS やローカルファイルアクセスとの間の完全な一貫性が確保される (これは非常に素晴らしいことである :-)。

このパラメータのデフォルト値は、 on であるが、 カーネルがこの機能をサポートしていないシステムでは、自動的に無効にされる。 このパラメータを変更する必要はないであろう。

デフォルト:
kernel oplocks = yes

smb.conf(5)

ちなみに、共有セクションにoplocks = noと記述しても問題は解決されませんでした。