CentOS 7で32bit版Wineをビルドする方法
最終更新日:2016/06/30
CentOS 7で32bit版Wineをビルドする方法について説明します(最終更新:2016年6月30日)。
スポンサーリンク
はじめに
CentOS 7ではEPELリポジトリからWineをインストールすることができます。しかし、これは64bit版のWineであり、WindowsのEXEファイルも64bitのものしか実行できません。32bit版のパッケージは現状用意されていないため、自分でビルドするしか方法はありません(そのうちi686パッケージとして用意されるかもしれませんが…)。
そこで調べまくって、ようやくたどり着いたのが以下のページ(英語)です。
”HOWTO build wine 32bit on CentOS 7”が最初に書かれたページで、下のCentOS 7.1のページはそれを元に書かれています。実際に試して32bitのEXEファイルを実行できるところまで確認できました。ただし、説明で指定されているバージョンのソースコード(src.rpm)が現状手に入らないため、自分なりに手直しして対応しました。
と言うことで、本記事投稿時点の32bit版Wineのビルド方法をまとめたのが本記事になります。
その前に注意点があります。EPELリポジトリからインストールしたWineと本記事でビルドするWineは競合します。そのため、2つを混在できません。したがって、本記事のビルドを試す前にEPEL版のWineは完全に削除する必要があります。
一応混在できないかどうかも調べたのですが、ファイル名やパッケージが競合してしまうため無理でした。どうしても32bitと64bitのEXEファイルを実行できる環境を作りたければ、Ubuntuで試してみて下さい。”sudo apt-get install wine”と実行するだけで作ることができます。
それでも良ければ、本記事のビルド方法を試してみて下さい。なお、viエディタを使用するため、viの使い方の知識が必要になります。
開発環境構築
最初にスクリプトファイルをダウンロードします。
上記ページから”rpmrebuild.gz”ファイルをダウンロードして下さい。これは今回のビルドで使用するスクリプトコマンドです。
ページのStep 4と書かれた箇所にファイルのリンクがあります(画像の赤枠で囲った箇所)。ダウンロードしたらCentOS側に転送します。以降は全てrootユーザーで行って下さい。
# gunzip rpmrebuild.gz # chmod a+x rpmrebuild # mv rpmrebuild /usr/local/bin
ビルドに必要なパッケージをインストールします。
# yum -y install glibc-devel libstdc++-devel icoutils openal-soft-devel \ prelink gstreamer-plugins-base-devel gstreamer-devel ImageMagick-devel \ fontpackages-devel libv4l-devel gsm-devel giflib-devel libXxf86dga-devel \ mesa-libOSMesa-devel isdn4k-utils-devel libgphoto2-devel fontforge \ libusb-devel lcms2-devel audiofile-devel wget cmake
続いて、ビルドに必要な32bit版のパッケージをインストールします。
# yum -y install glibc-devel.i686 dbus-devel.i686 freetype-devel.i686 \ pulseaudio-libs-devel.i686 libX11-devel.i686 mesa-libGLU-devel.i686 \ libICE-devel.i686 libXext-devel.i686 libXcursor-devel.i686 \ libXi-devel.i686 libXxf86vm-devel.i686 libXrender-devel.i686 \ libXinerama-devel.i686 libXcomposite-devel.i686 libXrandr-devel.i686 \ mesa-libGL-devel.i686 mesa-libOSMesa-devel.i686 libxml2-devel.i686 \ libxslt-devel.i686 zlib-devel.i686 gnutls-devel.i686 ncurses-devel.i686 \ sane-backends-devel.i686 libv4l-devel.i686 libgphoto2-devel.i686 \ libexif-devel.i686 lcms2-devel.i686 gettext-devel.i686 \ isdn4k-utils-devel.i686 cups-devel.i686 fontconfig-devel.i686 \ gsm-devel.i686 libjpeg-turbo-devel.i686 pkgconfig.i686 libtiff-devel.i686 \ unixODBC.i686 openldap-devel.i686 alsa-lib-devel.i686 audiofile-devel.i686 \ freeglut-devel.i686 giflib-devel.i686 gstreamer-devel.i686 \ gstreamer-plugins-base-devel.i686 libXmu-devel.i686 libXxf86dga-devel.i686 \ libieee1284-devel.i686 libpng-devel.i686 librsvg2-devel.i686 \ libstdc++-devel.i686 libusb-devel.i686 unixODBC-devel.i686 qt-devel.i686
ビルド用のツールをインストールします。
# yum -y groupinstall "Development Tools"
32bitパッケージのビルド&インストール
32bit版のWineに必要なパッケージをビルド及びインストールしていきます。
chrpath
# wget http://vault.centos.org/7.1.1503/os/Source/SPackages/chrpath-0.13-14.el7.src.rpm # linux32 rpmrebuild chrpath-0.13-14.el7.src.rpm # yum remove chrpath ※ 競合回避のため64bit版のchrpathを削除しますが、 インストールしてなければ何も問題ありません # yum -y localinstall ~/rpmbuild/RPMS/i686/chrpath-0.13-14.el7.centos.i686.rpm
openal-soft
# wget http://dl.fedoraproject.org/pub/epel/7/SRPMS/o/openal-soft-1.16.0-3.el7.src.rpm # linux32 rpmrebuild -e openal-soft-1.16.0-3.el7.src.rpm ここでviエディタが起動するので、SPECファイルを編集します。 下記の左端は行番号です(viではキー入力":set nu"で表示)。 12 BuildRequires: alsa-lib-devel 13 BuildRequires: pulseaudio-libs-devel 14 BuildRequires: portaudio-devel 15 BuildRequires: cmake 16 BuildRequires: qt-devel 14行目の"BuildRequires: portaudio-devel"を削除、保存して閉じます。 (キー入力":wq" で抜けます) ファイルを閉じるとビルドが始まります。 # yum -y localinstall ~/rpmbuild/RPMS/i686/openal-soft{,-devel}-1.16.0-3.el7.centos.i686.rpm # mkdir ~/winerpm ※ これは作成したrpmファイルをまとめて保存するためのディレクトリです。 # cp ~/rpmbuild/RPMS/i686/openal-soft-1.16.0-3.el7.centos.i686.rpm ~/winerpm/
nss-mdns
# wget http://dl.fedoraproject.org/pub/epel/7/SRPMS/n/nss-mdns-0.10-12.el7.src.rpm # linux32 rpmrebuild nss-mdns-0.10-12.el7.src.rpm # cp ~/rpmbuild/RPMS/i686/nss-mdns-0.10-12.el7.centos.i686.rpm ~/winerpm/
Wineのビルド&インストール
ソースコードをダウンロードしてWineをビルドします。
# wget http://dl.fedoraproject.org/pub/epel/7/SRPMS/w/wine-1.8.2-1.el7.src.rpm # linux32 rpmrebuild -e wine-1.8.2-1.el7.src.rpm viエディタが起動するのでSPECファイルを編集します。 以下の指示に従って変更して下さい。 111 BuildRequires: libpcap-devel → 111行目、先頭に#を付けてコメントアウト 181 # x86-64 parts 182 %ifarch x86_64 183 Requires: wine-core(x86-64) = %{version}-%{release} 184 Requires: wine-capi(x86-64) = %{version}-%{release} 185 Requires: wine-cms(x86-64) = %{version}-%{release} 186 Requires: wine-ldap(x86-64) = %{version}-%{release} 187 Requires: wine-twain(x86-64) = %{version}-%{release} 188 Requires: wine-pulseaudio(x86-64) = %{version}-%{release} 189 %if 0%{?fedora} >= 10 || 0%{?rhel} >= 6 190 Requires: wine-openal(x86-64) = %{version}-%{release} 191 %endif → 190行目、x86-64をx86-32に置換 678 export CFLAGS="`echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//'` -Wno-error" 679 680 %configure \ → 679行目に下記を記述 sed -i '/winegcc/s/-o /-m32 &/' tools/makedep.c 1621 %{_libdir}/wine/wnaspi32.dll.so 1622 %{_libdir}/wine/wpcap.dll.so 1623 %{_libdir}/wine/ws2_32.dll.so → 1622行目を削除
以上でビルドは完了です。引き続きインストールします。
# cp ~/rpmbuild/RPMS/*/* ~/winerpm/ # rm ~/winerpm/wine-debuginfo-1.8.2-1.el7.centos.i686.rpm # cd ~/winerpm/ # yum -y localinstall *.rpm
この状態でDOSコマンドは使用可能です。
# wine cmd 以下の様にコマンドプロンプトが表示されれば成功です。 Microsoft Windows 5.1.2600 (1.8.2) Z:\root>
フォントなどのインストールが必要な場合、”Howto build wine 32 on 64 bit only Scientific Linux 7.1”のExtra Stuffの項目に手順が書かれています。