Mac で Wine を使うには、まあ普通に公式の MacOSX からビルド済みバイナリをインストールしたほうが早いのだけれど、どうしてもソースからビルドしないといけない場合のビルドの仕方をメモ。
環境は
- Mac OS X 10.10.5
- Xcode 7.2 Build version 7C68
- Homebrew 0.9.5 (git revision 4b1da8; last commit 2016-01-30)
- Wine 1.9.2
まずは結論から、MacOSX のページに書かれていることをそのままやれば、問題なくビルドが通りました。
最初、途中の手順を抜かしてしまいうまくいかなくて、Build Wine the Scripted Way に書かれているスクリプトを試してみたけど、結果から言うと、そのスクリプトは埋め込まれている内容が古いのと途中で失敗したので使わないほうが吉、のようです。 あと、Google code にホスティングされているのでもはや更新されない、ってのもある。
ビルド方法
Xcode と XQuartz がインストール済みの場合は
$ brew install --only-dependencies --devel wine
$ wget http://dl.winehq.org/wine/source/1.9/wine-1.9.2.tar.bz2
$ tar xf wine-1.9.2.tar.bz2
$ cd wine-1.9.2
$ ./configure CC="clang" CXX="clang++" CFLAGS="-std=gnu89 -g"
$ make
と、こんな感じで、30分から40分ぐらいでビルドができます。
では、順番に
1. Xcode をインストール
まずはこれがないと始まらない
2. Homebrew をインストール&アップデート
Homebrew をインストールします。
すでにインストール済みの場合、brew update
で更新しておいたほうがいいと思います。
そうしないと
$ brew install --only-dependencies --devel wine
:
==> Installing wine dependency: libpng
==> Downloading https://downloads.sf.net/project/libpng/libpng16/1.6.16/libpng-1.6.16.tar.xz
curl: (22) The requested URL returned error: 404 Not Found
Error: Failed to download resource "libpng"
Download failed: https://downloads.sf.net/project/libpng/libpng16/1.6.16/libpng-1.6.16.tar.xz
みたいな感じになることがあります。
3. XQuartz をインストール
XQuartz からパッケージをダウンロードしてインストールすればいいと思う。
Homebrew の場合は
$ brew install caskroom/cask/xquartz
でインストールできる。
なんかおかしかったら再インストールをすれば直る、って書いてある。
4. 依存関係をインストール
Dependencies に書かれている通りにやればOK。
例によって Homebrew の場合は brew install --only-dependencies --devel wine
でOK。
$ brew install --only-dependencies --devel wine
==> Installing dependencies for wine: libtasn1, gmp, nettle, gnutls, libpng, freetype, jpeg, libtool, libusb, libusb-compat, font
==> Installing wine dependency: libtasn1
:
5. Wine のソースのダウンロードと展開
Wine Announcement のリンクから tar ball の URL をコピーしてソースをダウンロード。
(なんか、ゲートウエイの調子が悪い時があるようなので、リトライするかミラーからダウンロードしたほうがいいかもしれない)
そして、ダウンロードしたファイルを
$ wget http://dl.winehq.org/wine/source/1.9/wine-1.9.2.tar.bz2
$ tar xf wine-1.9.2.tar.bz2
$ cd wine-1.9.2
このように展開する。
6. コンフィグ&ビルド
やり方は Building from Source の通りに ./configure CC="clang" CXX="clang++" CFLAGS="-std=gnu89 -g" ; make
するだけ。
$ ./configure CC="clang" CXX="clang++" CFLAGS="-std=gnu89 -g"
checking build system type... x86_64-apple-darwin14.5.0
checking host system type... x86_64-apple-darwin14.5.0
:
configure: Finished. Do 'make' to compile Wine.
$ make
clang -m32 -c -o ffs.o ffs.c -I. -I../../include ...
:
Wine build complete.
7. ビルドした Wine の実行
ドキュメントにも書いてありますが make install
はせずに、ビルドした場所で実行します。
$ ./wine explorer.exe
のような感じ。
すでにパッケージなどで Wine をインストールしている場合は、
$ WINEPREFIX=`pwd`/wine-env ./wine explorer.exe
wine: created the configuration directory '~/wine-1.9.2/wine-env'
:
wine: configuration in '~/wine-1.9.2/wine-env' has been updated
のような感じで独自の環境を作ったほうがいいかもしれない。
なお、 X11/XQuartz 関連でエラーが出た場合は DYLD_FALLBACK_LIBRARY_PATH="${DYLD_FALLBACK_LIBRARY_PATH}:/usr/X11/lib" wine program_name.exe
のような感じで回避できるようです。
おまけ:ソースファイルの検証
きっと、ほとんどの場合は、tar ball をダウンロードしてそのまま使うと思うけど、シグネチャも公開されているので、せっかくだからダウンロードしたファイルの検証をしてみる。
検証には GnuPG を使います。
$ gpg
-bash: gpg: command not found
$ brew install gpg
==> Downloading https://homebrew.bintray.com/bottles/gnupg-1.4.20.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring gnupg-1.4.20.yosemite.bottle.tar.gz
* /usr/local/Cellar/gnupg/1.4.20: 53 files, 5.4M
が、インストールされていなかったので Homebrew でサクッとインストール。
$ wget http://dl.winehq.org/wine/source/1.9/wine-1.9.2.tar.bz2.sign
シグネチャを Index of /wine/source/1.9 から探し、ダウンロードして検証。
$ gpg --verify wine-1.9.2.tar.bz2.sign
gpg: assuming signed data in `wine-1.9.2.tar.bz2'
gpg: Signature made Fri Jan 22 23:29:08 2016 JST using RSA key ID AF17519D
gpg: Can't check signature: public key not found
公開鍵がない!って怒られる。
Wine のメーリングリストの [Wine] Using .sign PGP/GnuPGP/gpg のポストによると、どうやら "Alexandre Julliard <julliard at winehq.org>"
さんの鍵で署名してあるらしいので探してインポートする。
using RSA key ID AF17519D
って書かれているのでそれを探せばいいか、と思ったけどファイルの検証をするのにシグネチャの情報を信じてはダメですよね。
公式ページのどこかに、署名はどのキーでしてあるとか書いていないのだろうか?
$ gpg --search-keys "julliard@winehq.org"
gpg: searching for "julliard@winehq.org" from hkp server keys.gnupg.net
(1) Alexandre Julliard <julliard@winehq.org>
4096 bit RSA key AF17519D, created: 2015-11-03
(2) Alexandre Julliard <julliard@winehq.org>
1024 bit DSA key B9461DD7, created: 2004-10-07
Keys 1-2 of 2 for "julliard@winehq.org". Enter number(s), N)ext, or Q)uit > q
$ gpg --recv-keys AF17519D
gpg: requesting key AF17519D from hkp server keys.gnupg.net
gpg: key AF17519D: public key "Alexandre Julliard <julliard@winehq.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
鍵の種類が2種類あるらしいので新しいほうの 4096 bit RSA key
の AF17519D
を選択してインポートする。
そして検証。
$ gpg --verify wine-1.9.2.tar.bz2.sign
gpg: assuming signed data in `wine-1.9.2.tar.bz2'
gpg: Signature made Fri Jan 22 23:29:08 2016 JST using RSA key ID AF17519D
gpg: Good signature from "Alexandre Julliard <julliard@winehq.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: DA23 579A 74D4 AD9A F9D3 F945 CEFA C8EA AF17 519D
Good signature
と表示されればOKです。
何かおかしければ、BAD signature
と表示されます。
ということで、まとめると
$ gpg --recv-keys AF17519D
$ wget http://dl.winehq.org/wine/source/1.9/wine-1.9.2.tar.bz2
$ wget http://dl.winehq.org/wine/source/1.9/wine-1.9.2.tar.bz2.sign
$ gpg --verify wine-1.9.2.tar.bz2.sign 2>&1 | grep "Good signature"
gpg: Good signature from "Alexandre Julliard <julliard@winehq.org>"
こんな感じです。