2013/06/09 (Sun)
Mageia 3(Mandriva Linuxの派生ディストリビューション)に関する幾つかのメモ(2013年6月上旬時点)
Mageia/Mandriva, Python, Wine, x86_64, 仮想化
2013年5月に3番目のバージョン「Mageia 3」が公開されている。常用はしていないので、あまり詳しい内容は扱わない。
一部の構成パッケージのバージョン
標準のアップデート(バックポートではない・「Core Release」など)でディストリ公開時よりも新しいバージョンが利用可能となっているパッケージが存在する。
以下にOSを構成する一部パッケージのバージョンを挙げるが、この記事が公開された時点の最新バージョンであることは保証しない(既にバージョンが上がっているのを見逃しているものがある可能性がある)。また、今後バージョンが上がるものが含まれている可能性もある。
システム:
- Linux 3.8.13 (desktop,server,tmb,rt), 3.9.4 (linus=パッチなし/vanilla版)
- systemd 195 -> 204
- Perl 5.16.3 -> 5.18.0
- Python 2.7.3 -> 2.7.5 / 3.3.0 -> 3.3.2
- Ruby 1.9.3
- glibc 2.17
- GCC 4.7.2
デスクトップ環境:
- GNOME 3.6
- KDE SC 4.10.2 -> 4.10.4
- LXDE 0.5.5
- Xfce 4.10
- Razor-qt 0.5.2
GUIツールキット:
- GTK+ 2.24.18 / 3.8.2
- Qt 4.8.4 / 5.2.0
入力メソッド:
- uim 1.8.2
- SCIM 1.4.14
- IBus 1.5.1 -> 1.5.2
Webブラウザ:
- Firefox(ESR:長期サポートバージョン) 17.0.6
- Chromium 26.0.1410.65
エディタなど:
- GNU Emacs 24.2
- GNU nano 2.3.2
- VIM 7.3.762 -> 7.3.1036
- LibreOffice 4.0.3.3
- GIMP 2.8.2 -> 2.8.4
- Inkscape 0.48.4
その他:
- GLib 2.36.2 -> 2.37.1
- Mono 2.10.9
- OpenJDK 1.7.0.19
- JACK2 1.9.8
- PulseAudio 3.0 -> 4.0
- ALSA 主に1.0.27系(それぞれ2013年春時点の最新バージョン)
- Wine 1.5.27 -> 1.5.31
パッケージの大規模な再ビルドについて
今回は、品質の向上を目的として大規模なパッケージ再ビルドが行われている。
- 「glibc 2.17 + GCC 4.7」の構成に合わせる
- RPMパッケージの作成上の関係
- ディレクトリ構成の変更に合わせる
PyGI関係のメモ
Python3では「python3-gobject3」パッケージをインストールすることでPyGI(関連記事)が使用できるようになる(Python2では「python-gi」パッケージを入れる)。
PyGIを用いる場合、Debian/Ubuntuと同様に.typelibファイルを提供する「lib64gtk-gir3.0」(GTK+ 3向け)のような(「lib(64)[ライブラリ名]-gir[ライブラリ自体のバージョン]」)形式の名前のパッケージを別途インストールしておく必要がある。これらのパッケージはパッケージの概要として「GObject Introspection interface description(もしくはlibrary) for [ライブラリ名]」と書かれている。なお、Debian/Ubuntuとはパッケージ名の付け方が異なっており、注意が必要。
Wineについてのメモ(64bit関係)
x86_64版ディストリにおいては、WineはUbuntuと同様に32bitアプリケーション向けと64bitアプリケーション向けとを共存できるようになっている。
この際のWine環境(prefix)における仮想Cドライブ内のディレクトリ構成はx86_64版のUbuntuと同様。
- 「Program Files」のディレクトリが32bit向け(「 (x86)」付き)と64bit向け(「 (x86)」無し)に分かれている
- 「windows」の下のシステムファイル用フォルダも、「system32」が64bit向け,「syswow64」が32bit向けと分かれている
プログラム実行時、ライブラリが見付からずにメッセージが出ることがあるが
$ winecfg Wine cannot find the ncurses library (libncurses.so.5). Wine cannot find the FreeType font library. To enable Wine to use TrueType fonts please install a version of FreeType greater than or equal to 2.0.5. http://www.freetype.org
その場合、該当する32bit版ライブラリをインストールしておく。
VirtualBox関係のメモ
今回VirtualBoxでインストールしたが、ホストOSとの色々なやりとりに便利な「Guest Additions」は標準でインストールされている(バージョンは4.2.12)。特にVirtualBox側から手動でインストールの操作を行うことなく、マウス統合やクリップボード共有,共有フォルダなどが利用できている。
共有フォルダ(/media/sf_[名前]/以下)にアクセスするには、Mageia内の該当ユーザを「vboxsf」グループに入れておく。
関連記事:
- アプリケーションごとにWine環境を用意する方法と、デスクトップ環境のメニューへの登録について(継続して使用したいWinアプリ向け)
- Mageia 1(Mandriva Linuxの派生ディストリビューション)に関する幾つかのメモ
- GObject introspectionとPyGIの概要について
- Mageia 2(Mandriva Linuxの派生ディストリビューション)に関する幾つかのメモ
使用したバージョン:
- VirtualBox 4.2.12 (ホストUbuntu 13.04/ゲストMageia 3両方)
2012/05/06 (Sun)
Ubuntu 12.04における幾つかのメモ(C/Migemo,Wine,unzipについて)
Debian/Ubuntu, 日本語環境, Wine, x86_64, 圧縮, テキストエディタ, コマンド
GNU EmacsにおけるC/Migemoの設定
C/Migemo関係のパッケージが標準で利用可能になっていることは「Ubuntu向けに作成・公開していたパッケージの12.04への対応を完了」で書いているが、辞書のパッケージの関係で、正しく動作させるために記述する設定が下のようになった。
[一部]ファイル名: ~/.emacs.el
; C/Migemo (load "migemo") (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs" "-i" "\a")) (setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict")
x86_64版ディストリにおけるWineの64bit/32bit同時対応(サポートパッケージの共存)について
「x86_64版のDebian/Ubuntuにおける「:i386」付きの名前のパッケージについて(Ubuntu 11.10時点)」で扱っているMultiarchの対応が更に進んだことで、x86_64版のUbuntuでWineのx86_64対応が改善され、x86_64版ディストリでは「wine[バージョン]-i386」パッケージが32bitアプリケーションのサポートを,「wine[バージョン]-amd64」パッケージが64bitアプリケーションのサポートをそれぞれ提供するようになり、64bit用のWindowsアプリケーションを動かすためのWine(実行コマンドはwine64)と32bit用のWindowsアプリケーションを動かすためのWineとを共存できるようになっている。
Wine環境(WINEPREFIX)については、最初に64bitアプリケーションを動かした64bit版Wineを使用したWine環境は32bit/64bit両対応になるようになっており、最初に32bitアプリケーションを動かしたWine環境は32bitアプリケーション専用となる。この種類はWine環境の作成時に決められ、後から変更することはできない。
(2012/5/9)最初に動かしたのが32bitのWindowsアプリケーションでも、Ubuntuの「wine[バージョン]」の名前のパッケージがamd64版であればWine環境は32bit/64bit両対応になる。「wine[バージョン]」の名前のパッケージがamd64版だと
- widl
- wine64
- wine64-preloader
- winebuild
- winedump
- winegcc
- wineserver
- wmc
- wrc
の実行ファイルがx86_64向け(fileコマンドで「ELF 64-bit LSB executable, x86-64, [以下略]」と表示される)となる。なお、64bitアプリケーションはwine64ではなくwineコマンドで起動することもできる。
64bit対応(32bit/64bit両対応)のWine環境における仮想Cドライブはディレクトリ構成が一部32bit専用のものと異なり、下のようになる。
[drive_c]-+-[Program Files] 64bitアプリケーション向けのProgram Files
+-[Program Files (x86)] 32bitアプリケーション向けのProgram Files
+-[windows]-+-[system32] 64bit環境向けのシステムファイル群
| +-[syswow64] 32bit環境向けのシステムファイル群
| |
このProgram Files (x86)やsyswow64といった名前の32bit版プログラム用ディレクトリは、x86_64(x64)版のWindowsにおいても同様に存在する(Wineがこれに合わせている)。「system32」の中身が64bit向けで「syswow64」の中身が32bit向けなのは紛らわしいかもしれないが、Windowsではこのようになっている。
unzipのエンコーディング指定オプションについて
unzipのバージョン6.0-4ubuntu1(以上)では-Oというオプションが追加され、これに「cp932」を指定することで、エンコーディングにCP932が用いられた(ASCII範囲外の)ファイル名のファイル/ディレクトリを含む書庫が扱えるようになっている(Windowsなどで日本語ファイル名のファイル/フォルダを含んだ書庫を作成したものが文字化けせずに展開できるようになっている)。
$ unzip -O cp932 [Windowsなどで作成した.zipファイルの場所] (ここで処理中に流れるファイル/ディレクトリ名は一部「?」に化けるが実際に出力される名前は正常)
ただ、これは本家版unzipの機能ではなく、04-unzip60-alt-iconv-utf8(元のファイル名はunzip60-alt-iconv-utf8.patch)というパッチにより提供されており、全てのディストリで使えるわけではない(例えば、Debianの「6.0-6」のバージョンではこのパッチは含まれないため、この時点ではDebianでは-Oというオプションは使えない)。また、書庫のエンコーディングを自動判別するわけではないため、「文字化けするような書庫があったときに指定する」という形で使うことになる。また、File Roller(アーカイブマネージャー)などのGUIツールでもエンコーディングは自動的に判別されないため、文字化けせずに正しく扱うということはできない状況。
(2012/5/7)GUIアプリケーションで上のような書庫を扱いたい場合、Wineで7-ZipのGUI版(7-Zip File Manager・ファイル名は7zFM.exe)などを動かすとよい。
関連記事:
- x86_64版のDebian/Ubuntuにおける「:i386」付きの名前のパッケージについて(Ubuntu 11.10時点)
- Ubuntu向けに作成・公開していたパッケージの12.04への対応を完了
使用したバージョン:
- GNU Emacs 23.3
- C/Migemo 20110227
- Wine 1.4, 1.5.3
2012/03/31 (Sat)
Windows向けバイナリ差分取得/パッチ当てツールWinIPSのWine向け自動ダウンロード/ビルド/インストールスクリプトを更新(2012年3月末時点)
「Windows向けバイナリ差分取得/パッチ当てツールWinIPSをWineでビルドして使用するための自動インストールスクリプト」で扱ったWinIPSのバージョンが0.66に上がっているので、以前作成した自動ダウンロード/ビルド/インストールスクリプトを更新したものを貼り付ける。
メモ
ソースへの変更点について
- Wine 1.4
- WinIPS 0.66
- GCC 4.5.3
の時点では、基本的にビルドのエラーを発生させるような問題点はなく、動作上の大きな問題もない。しかし、「オプション」メニューの「常に手前に表示」の「表示」が「侮ヲ」になるのは変わっていないため、これに関する修正のみは入れている。
x86_64版ディストリで32bit向けのビルドを行うための指定
x86_64版ディストリではそのままではビルド段階でエラーが発生するが、ビルドのルールの書かれたファイルを生成するwinemakerの実行時に--wine32(「--win32」ではない)オプションを付けることで32bit(のWine)向けとしてビルドするようになり、その後(以前のスクリプトで行っていたように)CFLAGSを指定したりする必要はない。
$ winemaker --wine32 winips.dsp Winemaker 0.8.1 (中略) Fixing the source files... ./ini.c ./ips.c ./ipslib.c ./myfunc.c ./winips.c ./resource.rc ./ini.h ./ips.h ./ipslib.h ./myfunc.h ./resource.h ./resrc1.h ./strres.h ./winips.h Generating project files.. $ make [オプション...] (正常にビルドが行われる)
スクリプト
[任意]ファイル名: wine-winips-install.sh ライセンス: LGPL-2 (or lator)
#! /bin/sh # download/patch/build/install script for WinIPS 0.66 # version 20120331 # (C) 2010-2012 kakurasan # Licensed under LGPLv2+ # # Requirements: # * Wine (development files) # * wget or curl # * unzip # * desktop-file-utils URL=smblabo.web.fc2.com/files/src/wi066src.zip TEMPDIR=$(mktemp --tmpdir -d install_winips.XXXXXXXX) if [ ${?} -ne 0 ]; then echo "cannot create tempdir" exit 1 fi cd ${TEMPDIR} export WINEPREFIX="${WINEPREFIX:-${HOME}/.wine-winips}" APPDIR="${WINEPREFIX}"/dosdevices/c:/"Program Files"/winips APPDIR_DOS="$(winepath -w "${APPDIR}" | sed 's:\\:\\\\:g')" # fetch if ! wget ${URL}; then if ! curl ${URL}; then exit 1 fi fi echo "a7294ba0de3235601f3814de1d8a160b wi066src.zip" | md5sum -c || exit 1 # extract unzip $(basename ${URL}) || exit 1 # fix japanese text cat <<EOF | base64 -d | zcat | patch -p1 H4sIABKtdk8CA0vJTEtT0C0tUijPzMssKNY10DMz08svykzXL0otzi8tSk7VK0pGlkQW59LV1cWr kUtbWxunZgcHBV1DE1MdcwVtCOXgwKUAAq5+LrwQVoB/QGiAgtLWM/f3rLuroRagqQSVcHJ19/Tj 5dJVgAJfV79QzxBXXwWl/rdNJ/teTPRvOjk1pm+ZhlqIppKOAhx4uvjG+weEePr7xTv6hDtGBvv7 hfgH8HJp4zeIBJOw++DszTP3NdQ80N0PAJTVEFx+AQAA EOF # build info winemaker --wine32 winips.dsp || exit 1 # build make -j $(egrep -c "^processor\s:\s[0-9]+$" /proc/cpuinfo) || exit 1 # set PATH / create wine prefix cat <<EOF > path.reg || exit 1 REGEDIT4 [HKEY_CURRENT_USER\Environment] "PATH"="${APPDIR_DOS}" EOF regedit path.reg || exit 1 # install mkdir -p "${APPDIR}" || exit 1 strip winips.exe.so || exit 1 cp winips.exe.so "${APPDIR}" || exit 1 cp -a *.txt appicon.ico "${APPDIR}" || exit 1 # .desktop mkdir -p ~/.local/share/applications/wine/Programs/ || exit 1 cat <<EOF > ~/.local/share/applications/wine/Programs/winips.desktop || exit 1 [Desktop Entry] Name=WinIPS Comment=Binary diff/patch utility Exec=env WINEPREFIX="${WINEPREFIX}" wine winips.exe.so Type=Application StartupWMClass=Wine Path=${APPDIR} Icon=${APPDIR}/appicon.ico EOF update-desktop-database ~/.local/share/applications || exit 1 # cleanup cd .. rm ${TEMPDIR} -fr
以前のときにも書いたが、アンインストールする場合は
- Wine環境の[ホームディレクトリ]/.wine-winips/以下を消す
- [ホームディレクトリ]/.local/share/applications/wine/Programs/winips.desktopを消す
- コマンド「update-desktop-database ~/.local/share/applications」を実行
の流れで作業を行う。
関連記事:
使用したバージョン:
- Wine 1.4
- WinIPS 0.66
- GCC 4.5.3

