*

CentOS 7で32bit版Wineをビルドする方法

  最終更新日:2016/06/30

Pocket

CentOS 7で32bit版Wineをビルドする方法

 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”ファイルをダウンロードして下さい。これは今回のビルドで使用するスクリプトコマンドです。

rpmrebuildスクリプト

rpmrebuildスクリプト

 ページの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の項目に手順が書かれています。