Wine prefix について
Wine は、Linux 上で Windows 環境を構築するために、任意のディレクトリ下に、Windows の c:\ に相当するディレクトリや、各種ファイルを作成します。
このディレクトリは Wine prefix と呼ばれ、ここには、一つの Windows 環境が構築されているのと同じ状態になります。
このディレクトリは Wine prefix と呼ばれ、ここには、一つの Windows 環境が構築されているのと同じ状態になります。
[Wine prefix] |- .update-timestamp # Wine prefix 更新用のタイムスタンプ |- *.reg # レジストリファイル |- drive_c/ # c:\ に相当するディレクトリ |- dosdevices/ # 各ドライブに相当するディレクトリへのリンク
Wine prefix の場所
Wine prefix の場所は、デフォルトで ~/.wine となっています。
Wine 関連の実行時に、Wine prefix を任意の場所に指定したい場合は、環境変数 WINEPREFIX にディレクトリパスを指定して、実行します。
Wine 関連の実行時に、Wine prefix を任意の場所に指定したい場合は、環境変数 WINEPREFIX にディレクトリパスを指定して、実行します。
env コマンドで指定
Wine を実行する時、そのコマンドでのみ一時的に WINEPREFIX を設定したい場合は、以下のように、先頭に "env WINEPREFIX=..." を付けて実行します。
env コマンドは、引数で指定された複数の環境変数を一時的に設定して、その後に続くコマンドを実行します。
$ env WINEPREFIX=~/winedir wine ...
env コマンドは、引数で指定された複数の環境変数を一時的に設定して、その後に続くコマンドを実行します。
.bashrc で指定する (Bash の場合)
シェルに Bash を使っていて、すべての端末で同じ WINEPREFIX を設定したい場合は、~/.bashrc 内に "export WINEPREFIX=..." を記述してください。
export コマンドは、環境変数を定義します。
※ .bashrc は端末の起動時に読み込まれるので、ファイルを編集した後、実際に適用させたい場合は、端末を再起動してください。
... export WINEPREFIX=~/wine32 ...
export コマンドは、環境変数を定義します。
※ .bashrc は端末の起動時に読み込まれるので、ファイルを編集した後、実際に適用させたい場合は、端末を再起動してください。
Wine prefix の作成
wine 関連のコマンドを実行した時、Wine prefix の状態は常にチェックされ、必要であれば、自動で作成や更新の処理が行われます。
Wine prefix が存在しない状態で、Wine prefix の作成だけを行いたい場合は、以下のコマンドを実行します。
wineboot は、Windows の起動やシャットダウンに相当する処理を行います。
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 を設定して、実行します。
そのため、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 の更新処理も早くなるかもしれません。
64bit OS の Windows でも、32bit のソフトが実行できるのと同じで、64bit 環境の Wine で 32bit のソフトを実行しても、あまり問題になることはありません。
※問題が出るようなら、32bit 環境にしてください。
なお、32bit 環境よりも 64bit 環境の方が、Wine prefix 上で作成されるファイルが多いので、32bit のソフトしか実行しないのであれば、32bit にしておいた方が、ファイルの使用容量も減り、Wine prefix の更新処理も早くなるかもしれません。
Wine prefix の更新について
Wine のバージョンが上がったりすると、その度に、自動で Wine prefix の更新が行われます。
Wine prefix の更新が必要な理由は、Wine prefix 下に作成されたファイルにあります。
Wine prefix には、Wine が独自に作成した dll ファイルなどが置かれています。
Wine のバージョンが変わった時は、それらのファイルを、現在のバージョンのものに合わせる必要があるので、ファイルが再度コピーされることになります。
なお、タイムスタンプに関係なく、強制的に更新したい場合や、dll ファイルを Wine の元のファイルに戻したいといった場合は、以下のコマンドを実行します。
wineboot で -u,--update オプションを指定すると、強制的に Wine prefix を更新します。
更新のタイミングは、おそらく、Wine prefix 内の .update-timestamp ファイルの中身のタイムスタンプが、Wine の実行ファイルの更新日時と異なった時だと思われます。
.update-timestamp の中身の数値を、UNIX 時間 (GMT 時間 1970/01/01 00:00:00 からの秒数) として日時を取得すると、/usr/bin/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 を更新します。