ブログトップ 記事一覧 ログイン 無料ブログ開設

試験運用中なLinux備忘録 RSSフィード

2013/06/09 (Sun)

Mageia 3(Mandriva Linuxの派生ディストリビューション)に関する幾つかのメモ(2013年6月上旬時点)

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

エディタなど:

その他:

  • 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版ライブラリをインストールしておく。

  • libfreetype6 (i586版)
  • libncurses5 (i586版)

VirtualBox関係のメモ

今回VirtualBoxでインストールしたが、ホストOSとの色々なやりとりに便利な「Guest Additions」は標準でインストールされている(バージョンは4.2.12)。特にVirtualBox側から手動でインストールの操作を行うことなく、マウス統合やクリップボード共有,共有フォルダなどが利用できている。

共有フォルダ(/media/sf_[名前]/以下)にアクセスするには、Mageia内の該当ユーザを「vboxsf」グループに入れておく。

関連記事:

使用したバージョン:

  • VirtualBox 4.2.12 (ホストUbuntu 13.04/ゲストMageia 3両方)

2012/05/06 (Sun)

Ubuntu 12.04における幾つかのメモ(C/Migemo,Wine,unzipについて)

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アプリケーションで上のような書庫を扱いたい場合、Wine7-ZipのGUI版(7-Zip File Manager・ファイル名は7zFM.exe)などを動かすとよい。

関連記事:

使用したバージョン:

  • 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

以前のときにも書いたが、アンインストールする場合は

  1. Wine環境の[ホームディレクトリ]/.wine-winips/以下を消す
  2. [ホームディレクトリ]/.local/share/applications/wine/Programs/winips.desktopを消す
  3. コマンド「update-desktop-database ~/.local/share/applications」を実行

の流れで作業を行う。

関連記事:

使用したバージョン:

  • Wine 1.4
  • WinIPS 0.66
  • GCC 4.5.3
カスタム検索

カテゴリ「メールマガジン」を除いた本ウェブログ上の文章は、クリエイティブ・コモンズ・ライセンス(表示-非営利-継承 2.1 日本)の下でライセンスされています(引用・転載されたものを除く)。
Creative Commons License

本ウェブログの表示につきましては、横幅1,000ピクセル以上を推奨します。
はじめに | お知らせ | 最新の記事 | 記事一覧 | プライバシーポリシー | 別館トップ | まとめドキュメント | ご意見・ご要望