HOME / コンピュータTips / Solaris / コンパイル / Wine
Date: 2008/08/25 | | Tags: opensolaris Solaris Wine インストール コンパイル Windows Win32 Office
Wineは、UNIX上でWindowsのアプリケーションを動かすためのエミュレータである。
ちょうど、Windows上のCygwinににてるような目的であるが、Windowsのアプリはバイナリ公開であるものが大半なので、exeファイルをUNIX上で動かすのを目的にしている。
ようするにこれを使うと、OfficeなどがUNIX上で動くというわけであるが、実用になるのかは不明。
パッケージを作ったので、必要な人は使ってください。
普通にbz2を戻し、pkgadd -d ファイル名でインストールしてください。
※ここで配布するパッケージは、/opt/JPC/以下にインストールされます。
インストールが終わったら初期設定へ。
uname -a
SunOS xxxxxx 5.11 snv_xx i86pc i386 i86xpv
isainfo
amd64 i386
WineサイトからWineをダウンロードする。
blastwaveのWineHQが存在するのだが、いまいち、動かしかたがわからないので、手でコンパイルすることにする。
bzcat -dc wine-0.9.50.tar.bz2 | tar xvf -
下記の作業は1.0以降では必要ありません。どうやらいつの間にか取り込まれたようで・・・((私がパッチを送ったのではなくて、opensolarisのIRCでこーやったよと頑張ってパッチ当ててる人に言ったら、取り込んでくれたようです。めでたしめでたし・・・。))次へ
実は、sys/list_impl.hにstruct listがいつからか追加されており、Wine標準のinclude/wine/list.hのstruct listと当たってしまい、コンパイルがうまく通らない。
このようなエラーがでる
../include/wine/list.h:25: error: redefinition of `struct list'
そこで、下記のパッチを作ったので、それを当てて回避する。
たとえば、こんな感じで。
patch -p1 < fd.c.patch
tools/wineinstall
を実行。これでOK。
やることはソースからのインストールと同じであるが、tool/wineinstallを利用せず、下記のようにコンパイルする。
./configure \ --prefix=/opt/JPC gmake depend && gmake -j4
このbuildスクリプトを掲載
このままでは、/opt/JPCにインストールされてしまうので、泥縄であるが
mv /opt/JPC /opt/JPC.orig make install rm -rf ../install_root/ mkdir -p ../install_root/opt mv /opt/JPC ../install_root/opt/ mv /opt/JPC.orig /opt/JPC
ってな具合。
ここで ../install_rootにインストール後のイメージが出来ている。
cd ../install_root
prototypeを作成
pkgproto . | grep -v 'f none prototype'> prototype echo 'i pkginfo' >> prototype
pkginfoを作成
cat <<__END > pkginfo PKG=JPCwine NAME=wine - an Open Source implementation of the Windows API on top of X, OpenGL, and Unix. ARCH=i386 VERSION=1.1.3,REV=2008.08.25 CATEGORY=application
VENDOR=http://www.winehq.org packaged for pkglabo, JUSTPLAYER, co.,ltd. by Taki.
HOTLINE=http://pkglabo.justplayer.com/ EMAIL=pkgadmin [- at -] justplayer.com BASEDIR=/ __END
パッケージの作成
make_package.sh 01
まずはテスト
winecfg
まず最初は、ファイルダイアログを開いて操作すると、次のようなエラーが出て落ちる。
wine notepad.exe
err:iphlpapi:getNumWithOneHeader Unable to open '/proc/net/route' to count entries! err:iphlpapi:getRouteTable unimplemented! fixme:imm:ImmGetCompositionStringW Unhandled index 0x8 fixme:imm:ImmReleaseContext (10026, 7fca88b8): stub fixme:imm:ImmGetCompositionStringW Unhandled index 0x8 X Error of failed request: BadWindow (invalid Window parameter) Major opcode of failed request: 40 (X_TranslateCoords) Resource id in failed request: 0x4a00024 Serial number of failed request: 1493 Current serial number in output stream: 1493
じつは、英語だと動く。
env LANG=C LC_ALL=C wine notepad.exe
上記のことから、これは、インラインの問題でないかと想定できるので、色々ぐぐってみると、下記のようなサイトで問題が露呈している。
Solarisも、ここの部分に併せてパッチをあてればいいのかもしれないが、ライブラリまでパッチを当てるのは、いささか面倒すぎるので、設定変更で逃げる。
~/.wine/user.regを編集し、次を追加する。
[Software\\Wine\\X11 Driver] 1129995218 ;; "ClientSideAntiAliasWithRender"="N" ;; "InputStyle"="overthespot" "InputStyle"="root"
これにすると、なんとなく使うことが出来る。
ただし、日本語入力をたくさんやると、
err:keyboard:X11DRV_KeyEvent Buffer Overflow need 36!
さらに、謎のエラーが多発し、カーソルが変なところに出る。
fixme:imm:ImmGetCompositionStringW Unhandled index 0x8
惜しい。後もうすこし(笑
とりあえず、gnomeにインストールされているフォントはある程度認識しているようだが、デフォルトフォントにMS系のフォントが無いとさみしいことになる。
どっかのレジストリを変えると良いのだと思うのだが、フォントは次のようにインストールしておこう。
cp *.ttc ~/.wine/drive_c/windows/fonts/
ipaフォントを拾ってきて入れるか、Solaris/SXCE/SXDEなどの場合は、
/usr/openwin/lib/locale/ja/X11/fonts/TT/
から、SunのMincho/Gothicを入れてもいいかもしれません。
winecfgのdesktop integrationから選択します。
標準フォントは日本語フォントがあれば適当なのを使うかな。レジストリはどこを操作するのか忘れた・・・。
OpenSoundSystemが入っていれば、winecfgのOSSのチェックを入れる。入っていてもうまく動かないことがあるので、esdをblastwaveのpkg-getでインストールし、そこでesd経由にチェックをすると動くこともある。
これらの設定は、.wine/system.regや、.wine/user.regに入っているので、バックアップをとっておき、何が変わったか差分をとっておくと後で困らない。
基本的には
~/.wine/drive_c/Program Files/ ~/.wine/drive_c/WINDOWS/
以下に、ファイル一式をコピーできなくてはいけない。
そのまま、コピーすれば動く
日本語入力が、system lineになるのだが。
そのまま、コピーすれば動く。日本語入力がたしか怪しい。
なぜかすんなり動く。私はWORD使いじゃないのでわからないが、人のWORDプログラムを読む限りは問題はない。
・・・ただし、WORDに限っては起動も含め、VirtualBOXの方が速いのであるが・・・。
起動せず。
起動するが、日本語がうまく入力できない
AppDBにあるがプロテクトさえ外れていれば、何となくは動く物が多い。
日本語ハンドリングで問題があるため、日本語入力を要とするソフトでは、結構問題が多い。しかし、ドローソフトなどは日本語入力をするのは全体作業の中では少ない方なので、この程度ならば我慢して使うことが出来る。
また、ゲーム系はプロテクトさえ掛かってなければ、割と動いてしまう。案外びっくりだ。