2015/07/08

Wine環境にパッケージを入れたり設定適用したりできるWinetricksとその使い方

本記事はWineを使う上で便利なWinetricksと呼ばれるツールについてを扱っている。

元の記事は2010年2月に書かれたが、ほとんどの内容を書き直し、GUIメニューについてなど新しい内容も書き加えている。

  1. Winetricksについて
    1. 機能
    2. 動作に必要なパッケージ
  2. ダウンロード
  3. Wine環境の扱い
  4. キャッシュのディレクトリ
  5. コマンドとしての使い方
    1. パッケージ名の一覧を取得
      1. 手動でファイルをダウンロードする必要があるパッケージを一覧
      2. インストール済みパッケージを一覧
    2. パッケージを指定してインストールや設定を行う
    3. インストーラを非対話的にする
  6. GUIメニューの使用
    1. 最上位のメニュー
    2. Wine環境選択後のメニュー
    3. 統計情報の送信について

Winetricksについて

WineでWindowsアプリケーションを動かす際には

  • 標準で用意されていないライブラリが追加で必要になる場合
  • 一部のWine版のライブラリの実装に問題があるがWindowsネイティブ版のDLLを代わりに使用することで問題回避が可能な場合
  • 特定のプログラムを正しく動かすためにWine専用のレジストリ設定を初期値から変更する必要がある場合

などがあり、こうした状況に対応する[1]ために役に立つWinetricksというツールがある。

GNU/Linux向けに作られているが、Mac OS XやCygwin(Windows上のPOSIX環境の実装の1つ)でも動作するとされる。

機能

  • Windowsネイティブ版のDLLをWine環境に配置(パッケージによってはインストーラが動作)した上で、(Wineの “DLLオーバーライド” 機能で)それらがWine版よりも優先して使用されるように設定する機能
  • 一部のアプリケーションやプラグイン、フォントなどもパッケージとしてインストール可能
  • 基本的にパッケージは自動的に一次配布元からダウンロードされるが、一部のパッケージでは手動で該当ファイルをWebブラウザでダウンロードした上で特定のディレクトリに配置してから実行する必要があったり、一部の商用ゲームなどのパッケージではそのディスクが必要[2]だったりする
  • Wine専用のレジストリ項目を用いた各種設定の変更をパッケージとして簡単に適用できる
  • 端末(やスクリプトなど)でパッケージ名を指定して実行する形とGUIメニューから操作する形の両方に対応
  • Wineのバージョンを検出して、報告済みのバグがそのバージョンで修正済みかどうかによって追加の問題回避処理などを行うかどうかを自動的に決定[3]

ツールの性質と構造の関係により、パッケージの削除に関する機能は提供されない。

動作に必要なパッケージ

Winetricksをディストリのパッケージとしてインストールする場合は以下のソフトウェアは自動的にインストールされる[4]が、そうでない場合は以下のパッケージがインストールされている必要がある。特に書庫の展開ツールは標準で入っていない場合があるので、入っているかを確認する。

  • Wine本体
    • 環境変数WINE[5]と(必要に応じて)LD_LIBRARY_PATH[6]を指定することで、標準の場所以外のWineも使用可
  • ダウンロードツール (wget, curl, aria2cのいずれか)
  • 書庫の展開ツール (unzip, cabextract, 7z, unrar)[7]

Winetricksの実行時にはWineが実行されるため、見出し:パッケージ名の一覧を取得するだけの場合であってもWine環境の作成や更新の処理が行われてしばらく時間がかかることがある。

以下はGNU/Linuxでは特に追加でインストールする必要のないもの。

  • Bシェル
  • ダイジェストのチェック用ツール (coreutilsのsha1sumもしくはOpenSSLのopenssl)

これらに加えて、一部のパッケージではsudoが使われることがある。また、引数を指定して端末やスクリプトから実行するのではなくGUIメニューから操作を行う場合はzenityも必要。[8]

ダウンロード

ディストリのパッケージになっている場合があり、Debian/Ubuntuなどでは “winetricks” というパッケージ名でインストールできるが、最新バージョンではない場合がある。

本家からダウンロードする場合はプロジェクトページ以下にある

などから入手する。

Wine環境の扱い

WindowsのDLLやWineの設定などのパッケージは

