Unix系サーバで動かすプログラムの開発をWindows上で行う場合などには、Unix系で動くツール・ミドルウェアをWindowsに入れる必要が出てくることもあります。幸い、最近は「Windows用がない」ということも減ってはきています。それどころか、Windows用にインストーラまで用意してくれていることもあります。
Program Filesの誘惑
もちろん、適切なフォルダにインストールしてくれる親切なインストーラもあります。ただ、ものによってはデフォルト設定でc:\Program Files
をインストール先に指定しているものもあります。
もちろん、それでなんの問題もなく動くツールもあるとは思います。ただ、以下に2つ示すような、「抱え込まなくてもいい厄介事」を惹起してしまうケースもありますし、逆に個人マシンで使う分には「Program Filesにインストールするメリット」も特段あるわけではなさそうなので、基本的には別な場所に入れたほうがいいでしょう。
起きうるトラブル
スペース入りディレクトリ
見ての通り、「Program Files」にはスペースが入っています。ツールによっては、スペースが入ったパスに入れると正常に動作しないものもあります1。
もちろん、第一義的にはそれぞれのツールのバグであることは間違いありません。ただ、Unix系でスペース入りのディレクトリがあまり多くないのか、うまく動かないツールは数多く遭遇します。そして、ツールを入れるディレクトリは比較的選択の自由がありますので、「スペースを含まないディレクトリにインストールする」という、バグを回避するために必要なコストは、バグを踏んでしまうリスクと比べれば、本当に微々たるものです。
UACの介入
これはちょうど最近遭遇したケースですが、Windows用のRedisを、Program Files以下にインストールしていました。そして、Windowsではフォークがうまくできない加減でディスクへの保存に失敗して、MISCONFエラーを吐いていました。
特段保存を要するような用途ではなかったので、テキストエディタで設定ファイルを書き換えて、再起動したりもしましたが、依然として同じエラーが出続けます。エラーが出るまで数時間は動くので、エラーが出たら再起動するなどだましだまし使っていましたが、やっぱり不便なことには変わりありませんでした。
そんなある日のこと、ふと気づいて「管理者として実行」したテキストエディタで設定ファイルを見てみると、なんと書き換わっていないままでした。そこで改めて保存機能を無効にすると、今まで悩まされていたエラーが、全く出なくなりました。
Program Files以下では、UACによって管理者権限のないプログラムによる書き込みが乗っ取られ、変更は別なところに保存されてしまいます。もちろん管理者実行で回避はできるのですが、最初から別な場所に入れておけばそんな心配もないわけです。
-
データファイルをスペース入りのフォルダに作ったらうまく動かず、別な場所に移動させるはめになったこともあります。 ↩