Wine prefix について

Wine prefix について
Wine は、Linux 上で Windows 環境を構築するために、任意のディレクトリ下に、Windows の c:\ に相当するディレクトリや、各種ファイルを作成します。

このディレクトリは Wine prefix と呼ばれ、ここには、一つの Windows 環境が構築されているのと同じ状態になります。

[Wine prefix]
  |- .update-timestamp # Wine prefix 更新用のタイムスタンプ
  |- *.reg # レジストリファイル
  |- drive_c/    # c:\ に相当するディレクトリ
  |- dosdevices/ # 各ドライブに相当するディレクトリへのリンク
Wine prefix の場所
Wine prefix の場所は、デフォルトで ~/.wine となっています。

Wine 関連の実行時に、Wine prefix を任意の場所に指定したい場合は、環境変数 WINEPREFIX にディレクトリパスを指定して、実行します。
env コマンドで指定
Wine を実行する時、そのコマンドでのみ一時的に WINEPREFIX を設定したい場合は、以下のように、先頭に "env WINEPREFIX=..." を付けて実行します。

$ env WINEPREFIX=~/winedir wine ...

env コマンドは、引数で指定された複数の環境変数を一時的に設定して、その後に続くコマンドを実行します。
.bashrc で指定する (Bash の場合)
シェルに Bash を使っていて、すべての端末で同じ WINEPREFIX を設定したい場合は、~/.bashrc 内に "export WINEPREFIX=..." を記述してください。

...
export WINEPREFIX=~/wine32
...

export コマンドは、環境変数を定義します。

※ .bashrc は端末の起動時に読み込まれるので、ファイルを編集した後、実際に適用させたい場合は、端末を再起動してください。
Wine prefix の作成
wine 関連のコマンドを実行した時、Wine prefix の状態は常にチェックされ、必要であれば、自動で作成や更新の処理が行われます。

Wine prefix が存在しない状態で、Wine prefix の作成だけを行いたい場合は、以下のコマンドを実行します。

$ wineboot

wineboot は、Windows の起動やシャットダウンに相当する処理を行います。
32bit/64bit 環境
Windows 上では、32bit OS と 64bit OS の環境では、ディレクトリ構成が少し異なります。
そのため、Wine においても、各環境に合わせた Wine prefix を作成する必要があります。

Wine では、32bit/64bit のどちらの環境で実行するかを選択することができます (64bit 環境の Linux の場合のみ)。
64bit Linux では、デフォルトで 64bit 環境になります。

32bit の Windows 環境で実行したい場合は、環境変数 WINEARCH=win32 を設定して、実行します。

32bit 用の Windows ソフトを実行する際は、必ず 32bit 環境にしなければならない、というわけではありません。
64bit OS の Windows でも、32bit のソフトが実行できるのと同じで、64bit 環境の Wine で 32bit のソフトを実行しても、あまり問題になることはありません。
※問題が出るようなら、32bit 環境にしてください。

なお、32bit 環境よりも 64bit 環境の方が、Wine prefix 上で作成されるファイルが多いので、32bit のソフトしか実行しないのであれば、32bit にしておいた方が、ファイルの使用容量も減り、Wine prefix の更新処理も早くなるかもしれません。
Wine prefix の更新について
Wine のバージョンが上がったりすると、その度に、自動で Wine prefix の更新が行われます。

更新のタイミングは、おそらく、Wine prefix 内の .update-timestamp ファイルの中身のタイムスタンプが、Wine の実行ファイルの更新日時と異なった時だと思われます。

.update-timestamp の中身の数値を、UNIX 時間 (GMT 時間 1970/01/01 00:00:00 からの秒数) として日時を取得すると、/usr/bin/wine のファイルの更新日時と一致しました。

Wine prefix の更新が必要な理由は、Wine prefix 下に作成されたファイルにあります。

Wine prefix には、Wine が独自に作成した dll ファイルなどが置かれています。
Wine のバージョンが変わった時は、それらのファイルを、現在のバージョンのものに合わせる必要があるので、ファイルが再度コピーされることになります。

なお、タイムスタンプに関係なく、強制的に更新したい場合や、dll ファイルを Wine の元のファイルに戻したいといった場合は、以下のコマンドを実行します。

$ wineboot -u

wineboot で -u,--update オプションを指定すると、強制的に Wine prefix を更新します。