上記記事で扱ったWine環境のディレクトリを対象としてインストール(適用)されるが、アプリケーションのパッケージをインストールする場合は個別に

  • 環境変数WINE_PREFIXESが定義済みの場合: ${WINE_PREFIXES}/wineprefixes/
  • 同環境変数が未定義かつXDG_DATA_HOMEが定義済みの場合: ${XDG_DATA_HOME}/wineprefixes/
  • いずれも未定義の場合: [ホームディレクトリ]/.local/share/wineprefixes/

のディレクトリ以下にパッケージごとの専用のWine環境が作成される。

Winetricksでインストールされたアプリケーションを削除するにはそのWine環境のディレクトリごと削除すればよい。

キャッシュのディレクトリ

自動的にファイルがダウンロードされるパッケージでは、一度ダウンロードされたファイルが

  • 環境変数XDG_CACHE_HOMEが未定義の場合: [ホームディレクトリ]/.cache/winetricks/
  • 環境変数XDG_CACHE_HOMEが定義済みの場合: ${XDG_CACHE_HOME}/winetricks/

の下のパッケージ名ごとのディレクトリへ保存される。

XDG_CACHE_HOMEをtmpfsのファイルシステム内(/dev/shm/の中など)にしている場合は次の起動時にはダウンロードしたファイルが無くなってしまうため、Winetricks使用時にのみこの値を同ツールのキャッシュ保存用のディレクトリにすることを推奨する。[9]

(XDG_CACHE_HOMEがtmpfsファイルシステム内の場合における実行例)
$ XDG_CACHE_HOME=/path/to/cachedir winetricks ...

コマンドとしての使い方

パッケージ名の一覧を取得

一覧の生成には少し時間がかかる。一覧内に “downloadable” とあるものは自動的にダウンロードが行われる。

(全パッケージの一覧・lessで参照)
$ winetricks list-all | less

(全パッケージの一覧・GUIで参照)
$ winetricks list-all | zenity --text-info --title "全パッケージ名の一覧"

(DLLの一覧・lessで参照)
$ winetricks dlls list | less

(DLLの一覧・GUIで参照)
$ winetricks dlls list | zenity --text-info --title "DLLのパッケージ名の一覧"

(フォントの一覧・lessで参照)
$ winetricks fonts list | less

(フォントの一覧・GUIで参照)
$ winetricks fonts list | zenity --text-info --title "フォントのパッケージ名の一覧"

上に挙げた以外にも1つ目(“list” の1つ前)の引数を

  • apps (アプリケーション)
  • benchmarks (ベンチマークソフト)
  • games (ゲーム)
  • settings (設定適用を行うパッケージ)

とすることで、それぞれの種類ごとの一覧が得られる。

手動でファイルをダウンロードする必要があるパッケージを一覧

一部パッケージは手動で指定Webページからファイルをダウンロードして見出し:キャッシュのディレクトリ内のパッケージ名のディレクトリへ配置する必要がある。その際のWebページは別途起動されるWebブラウザで、配置するディレクトリはGUIファイルマネージャで自動的に開かれるが、どのアプリケーションで開かれるかは(Wineではなく)手元のOSのパッケージのインストール状況などによる。

下を実行すると手動ダウンロードが必要なパッケージ名が一覧できる。

(手動ダウンロードが必要なパッケージ一覧・lessで参照)
$ winetricks list-manual-download

(手動ダウンロードが必要なパッケージ一覧・GUIで参照)
$ winetricks list-manual-download | zenity --text-info --title "手動ダウンロードが必要なパッケージ名"

インストール済みパッケージを一覧

下を実行するとインストール済みのパッケージが一覧できる。1つもない場合は何も表示されない。

(インストール済みパッケージ一覧・lessで参照)
$ winetricks list-installed

(インストール済みパッケージ一覧・GUIで参照)
$ winetricks list-installed | zenity --text-info --title "インストール済みのパッケージ名"

WINE_PREFIXESWINEPREFIXといった環境変数が出力結果に反映される点には注意が必要。

パッケージを指定してインストールや設定を行う

引数にインストールしたいパッケージ名を並べて実行すると、それらがインストールされる。

$ winetricks [パッケージ名...]

インストーラを非対話的にする

インストーラを実行してインストールするパッケージではインストーラを手動で操作して作業を進めていくが、非対話的に進める[10]ためのオプション指定に対応しているインストーラもあり、Winetricks-q(--unattended)オプションを付けることでパッケージによっては非対話的にインストール作業ができるようになる。[11]ただ、パッケージによってはファイルの展開処理の進捗状況ダイアログが表示されたりすることはある。

(インストーラを非対話的に実行してインストール)
$ winetricks -q [パッケージ名...]

GUIメニューの使用

zenityがインストールされている状態で引数を付けずにWinetricksを実行すると、ラジオボタンの選択肢を選択して “OK” か “キャンセル” ボタンを押す形で操作するGUIメニューが表示される。

“OK” ボタンを押すと項目を選択して次のメニュー階層へ進み、 “キャンセル” ボタンを押すと手前のメニュー階層に戻る。

最上位のメニュー

下は最上位の階層のメニュー。ここで “キャンセル” を押すと終了する。

項目説明
View helpWebブラウザでヘルプを参照
Install an app専用のWine環境を作成してアプリケーションをインストール
Install a benchmark同様にベンチマークソフトをインストール
Install a game同様にゲームをインストール
Select the default wineprefix操作対象のWine環境を環境変数WINEPREFIX(未定義の場合は[ホームディレクトリ]/.wine/)にして次のメニューへ
(Select [Wine環境])操作対象のWine環境を項目のものにして次のメニューへ
Enable(Disable) silent installインストーラを非対話的にする(しない)
Show(Hide) broken appsWine上の動作に問題のあるアプリケーションを表示(隠す)

Wine環境の選択に関する項目は、アプリケーションがインストールされたWine環境がある分だけ表示される。

Wine環境選択後のメニュー

Wine環境のいずれかを選択すると下のメニューになり、その環境に対しての操作が行える。ダイアログのタイトルにはWine環境の場所が表示される。

項目説明
Install a Windows DLL or componentWindowsネイティブのDLLなどをインストール
Install a fontフォントをインストール
Change settingsWineの設定を変更する
Run winecfgwinecfgを実行
Run regeditレジストリ エディタを実行
Run taskmgrタスク マネージャを実行
Run a commandline shellWine環境内で端末のシェルを実行
Browse filesファイルマネージャでWine環境の最上位ディレクトリを開く
Delete ALL DATA AND APPLICATIONS INSIDE THIS WINEPREFIXWine環境(最上位ディレクトリ)以下を全削除

統計情報の送信について

GUIメニューを使用すると、一度 “Would you like to help winetricks development by letting winetricks report statistics? You can turn reporting off at any time with the command 'winetricks –optout'” という質問が表示され、どのパッケージがインストールされた/ないかの統計情報の送信を行うかどうかが選択できる(希望しない場合は “いいえ” を選択する)。これは後で “winetricks --outin” を実行することで有効化したり “winetricks --outout” で無効化したりできる。

この設定は見出し:キャッシュのディレクトリの中のtrack_usageというファイルに保存され、このファイルがある限りは再度質問は出ない。

使用したバージョン:
  • Wine 1.6.2
  • Winetricks 20150706
[1]: つまりはWineを使う上での色々な問題を回避する
[2]: こうしたパッケージはそのままではインストールや動作に問題があるのを回避したり、Wineを用いたインストール作業を支援したりする
[3]: Winetricks使用時のバージョンに合わせて設定するため、Wineのバージョンが変わるとうまく動かないものが出る可能性があり、その場合は変更後のバージョンのWineと新しいWine環境で同じパッケージを入れ直すとよい
[4]: 少なくともDebian/Ubuntuでは依存パッケージとなっている
[5]: wineコマンドの場所
[6]: libwine.so.[数字]のあるディレクトリ
[7]: どれが使用されるかはインストール指定するパッケージによる
[8]: kdialogで一部機能を代替できる場合もあるが、こちらを推奨
[9]: DirectXの再頒布可能パッケージなど、ファイルサイズが大きくてかつ使用される機会の多いファイルもあり、こうしたファイルを繰り返しダウンロードするのは資源の無駄遣いになる上、インストール処理に時間が余分にかかってしまう
[10]: “サイレントインストール (silent installation)” や “無人インストール (unattended installation)"と呼ばれる形
[11]: 各パッケージのライセンスに同意するのが前提