hoge diary - カテゴリ - Gentoo

[Gentoo] .ebuild ファイルのインストール先

emerge でマージした .ebuild ファイルを誤って消去してしまいました.自作 ebuild だったので何とかして復活させたいので,ディスクの中を漁ってみると...

ebuild ファイルが見つかりました./var/db/pkg/<package desc>/ の下にインストールしたパッケージの .ebuild が...

というわけで,パッケージをインストールしていれば,その .ebuild ファイルを消去してしまってもすぐに復活できることが分かりました.

[Gentoo] dmix が使えなくなっていた

ALSA の dmix を今まで使用していたのですが,ある日,Amarok で再生しながら aoss+Firefox+Flash Player の音が鳴らなくなっていました.

ALSA 関連で関係のあるパッケージの変更といえば... カーネルを 2.6.18-gentoo-r4 から 2.6.19-ck2 にしたときくらいでしょうか.

試しに Amarok で再生したまま aplay を実行してみると以下のエラーメッセージが出ました.

$ aplay /usr/share/sounds/alsa/Front_Center.wav
ALSA lib pcm_dmix.c:864:(snd_pcm_dmix_open) unable to open slave
aplay: main:545: audio open error: デバイスもしくはリソースがビジー状態です
$

pcm_dmix.c の中でエラーが発生しているということは,dmix を使おうとはしているようですが... もちろん Amarok を停止すると aplay でちゃんと音が鳴ります.

カーネルのバージョンを戻すことなく解決しようと,只今原因究明中です...

(2007 年 2 月 11 日追記) 解決しました.再生ソフトウェアのオーディオ出力先の設定ミスが原因でした.

[Gentoo] あれ? missing keyword?

いつものように Gentoo Linux のアップデート確認をしようとした時のことです.

$ sudo layman -S
(中略)
$ sudo emerge -puD --newuse world

These are the packages that would be merged, in order:

Calculating world dependencies \
!!! Ebuilds for the following packages are either all
!!! masked or don't exist:
x11-misc/beryl-settings x11-plugins/beryl-dbus x11-wm/beryl x11-wm/beryl-core x11-wm/aquamarine x11-misc/beryl-manager x11-plugins/beryl-plugins
                                                                                                                                                             ... done!
$

あれ? と思って詳細なエラーを出力してみると以下の通り.

$ sudo emerge =beryl-9999
Calculating dependencies
!!! All ebuilds that could satisfy "=beryl-9999" have been masked.
!!! One of the following masked packages is required to complete your request:
- x11-wm/beryl-9999 (masked by: missing keyword)

For more information, see MASKED PACKAGES section in the emerge man page or
refer to the Gentoo Handbook.
$

ん? キーワードは指定しているはずなのに... と思いつつ一応確認 (以下の結果は関係のあるパッケージの部分だけを抜粋しています).

$ cat /etc/portage/package.keywords
=x11-wm/beryl-9999 -*
=x11-wm/beryl-core-9999 -*
=x11-plugins/beryl-plugins-9999 -*
=x11-plugins/beryl-dbus-9999 -*
=x11-misc/beryl-manager-9999 -*
=x11-misc/beryl-settings-9999 -*
=x11-wm/aquamarine-9999 -*
$

ちゃんと指定してあります.ダメもとでキーワードを * や ~* に変えてもやはりダメ.

Google 先生に尋ねると,即刻答えが得られました.どうやら新しい portage を入れて,/etc/portage/package.keywords のキーワードを ** に書き換えてくださいとのこと.

SVN ebuilds require Portage 2.1.2-r4 or higher (currently in ~arch) and the xeffects overlay.

では早速 portage を upgrade... あれ? portage-2.1.2 はあれども portage-2.1.2-r4 がない...

ここら辺で嫌な予感がしてきたので,emerge --sync を実行.そして流れる実行ログの多さ(=emerge --sync のログの量は,この先起こるであろうアップデート地獄の凄まじさにたぶん比例)に打ちひしがれる自分.

$ sudo emerge --sync
(大量のログ.中略)
Number of files transferred: 16935
Total file size: 159136632 bytes
Total transferred file size: 39119138 bytes
(中略)

sent 404067 bytes  received 18849475 bytes  41992.46 bytes/sec
total size is 159136632  speedup is 8.27
$

なぜだー なぜパッケージ情報の同期が行われていなかったんだー.と,日々の同期を行うために用意した crontab をチェック.

0 6 * * * root /usr/bin/layman -S > /dev/null 2>&1
30 6 * * * root /usr/sbin/eix-sync > /dev/null 2>&1

ほっ... ちゃんと eix-sync が実行されるようになってるじゃないか... と思いつつ恐いので which eix-sync を実行.

$ which eix-sync
/usr/bin/eix-sync
$

「場所(ディレクトリ)が変わってる!」 標準エラー出力を捨てていたため command not found エラーに気づきませんでした.なんということでしょう(加藤みどりさん風に).

気を取り直して portage-2.1.2-r5 をインストールした後,emerge -puD --newuse world を実行.途中,masked package のエラーが発生する度に /etc/portage/package.keywords を修正していきます.そして最後の修正が完了したときの実行結果は... やはり大量のアップグレード候補が出力されました.とはいっても半分(85 個中 46 個)は自分で ~x86 指定をした KDE 関連のパッケージですが.残りの 39 個は標準エラー出力を捨てた代償というわけです.

教訓: 「cron による実行のログはどこかに残して,定期的に確認しましょう.」

[Gentoo] Beryl を開発版スナップショットからダウングレード

何の気なしに Beryl 関連パッケージのバージョンを開発版スナップショットから 0.1.1 にダウングレードしたところ,スプラッシュスクリーンが綺麗に出るようになりました.あと,ウィンドウの透明度も正しく表示されるようになりました.

というわけで,現在インストールしている Beryl 関連パッケージのバージョンは以下の通りです.

  • beryl-0.1.1-r2
  • beryl-core-0.1.1
  • beryl-plugins-0.1.1-r1
  • beryl-dbus-0.1.1-r1
  • beryl-manager-0.1.1
  • beryl-settings-0.1.1

[Gentoo] 真っ白なウィンドウ in AIGLX

AIGLX を使用中に突然,ウィンドウが真っ白になってしまう現象が起こったので調べてみると,HOWTO XGL/Troubleshooting - Gentoo Linux Wiki に書いてありました.が,実行してみるも効果はなく,いろいろ試行していると,どうやら当方の環境ではインストールしている Mesa を media-libs/mesa-6.5.2_pre20061102 から media-libs/mesa-6.5.1-r1 にしたところ現象が治まりました.

[Gentoo] Xgl から AIGLX に戻す

glxinfo を実行したときに direct rendering: No と言われるのが気になるので,AIGLX に切り替えました.AIGLX だと Beryl のスプラッシュスクリーンが綺麗に表示されませんが,これは我慢することに.

AIGLX の状態で glxinfo を実行すると,direct rendering: Yes と表示される代わりに以下のメッセージが表示されます.

libGL warning: 3D driver claims to not support visual 0x5b

とりあえず目立った問題がないので無視することに.

[Gentoo] 再び Xgl (AIGLX + Beryl + Aquamarine) を試す

前回のインストールから約 2 ヶ月.もう一度 Xgl をインストールしてみることにしました.

前回とは違い,compiz-quinnstorm が Beryl という名称になっています.あと,KDE 用の window decolator (Aquamarine) が登場していました.これはいい感じです.

例によって Gentoo Linux WikiGentoo Linux Wiki を参考にします.

後者を読んでいくうちに分かったのですが,どうやら当方の環境の場合,Xgl でなく AIGLX を有効にした X.org で十分そうです.

というわけで,まずはインストールから始めます.

layman を使って,xeffects の ebuild を取得します.

# layman -a xeffects

次は,/etc/portage/package.keywords/etc/portage/package.unmask を変更します.

# cat >> /etc/portage/package.keywords <<EOF
=x11-wm/beryl-0.1.1-r1 ~x86
=x11-wm/beryl-core-9999 -*
=x11-plugins/beryl-plugins-9999 -*
=x11-plugins/beryl-dbus-9999 -*
=x11-misc/beryl-manager-9999 -*
=x11-misc/beryl-settings-9999 -*
=x11-apps/xlsclients-1.0.1 ~x86
=x11-libs/libwnck-2.16.1 ~x86
=x11-wm/aquamarine-9999 -*
EOF
# cat >> /etc/portage/package.unmask <<EOF
x11-wm/aquamarine
EOF
#

そして X.org と Beryl のインストールです.X.org は既に 7.1 をインストールしていましたが,ちょうど aiglx という USE flag が新たに追加されていたので,それを有効にしてもう一度関連するパッケージを emerge することにします.

# vim /etc/make.conf
(USE="aiglx" を追加)
# emerge -puD --newuse world (関連パッケージの再 merge)
# emerge beryl

無事に完了したら,/etc/X11/xorg.conf を編集します.

Section "ServerLayout"
        Option          "AIGLX"                 "True"
EndSection

Section "Device"
        Option          "DRI"                   "True"
        Option          "XAANoOffscreenPixmaps" "True"
EndSection

Section "dri"
        Group           0
        Mode            0666
EndSection

Section "Extensions"
        Option          "Composite"             "True"
EndSection

さらに,ログイン時に Beryl が起動するようにします.Gentoo Linux Wiki では,KDE を使用している場合は /etc/env.d/99kde-env もしくは /etc/env.d/*kdepaths* を書き換えるように書いてあります.さて,私は Aquamarine を使いますので,どうやら起動スクリプトを書く必要があるようです.スクリプトのファイル名は /usr/local/bin/aquamarine-start とでもしておきます.

#! /bin/sh

beryl --replace &
exec aquamarine --replace

スクリプトには実行属性を与えておきます.

# chmod 755 /usr/local/bin/aquamarine-start

あと,Gentoo Linux Wiki に書いてある通りに "dbus" 引数付きで beryl で起動すると以下のように落ちてくれます.

$ beryl --replace dbus
XGL Absent, assuming AIGLX

beryl: SmcOpenConnection failed: Could not open network socket
Pop:
Old number of plugins is 0.
Plugin dbus is a new plugin.
Plugin settings is a new plugin.
New number of plugins is 2.
Checking for new plugins.
Seeking to load dbus.
beryl: Couldn't load plugin 'dbus'

segmentation fault
$
("dbus-launch beryl --replace dbus" としても同じように落ちます)

プラグイン dbus がロードできないと言われてます.プラグインファイル(/usr/lib/beryl/libdbus.so)はちゃんと存在しているので,ファイルが見つからなかっただけ,というオチではなさそうです.ただ,あまり深く調べるのも面倒なので,こっちの環境に何らかの問題があるんだろうなぁ,と思いつつ,今回は dbus 引数を外して起動します.

さて,起動してみましょう... 再び感動の瞬間です.

スクリーンショットはありませんが,Aquamarine のおかげで KDE 側で設定したウィンドウ装飾がちゃんと使えています.あと,2 ヶ月前とは違い,突然 X サーバが落ちる,といった現象も見られませんでした.

ただ,AIGLX を使っているせいか,Beryl のスプラッシュ画面が綺麗に表示されない(部分的に真っ黒に潰れたような表示 (以下))ので,試しに Xgl もインストールしてみました.

Beryl 0.1.1

# emerge =xgl-0.0.1_pre20061020-r1

Gentoo Linux Wiki に従い,/etc/X11/gdm/gdm.conf を Xgl 用に合わせて書き換え,GDM を再起動し,あとは普通にログインするだけです.

Beryl のスプラッシュスクリーンが綺麗に表示されました.めでたしめでたし.

[Gentoo] Xgl を使ってみる

以前から気になっていた Xgl を使ってみました.

インストール手順は Gentoo Linux Wiki に書いてある通りに実行しました.いくつかの選択肢がある部分は次の通りにしました.

  • ebuild の取得には app-portage/layman を使用
  • ウィンドウマネージャには x11-wm/compiz-quinnstorm を使用

なお,インストールしたマシンのグラフィックハードウェアは,i945G チップセット内蔵のものです.

Xgl および関連ソフトウェアの emerge が完了したら,gdm の設定ファイルを同 Wiki 文書に従って書き換え,さらに起動スクリプトの変更を行います.

私は gdm のログイン時に「カスタムセッション」を使用しているので,.xsession に compiz-quinnstorm と cgwd の起動コマンドを書き加えます.

compiz --replace gconf &
sleep 2
dbus-launch cgwd &

これで gdm からログインしたときに,compiz が起動します.では起動してみます...

... 感動の瞬間です.これまで見てきたスクリーンショットや動画では味わえなかった感動です.

マウスでウィンドウを動かすと,ウィンドウがマウスの動きにあわせてゼリーのようにぷるぷる変形します.ウィンドウをグリップしたまま画面端にカーソルを移動すると... デスクトップがぐるりと回転し,画面が切り替わります.しばらくの間,マウスでウィンドウをぐりぐり動かして楽しんでいました.

しかし,不幸は突然やってくるもので,いきなり画面が真っ暗に... そして gdm の画面に戻ります.どうやら X が落ちたようです.さすがにまだまだ不安定のようで...

とりあえず,一通り遊び終わったので,起動スクリプトは元に戻しました.

それにしても楽しい 1 日でした.Xgl の今後に期待します.

[Gentoo] gcc-3.3.6 に戻ります

gcc-4.0.1 をインストールして emerge -e world をしたはいいものの,gqview, gimp が Segmentation fault で落ちるようになってしまいました.原因はさっぱり判りません.Firefox が動いているので GTK+ 周りではなさそうです(ちなみに Qt と KDE はピンピンしてます).

原因が glibc にあったら悲惨なことになりそうなので,gcc-3.3.6 に戻します.

手順は簡単... のはず.

  1. binutils-config で binutils-2.15.92.0.2-r10 (slots でインストールされているうちの古い方) に切り替える
  2. 同様に,gcc-config でコンパイラを gcc-3.3.6 に切り替える
  3. binutils を元に戻したので,/usr/lib/libc.so の変更部分も元に戻す(AS_NEEDED 以降を削除)
  4. package.keywords, package.unmask に加えた変更を元に戻す
  5. package.use に加えた変更を元に戻す("sys-devel/gcc multislot" だけは残しておく)
  6. emerge glibc binutils gcc
  7. emerge -e world
  8. package.use の "sys-devel/gcc multislot" を消す
  9. emerge -C '=gcc-4.0.1'

さあ,やってみましょうか.これだから Gentoo はやめられませんよ.

ちなみに,www-client/mozilla-firefox のように,gcc-4.0.1 でコンパイルされた C++ アプリケーションは libstdc++.so.6 を使っているので,gcc-4.0.1 の削除は emerge -e world の完了後である必要があります.package.use を元に戻す際,gcc の "multislot" フラグを残したのはそのためです.

[Gentoo] ほぼ gcc-4.0.1 化完了

emerge -e world も完了し,ほぼ gcc-4.0.1 化が完了しました.いくつかのパッケージ(valgrind, kdemultimedia, kdeaddons, tightvnc, ocaml 等)のコンパイルに失敗しましたが,普段使わないパッケージなので無視しています.

旧 gcc-3.3.6 との速度比較でもやってみたいんですが,疲れたので後日に延期します.

[Gentoo] GCC 4.0 Testing Tips (2)

GCC 4.0 Testing Tips の続きです.

sys-libs/glibc-2.3.5.20050421 がインストールされましたので,手順に従って,次は sys-devel/binutils-2.16.1 のインストールです.

# vim /etc/portage/package.use
("sys-devel/binutils multislot" を追加)

# emerge binutils
(snip)
/usr/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../../i686-pc-linux-gnu/bin/ld:/usr/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../libc.so: file format not recognized; treating as linker script
/usr/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../../i686-pc-linux-gnu/bin/ld:/usr/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../libc.so:5: syntax error
collect2: ld returned 1 exit status

gcc が動かなくなってしまいました.その /usr/lib/libc.so はこんな風になっています.

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux.so.2 ) )

強調部分が以前の libc.so と比べて新しく追加されているようです.新しい binutils の拡張構文か何かでしょうか.とりあえずこの箇所を取り除いて再度 binutils-2.16.1 のコンパイルに挑戦してみます.

# emerge binutils

無事成功しました.binutils-config を使って切り替えます.

# binutils-config -l
 [1] i686-pc-linux-gnu-2.15.92.0.2 *
 [2] i686-pc-linux-gnu-2.16.1
# binutils-config 2
 * Switching to i686-pc-linux-gnu-2.16.1 ...     [ ok ]

binutils-2.16.1 が入ったので,/usr/lib/libc.so に加えた変更を元に戻します.

続いて gcc-4.0.1 をコンパイルします.

# vim /etc/portage/package.use
("sys-devel/gcc multislot" を追加)

# emerge gcc

無事終了しました.

GCC 4.0 Testing Tips の最後に書いてある作業です.

# emerge -e system

[Gentoo] GCC 4.0 Testing Tips

sys-devel/gcc-4.0.1 をインストールしてしまってから見つけた,GCC 4.0 Testing Tips に従って作ってみます.

既に binutils-2.15.97 が入ってしまっているので,元のバージョンに戻しておきます.

# vim /etc/portage/package.keywords
(">=sys-devel/binutils-2.15.97 ~x86" を削除)
# emerge binutils

元に戻し終わったら,Tips の手順に従い sys-libs/glibc の作成から入ります.

# vim /etc/portage/package.use
("sys-libs/glibc nomalloccheck nptl nptlonly pic userlocales" を追加)

# vim /etc/portage/package.keywords
("=sys-libs/glibc-2.3.5.20050421 -*" を追加)

# emerge =glibc-2.3.5.20050421
(中略)
checking for pwd... /bin/pwd
checking for i686-pc-linux-gnu-gcc... (cached) i686-pc-linux-gnu-gcc
checking version of i686-pc-linux-gnu-gcc... 3.3.6, bad
checking for gnumake... no
checking for gmake... gmake
checking version of gmake... 3.80, ok
checking for gnumsgfmt... no
checking for gmsgfmt... gmsgfmt
checking version of gmsgfmt... 0.14.4, ok
checking for makeinfo... makeinfo
checking version of makeinfo... 4.8, ok
checking for sed... sed
checking version of sed... 4.1.4, ok
checking for autoconf... autoconf
checking whether autoconf works... yes
configure: error:
*** These critical programs are missing or too old: gcc
*** Check the INSTALL file for required versions.

gcc-config を用いてデフォルトのコンパイラを gcc-4.0.1 に切り替える必要があるようです.

# gcc-config -l
 [1] i686-pc-linux-gnu-3.3.6 *
 [2] i686-pc-linux-gnu-3.3.6-hardened
 [3] i686-pc-linux-gnu-3.3.6-hardenednopie
 [4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
 [5] i686-pc-linux-gnu-3.3.6-hardenednossp
 [6] i686-pc-linux-gnu-4.0.1
# gcc-config 6
 * Switching native-compiler to i686-pc-linux-gnu-4.0.1 ...    [ ok ]

もう一度 glibc のインストールに挑戦します.

# emerge =glibc-2.3.5.20050421

configure が通ったので,コンパイル終了までしばらく待ちます.

[Gentoo] gcc-4.0.1 インストール完了?

emerge が終わりました./usr/bin/gcc-4.0.1 としてインストールされています.既にインストールされている sys-devel/gcc-3.3.6 と共存しています.

[Gentoo] GTK-Qt Theme Engine

GTK-Qt Theme Engine なるものがあるようです.

The GTK-Qt Theme Engine is a project allowing GTK to use Qt widget styles. とのことで,ちょっとインストールしてみます.

# ACCEPT_KEYWORDS=~x86 emerge gtk-qt-engine

現在コンパイル中です.GTK+2 のテーマが変化してくれるといいですねぇ.

コンパイル終了しました.

KDE Control Center (kcontrol) の「外観 & テーマ (Appearance & Themes)」項目に "GTK Styles and Fonts" というのが追加されていました.

そして,GTK+2 を使う Mozilla Firefox の見た目がバッチリ変更されています.ただ,GTK+1 系列には影響がないらしく,xmms の見た目はそのままでした.

[Gentoo] emerge --depclean

USE=immqt-bc を USE=immqt に変更したのを機に,システム全体の整理をしようと思いました.

不要なパッケージを削除するために何をしようかと考えたときに思い出したのは... "emerge --depclean" でした.

ただ,昔読んだ Nest of Hawk - B-Wikiの記事 には,installコマンドが、libacl.soが無いから動かんと…という恐怖の 1 文があるので実行をためらっていました.

しかし不要なパッケージはまとめて削除したいという欲求の方が強く,Gentoo Linux Documentation -- USE フラグに従い,思い切って emerge --depclean を実行してみました.

# emerge -uD --newuse world
# emerge --depclean
# revdep-rebuild
(中略)
FATAL ERROR: attr/xattr.h does not exist.
Install the extended attributes (attr) development package.
Alternatively, run "make install-lib" from the attr source.

!!! Please attach the config.log to your bug report:
!!! /var/tmp/portage/acl-2.2.27/work/acl-2.2.27/config.log

!!! ERROR: sys-apps/acl-2.2.27 failed.
!!! Function econf, Line 485, Exitcode 0
!!! econf failed
!!! If you need support, post the topmost build error, NOT this status message.

sys-apps/attr が足りないようなので,sys-apps/attr を手動でインストールしてから,revdep-rebuild を再開します.

# emerge attr
# revdep-rebuild

これで完了です.

[Gentoo] ati-gatos のインストール

ATi Rage128 を搭載したマシンを使用していますが,X11/XVideo で,ハードウェアアクセラレーション機能を使うために,media-video/ati-gatos を試してみます.

# ACCEPT_KEYWORDS=~x86 emerge ati-gatos
Calculating dependencies ...done!
>>> emerge (1 of 1) media-video/ati-gatos-4.4.0 to /
>>> md5 files   ;-) ChangeLog
>>> md5 files   ;-) metadata.xml
>>> md5 files   ;-) ati-gatos-4.4.0.ebuild
>>> md5 files   ;-) files/ati-gatos-4.4.0-new-xorg.patch
>>> md5 files   ;-) files/digest-ati-gatos-4.4.0
>>> md5 files   ;-) files/ati-gatos-4.4.0-prototypes.patch
>>> md5 src_uri ;-) ati-gatos-4.4.0-20040930.tar.bz2
 * This package requires that xorg-x11 was merged with the sdk USE flag enabled.

!!! ERROR: media-video/ati-gatos-4.4.0 failed.
!!! Function pkg_setup, Line 24, Exitcode 0
!!! Please merge xorg-x11 with the sdk USE flag enabled.
!!! If you need support, post the topmost build error, NOT this status message.

何ということでしょう.x11-base/xorg-x11 も作り直しのようです.

USE=sdk で現在 x11-base/xorg-x11 をコンパイル中です.

[Gentoo] strings はどのパッケージ!?

今使用中の Gentoo で /usr/bin/strings が属するパッケージの名前を知ろうと思い,etcat コマンドを実行しました.

# etcat belongs /usr/bin/strings
Searching for /usr/bin/strings in * ...

結果に何も出力されませんでした.

あれ? と思い,strings(1) を参照してみると... binutils に属していることが判明.ほっと一安心.

etcat で表示されないファイルもあるようです.

[Gentoo] taglib vs id3lib (3)

パッチを当てた id3lib をコンパイルしてみましたが,やはり EasyTAG で書き込んだタグが amaroK で文字化けします.

id3lib の実装は正しいと仮定して,今度は TagLib のパッチが無いか探してみましょうか.

[Gentoo] taglib vs id3lib (2)

調べてみると,id3lib のパッチ群の中に Non ISO-8859-1 charsets bugfix なるものが見つかりました.

portage ツリーの media-libs/id3lib-3.8.3-r3 の ebuild を見ると,このパッチは含まれていないようです.では,まずこのパッチを加えた ebuild で emerge してみましょう.

[Gentoo] mlterm + scim

GTK+-2 アプリケーションは GTK_IM_MODULE=scim とすることで On-the-spot 入力できていました.そして今回,Qt アプリケーションも QT_IM_MODULE=scim として On-the-spot 入力ができるようになりました.

そして,私が普段使用しているアプリケーションは唯一の例外である mlterm を除き,全て GTK+-2 か Qt アプリケーションです.こうなってくると,残った mlterm でも On-the-spot 入力したいと思うのが人情というものです.

mlterm-2.9.2 には,SCIM と直接通信する機能が実装されました.これを使用しない手はありません.

... と思いきや,portage ツリーの x11-terms/mlterm-2.9.2 には,この部分がありません.

というわけで,自分で /usr/portage/x11-terms/mlterm-2.9.2.ebuild を改造し,--enable-scim が使用できるようにしました.

以下がオリジナルとの ebuild との差分です.

--- /usr/portage/x11-terms/mlterm/mlterm-2.9.2.ebuild   2005-04-12 10:05:56.000000000 +0900
+++ mlterm-2.9.2-r1.ebuild      2005-05-06 23:00:22.000000000 +0900
@@ -4,7 +4,7 @@

 inherit eutils flag-o-matic

-IUSE="truetype gtk imlib bidi nls uim"
+IUSE="truetype gtk imlib bidi nls uim scim"
 #IUSE="${IUSE} m17n-lib iiimf scim"

 DESCRIPTION="A multi-lingual terminal emulator"
@@ -41,6 +41,7 @@

        # m17n-lib and iiimf aren't stable enough
        #myconf="${myconf} $(use_enable iiimf) $(use_enable m17n-lib m17nlib)"
+       myconf="${myconf} $(use_enable scim)"

        append-ldflags -Wl,-z,now

この ebuild をマージして,無事 mlterm を作ることができたなら,最後に ~/.mlterm/main の設定を変更すれば完了です.

input_method = scim

[Gentoo] scim-qtimm を使用可能にする

skim をインストールしていれば,さらに scim-qtimm をインストールすることで,XIM を経由することなく Qt のウィジェットが直接 SCIM と通信できるようになります.

scim-qtimm をインストールする前に,まずは Qt の IMModule を有効にします.

# USE="immqt-bc" emerge qt

USE="immqt-bc" は,USE="immqt" でも構いませんが,その場合はバイナリ非互換の Qt になるので,Qt に依存するパッケージも再コンパイルする必要があります.

さすがにそれは厳しいので今回は USE="immqt-bc" にしておきました.でも,USE="immqt" にした場合と何が変わってくるんでしょうねぇ.

さて,Qt のインストールが終われば,いよいよ scim-qtimm のインストールです.

# emerge scim-qtimm

準備は整いました.最後に,Qt のウィジェットから scim を使用するために,~/.xsession もしくは ~/.xinitrc に環境変数の設定を追加しておきます.

export QT_IM_MODULE=scim

これで完了です.Qt は直接 SCIM と通信するようになりました.

(私が享受した)利点は,何といっても On-the-spot による入力ができるようになった点でしょう.欠点としては,SCIM が死ぬと Qt アプリケーションが巻き添えになって死ぬ点でしょうか.

[Gentoo] CHOST(2)

groff のコンパイル途中でコケてました.ログを見ると,imake の出力した Makefile が怪しいので,/usr/lib/X11/config/host.def をチェックすると,128 行目に次の記述が...

#define CcCmd i386-pc-linux-gnu-gcc

こんなところに CHOST="i386-pc-linux-gnu" の残骸が... というわけで修正.パーミッションは 444 でしたが強行しました.

再び emerge --resume です.groff はコンパイル成功しました.

[Gentoo] CHOST

自宅 Gentoo マシンの /etc/make.conf を見ると... CHOST="i386-pc-linux-gnu" と書いてありました.i686 にしたつもりがっ!

実害はないのですが,ちょっと気になります.

自宅マシンは環境を破壊しても問題ないので,思い切って CHOST を修正することに.

次に "emerge -e system" を実行すると,dev-python/python-fchksum のコンパイル中に次のエラーでコケました.

gcc-config error: Could not run/locate "i386-pc-linux-gnu-gcc"

インストールの順番が関係しそうなので,まずは "emerge gcc-config binutils-config binutils gcc glibc" を実行してみます.

[Gentoo] Enlighted Sound Daemon

media-sound/artsplugin-xine をインストールしようとした時のこと...

/bin/sh ../libtool --silent --mode=link --tag=CXX i686-pc-linux-gnu-g++ \
-Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE \
-Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings \
-DNDEBUG -DNO_DEBUG -O2 -O3 -march=pentium4 -fomit-frame-pointer -funroll-loops -pipe \
-fPIC -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new \
-fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT \
-DQT_NO_TRANSLATION    -o libarts_xine.la -rpath /usr/kde/3.4/lib -L/usr/kde/3.4/lib \
-L/usr/qt/3/lib -L/usr/lib    -module -avoid-version -pthread xinePlayObject.lo \
xinePlayObject_impl.lo audio_fifo_out.lo -L/usr/lib -lxine -lz -lnsl -lpthread -lrt \
-lX11  -lXext -lkmedia2_idl -lsoundserver_idl -lartsflow
grep: /usr/lib/libesd.la: No such file or directory
/bin/sed: can't read /usr/lib/libesd.la: No such file or directory
libtool: link: `/usr/lib/libesd.la' is not a valid libtool archive

USE=-esd でもダメということは,emerge esound をしなければならない,ということなのでしょう.aRts があるにもかかわらず,esound もインストールしなければならないなんて...

[Gentoo] Subversion on "K"

Cervisia という,KDE 上で動作する CVS の GUI フロントエンドがあります.

このような Subversion 版の KDE GUI フロントエンドはないでしょうかねぇ.

なお,Windows 環境であれば,TortoiseSVN があります.

探していると,eSvn というのが見つかりました.

インストールしてみます.2005 年 3 月 21 日現在,esvn はマスクされていました.

# ACCEPT_KEYWORDS=~x86 emerge esvn

コンパイル失敗です.

/usr/qt/3/lib/libqt.so: undefined reference to `__pthread_register_cancel@GLIBC_2.3.3'
/usr/qt/3/lib/libqt.so: undefined reference to `__pthread_unregister_cancel@GLIBC_2.3.3'

あれ? 今まで pthread 抜きの glibc を作ってたんでしょうか? だとすると,pthread の他の関数もエラーメッセージに含まれるはずです(Qt が __pthread_unregister_cancel だけ呼んでいるとは考えにくい).

ではここで,glibc は pthread を含んでいると仮定すると... 2005 年 3 月 17 日の glibc アップデート の時に emerge -e をやるべきだった,ということですか? まさか,そんな.

glibc のバージョンはほとんど変化していないので,ライブラリのインタフェースが変わっているとは思えません.

今は忙しいので esvn は保留ということにします... と思ったら,私は何を頓珍漢なことを書いているんでしょう.

% ls /lib/libc-*
/lib/libc-2.3.4.so
%

今システムに入ってるのは glibc-2.3.4 じゃないですか.libqt が参照していたのは glibc-2.3.3 の関数です.

glibc-2.3.3 を glibc-2.3.4 にアップデートした際,emerge -e をし忘れたようです.というわけで... 全パッケージ再コンパイルの刑が確定しました.

% sudo emerge -e world

[Gentoo] sys-libs/glibc-2.3.4.20041102-r1

portage ツリーを同期して,アップデート確認をすると,glibc がアップデートされることが分かりました.

[ebuild     U ] sys-libs/glibc-2.3.4.20041102-r1 [2.3.4.20040808-r1]

通常,glibc をアップデートすると,例によって glibc に依存するパッケージも再コンパイルしないといけません.

経験から言って,全パッケージが glibc に依存していると言っていいでしょう.したがって,コンパイルにはとてつもない時間がかかります.

「ダイナミックリンクなら問題ないんじゃないの?」という声が聞こえてきました.ええ,メジャーバージョンとマイナーバージョンが変化していなければ,そのままダイナミックリンクできます.

(メジャーバージョンとマイナーバージョンが変化すると,ダイナミックリンク時のシンボル解決に失敗します)

幸い,今回は glibc のバージョンが変化していないので... そのままにしておきたいのが本音です.ということで glibc のアップデートだけにとどめておきます.

[Gentoo] パケットライト

偶然に見つけた HOWTO Packet Writing on CD-RW - Gentoo Linux Wikiに書いてある手順をほぼそのまま実行してみました.

まずはカーネルのコンパイルから.gentoo-dev-sources-2.6.10-r6 には既にパケットライト用のパッチが当たっているようなので,改めてカーネルにパッチを当てる必要はありませんでした.

Device Drivers ---->
  Block Drivers ---->
    <*> Packet writing on CD/DVD Media (EXPERIMENTAL)
    (8) Freebuffers for data gathering
    [ ] Enable write caching
  File Systems ---->
    CD-ROM/DVD Filesystems ---->
      <*> UDF Filesystem Support

次はモジュールの設定を編集し,デバイスノードの作成を行います.

# vim /etc/modules.d/aliases
alias block-major-97 pktcdvd

# mknod /dev/pktcdvd0 b 97 0

udftools のインストールを.

# emerge udftools

2005 年 3 月 10 日現在にインストールされたバージョンは 1.0.0b-r4 で,パッチは不要でした.

fstab の編集も行います.現在使用しているカーネルは 2.6.10 で,HOWTO Packet Writing on CD-RW - Gentoo Linux Wiki には,%If you have a 2.6.8 kernel, the line above should be: とあるので,次のように編集します.

# vim /etc/fstab
/dev/pktcdvd/0 /mnt/cdrw udf noauto,noatime,rw,users 0 0
 
# mkdir /mnt/cdrw
# chmod 0777 /mnt/cdrw

リブート後,DVD+RW のフォーマットを試みました.

cdrwtool -d /dev/cdroms/cdrom0 -q
using device /dev/cdroms/cdrom0
832KB internal buffer
setting write speed to 12x
Settings for /dev/cdroms/cdrom0:
        Fixed packets, size 32
        Mode-2 disc

I'm going to do a quick setup of /dev/cdroms/cdrom0. The disc is going to be blanked and formatted with one big track. All data on the device will be lost!! Press CTRL-C to cancel now.
ENTER to continue.

Initiating quick disc blank
wait_cmd: Input/output error
Command failed: a1 01 00 00 00 00 00 00 00 00 00 00 - sense 05.30.05
blank disc: Illegal seek
can't unlock door

何かエラーが出ますね... ドライブに突っ込んでいるのが DVD+RW だからでしょうか.良く考えてみれば,DVD+RW の場合,dvd+rw-format というコマンドがあるので,そちらを使ってフォーマットすればいいだけでしょう.

... もとい,今回使用した DVD+RW はフォーマット済みですので,このステップは無視することに.

/etc/conf.d/cdrw を次の内容で作成しました.

cdrw_list="/dev/cdroms/cdrom0"

同様に,/etc/init.d/cdrw を次の内容で作成しました.

#!/sbin/runscript
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {
  need localmount
}

start() {
  # Starting with kernel 2.6.8 there is a different syntax
  # for the pktsetup program.
  kernel_major=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f2` ))
  kernel_minor=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f3` ))
  local i
  local minor=0
  local retval=0
  local last_result=0
  if [ ! -e "/dev/pktcdvd" ]
    then
      /sbin/modprobe -a pktcdvd
  fi
  for i in ${cdrw_list}
  do
    ebegin "Enabling CD-RW packet writing on ${i}"
    if [ ${kernel_major} -ge 6 ] && [ ${kernel_minor} -ge 8 ]
      #then /usr/bin/pktsetup /dev/pktcdvd/${minor} ${i} >/dev/null 2>&1
      then /usr/bin/pktsetup ${minor} ${i} >/dev/null 2>&1
      #else /usr/bin/pktsetup /dev/pktcdvd${minor} ${i} >/dev/null 2>&1
      else /usr/bin/pktsetup pktcdvd${minor} ${i} >/dev/null 2>&1
    fi
    if [ -b /dev/pktcdvd/${minor} ]
      then last_result=0
      else last_result=1
    fi
    retval=$(( ${retval} + ${last_result} ))
    minor=$(( ${minor} + 1 ))
    if [ ${last_result} -gt 0 ]
      then
        ewend ${last_result} "Failed to enable packet writing on ${i}"
    fi
  done
  eend ${retval}
}

stop() {
  # Starting with kernel 2.6.8 there is a different syntax
  # for the pktsetup program.
  kernel_major=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f2` ))
  kernel_minor=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f3` ))
  local i
  local minor=0
  local retval=0
  local last_result=0
  for i in ${cdrw_list}
  do
    ebegin "Disabling CD-RW packet writing on ${i}"
    umount /dev/pktcdvd/${minor} >/dev/null 2>&1 || true
    if [ ${kernel_major} -ge 6 ] && [ ${kernel_minor} -ge 8 ]
      #then /usr/bin/pktsetup -d /dev/pktcdvd/${minor} >/dev/null 2>&1
      then /usr/bin/pktsetup -d ${minor} >/dev/null 2>&1
      #else /usr/bin/pktsetup -d /dev/pktcdvd${minor} >/dev/null 2>&1
      else /usr/bin/pktsetup -d pktcdvd${minor} >/dev/null 2>&1
    fi
    if [ -b /dev/pktcdvd/${minor} ]
      then last_result=1
      else last_result=0
    fi
    retval=$(( ${retval} + ${last_result} ))
    minor=$(( ${minor} + 1 ))
    if [ ${last_result} -gt 0 ]
    then
      ewend ${last_result} "Failed to disable packet writing on ${i}"
    fi
  done
  eend ${retval}
}

スクリプトを実行してみます.

# chmod 0755 /etc/init.d/cdrw
# /etc/init.d/cdrw start
 * Enabling CD-RW packet writing on /dev/cdroms/cdrom0...
 * Failed to enable packet writing on /dev/cdroms/cdrom0   [ !! ]
                                                           [ !! ]

うーむ,走りません.

試しに,最初に作ったブロックデバイススペシャルファイルを消去してみたところ,正常にスクリプトが起動しました.

# rm /dev/pktcdvd0
 * Enabling CD-RW packet writing on /dev/cdroms/cdrom0...  [ ok ]

デバイススペシャルファイルが自動作成されているので,major 番号を確認してみると...

# ls /dev/pktcdvd0
brw-rw----  1 root root 254, 0  3月 10 11:33 /dev/pktcdvd0

97 じゃないじゃないですか.まあいいか.

ということで早速 DVD+RW のパケットライトを試してみます.

% mount /mnt/cdrw
% touch /mnt/cdrw/hoge
touch: cannot touch `hoge': 許可がありません
% umount /mnt/cdrw

では,root ではどうでしょうか.

# mount /mnt/cdrw
# touch /mnt/cdrw/hoge
touch: cannot touch `/mnt/cdrw/hoge': 入力/出力エラーです

ぬぅ,まだまだ先は長いようです.

[Gentoo] emerge -pu world

約 1 ヶ月半にわたり電源を切っていた研究室のマシン.電源を入れて Portage ツリーの同期を取って,emerge -pu world をやってびっくり.

[ebuild     U ] sys-apps/man-1.5p [1.5m-r2]
[ebuild     U ] sys-apps/man-pages-2.01 [1.70]
[ebuild     U ] sys-libs/zlib-1.2.2 [1.2.1-r3]
[ebuild     U ] sys-devel/bison-1.875d [1.875]
[ebuild     U ] sys-apps/portage-2.0.51-r15 [2.0.51-r3]
[ebuild     U ] sys-devel/gcc-config-1.3.8-r4 [1.3.6-r4]
[ebuild     U ] sys-devel/binutils-2.15.92.0.2-r1 [2.15.90.0.1.1-r3]
[ebuild     U ] sys-devel/gcc-3.3.5-r1 [3.3.4-r1]
[ebuild     U ] dev-lang/perl-5.8.5-r4 [5.8.5-r2]
[ebuild     U ] dev-libs/openssl-0.9.7e [0.9.7d-r2]
[ebuild     U ] dev-lang/python-2.3.4-r1 [2.3.4]
[ebuild     U ] dev-libs/libxml2-2.6.16 [2.6.15-r1]
[ebuild     U ] x11-misc/shared-mime-info-0.14-r1 [0.14]
[ebuild  NS   ] sys-devel/autoconf-2.13
[ebuild  N    ] sys-devel/autoconf-wrapper-2-r1
[ebuild     U ] sys-devel/autoconf-2.59-r6 [2.59-r5]
[ebuild     UD] sys-devel/automake-1.5 [1.8.5-r1]
[ebuild  NS   ] sys-devel/automake-1.8.5-r3
[ebuild  NS   ] sys-devel/automake-1.6.3
[ebuild  NS   ] sys-devel/automake-1.7.9-r1
[ebuild  NS   ] sys-devel/automake-1.4_p6
[ebuild  N    ] sys-devel/automake-wrapper-1-r1
[ebuild  NS   ] sys-devel/automake-1.9.4
[ebuild     U ] media-libs/libpng-1.2.8 [1.2.7]
[ebuild     U ] app-arch/bzip2-1.0.2-r5 [1.0.2-r3]
[ebuild     U ] x11-base/opengl-update-2.0_pre5 [1.8.2]
[ebuild     U ] x11-base/xorg-x11-6.8.0-r4 [6.8.0-r3]
[ebuild     U ] x11-terms/xterm-197 [196]
[ebuild     U ] media-libs/tiff-3.7.1-r1 [3.7.1]
[ebuild     U ] x11-libs/gtk+-2.4.14 [2.4.13-r1]
[ebuild     U ] rox-base/rox-2.2.0 [2.1.3]
[ebuild     U ] x11-terms/mlterm-2.9.1 [2.9.0]
[ebuild     U ] sys-kernel/linux26-headers-2.6.8.1-r2 [2.6.8.1-r1]
[ebuild     U ] app-i18n/uim-0.4.5.1 [0.4.5]
[ebuild     U ] sys-apps/procps-3.2.4-r2 [3.2.3-r1]
[ebuild     U ] app-arch/cpio-2.6-r1 [2.5]
[ebuild  NS   ] sys-kernel/gentoo-dev-sources-2.6.10-r6
[ebuild     U ] media-libs/giflib-4.1.3 [4.1.0-r3]
[ebuild     U ] media-libs/libungif-4.1.3 [4.1.0.1b]
[ebuild     U ] media-libs/imlib2-1.2.0-r1 [1.1.2]
[ebuild     U ] x11-wm/fluxbox-0.9.12-r1 [0.9.11]
[ebuild     U ] app-i18n/scim-1.0.2 [1.0.1]
[ebuild     U ] sys-devel/bin86-0.16.16 [0.16.13]
[ebuild     U ] sys-devel/libtool-1.5.10-r4 [1.5.2-r7]
[ebuild     U ] sys-apps/gawk-3.1.3-r2 [3.1.3-r1]
[ebuild     U ] net-fs/autofs-4.1.3-r2 [3.1.7-r5]
[ebuild     U ] x11-themes/gtk-engines-xfce-2.2.5 [2.1.7]
[ebuild     U ] sys-apps/psmisc-21.5 [21.4]
[ebuild     U ] app-shells/zsh-4.2.3 [4.2.1-r1]
[ebuild     U ] sys-libs/pam-0.77-r6 [0.77-r1]
[ebuild     U ] net-print/cups-1.1.23-r1 [1.1.23_rc1]
[ebuild     U ] app-editors/vim-core-6.3-r4 [6.3-r3]
[ebuild     U ] app-editors/vim-6.3-r4 [6.3-r2]
[ebuild  N    ] app-vim/gentoo-syntax-20041227
[ebuild     U ] sys-fs/reiserfsprogs-3.6.19 [3.6.18]
[ebuild     U ] dev-libs/libpcre-5.0 [4.5]
[ebuild     U ] x11-libs/qt-3.3.4-r2 [3.3.3]
[ebuild     U ] kde-base/kdelibs-3.3.2-r2 [3.3.2-r1]
[ebuild     U ] media-sound/amarok-1.2 [1.1.1-r2]
[ebuild     U ] media-libs/svgalib-1.9.19-r3 [1.9.19-r1]
[ebuild     U ] media-gfx/gnuplot-4.0-r1 [3.8j]
[ebuild     U ] media-video/kplayer-0.5.2 [0.2.0]
[ebuild     U ] sys-apps/shadow-4.0.5-r3 [4.0.5-r2]
[ebuild     U ] sys-apps/ed-0.2-r6 [0.2-r4]
[ebuild     U ] app-emulation/wine-20050111 [20041019]
[ebuild     U ] dev-util/kdevelop-3.1.2 [3.1.0]
[ebuild     UD] net-misc/rsync-2.6.0-r3 [2.6.3]
[ebuild  N    ] dev-perl/Locale-gettext-1.01-r1
[ebuild     U ] sys-apps/help2man-1.33.1 [1.29]
[ebuild     U ] sys-apps/coreutils-5.2.1-r4 [5.2.1-r2]
[ebuild     U ] x11-libs/openmotif-2.2.3-r1 [2.1.30-r5]
[ebuild     U ] app-text/xpdf-3.00-r8 [3.00-r7]
[ebuild  N    ] sci-libs/fftw-3.0.1
[ebuild  N    ] media-libs/libsamplerate-0.1.1-r1
[ebuild  N    ] app-cdr/dvd+rw-tools-5.21.4.10.8
[ebuild     U ] app-cdr/k3b-0.11.18 [0.11.17]

ぎゃぁぁぁ! 助けてくれぇ! X.org のアップデートも含まれてる... KDE が入ってないだけマシか...

kdevelop だけ消しとこ...

[Gentoo] Gentoo Linux 2.6 完全移行! (4)

ついに終わりました.長い道のりでした.

これで再起動を掛ければ完璧です.

[Gentoo] Gentoo Linux 2.6 完全移行! (3)

さらに,今日も終わりそうにありません.

PORTAGE_NICENESS=5 を指定してますが,さすがに時間が掛かりすぎなので,nice 値を 0 に戻しました.

[Gentoo] emerge の多重起動

かなり前からやっていたのですが,私は emerge を複数起動しています.

今のところ,一方の emerge がファイルを更新している間,もう一方の emerge はコンパイルの真っ最中,という状況が続いており,ファイルの更新が衝突する事態は起こっていません.

衝突が起こったら... どうなるんでしょう.

[Gentoo] Gentoo Linux 2.6 完全移行! (2)

コケてました.何度やっても emerge スクリプトが落ちるので,--skipfirst を付けて再度実行.

残り 330 パッケージ...

今日中には終わりそうにありません.

[Gentoo] Gentoo Linux 2.6 完全移行!

Gentoo Linux 2.6完全移行ガイドとしてついに翻訳が完了していたようです.

読むと,以前は使用しないほうがいいと書かれていた sys-kernel/linux-headers を sys-kernel/linux26-headers と交換して glibc を再マージしています.

これは Gentoo 公認と判断して,こちらでもカーネルヘッダを Linux 2.6 のものに交換します.

そうです,カーネルだけ sys-kernel/gentoo-dev-sources-2.6.9-r9 を使用していた私が,ついに完全 2.6 化へ向けて一歩前進するのです.

というわけで実行.

# emerge -C linux-headers
# emerge linux26-headers
# vim /etc/make.conf
(USE="nptl" を追加)
# emerge glibc
# emerge -e world

さあ,パーティが始まりました.月曜には終わってることを願いましょう.

[Gentoo] そして acpid もインストール

さらに sys-apps/acpid もインストールしてみました.

% sudo emerge acpid
% sudo rc-update add acpid boot

[Gentoo] さらに kde-i18n

kde-base/kdebase に続き,kde-base/kde-i18n も emerge.

% sudo -s
# LINGUAS="ja" emerge kde-i18n

また時間がかかるかと思いきや,時間はそれほどかからず.どうやらメッセージカタログらしきものだけをインストールした様子.

これで日本語の Konqueror が使えます.

EPS の図を手軽に取り扱いたいがために Konqueror をインストールしてみたものの... そっちはまだ試してません.

[Gentoo] I am a very stupid boy.

本日午前 11 時 48 分,私はついに愚かな行動に出ました.

% sudo emerge kde

本日午前 11 時 57 分,私は愚かさを悔い,次のコマンドに改めました.

% sudo emerge kdebase

私が欲しているのは konqueror だけなのです.

[Gentoo] dvi2tty の続き

日本語が出ません.さようなら dvi2tty.

というより,元々 dvi2tty は私の求めていたものではなかったようです.

[Gentoo] dvi2tty

Gentoo の Portage を眺めていると... dev-tex/dvi2tty というディレクトリがあるのを発見.

これはもしや...! 後で emerge してみよっと.

[Gentoo] 謎めいたメッセージ

emerge sync を実行すると... 変なメッセージが出てきました.

見たことのないメッセージだったので,私はエラーかと思い,そしてよく眺めると...

(                                          )
( hyahho-! yappa gentoo tte tano shi- na-! )
(                                          )
(   o   \o/   o/   o~  \o/  \o~  ~o    o/  )
(  -|-   |   -|   -|-   |    |-  -|-  -|   )
(  /|    |\  /|    |\  /|    |\  /|   /|   )
(                                          )

なんじゃこりゃ.

まあ,確かに Gentoo は楽しいです.インストールさえしてしまえば他のディストリビューションと変わりませんよ.

[Gentoo] 自宅マシンにも Gentoo

研究室マシンでは kernel 2.4 から 2.6 に移行する形を取りました.今回自宅マシンに Gentoo Linux をインストールするにあたり,いきなり 2.6 を入れてみようと思います.

[Gentoo] 再び 2.6 へ

古き良き Fedora 時代のカーネルを追い求めて,私は旅立ちます.unstable の世界へ...!

# sudo /usr/portage/scripts/bootstrap-2.6.sh

おやすみなさい.目覚めた時は 2.6 が make できるようになっていることを祈ります.

[Gentoo] Gentoo Linux いじり

xdm を rc-update add して無事 gdm が起動するようになったのは OK なのですが,ログアウト後 gdm の画面に戻る瞬間にシステムが死ぬという,Fedora 時代にも発生していた現象が発生しました.無念.

原因はよく分かっていませんが,おそらく X サーバのドライバ r128.o (ATI Rage 128 用ドライバ)と,フレームバッファのドライバ aty128fb が競合しているせいだと思い込んでいます.

Fedora を使用していた時からドライバの競合が原因だと判断していた私は,今まで X サーバのドライバを fbdev.o (カーネルのフレームバッファをそのまま使用するドライバ)にすることで解決していました.しかし今はせっかく Gentoo Linux をインストールしたことですし,パフォーマンス向上の名においてフレームバッファを無効にすることにします.

フレームバッファを無効にし,再びカーネルコンパイル.さようならフレームバッファ.alsa-driver も emerge します.さて再起動.うまく動作してくれるかな?

あちゃー.カーネルオプションの IDE 周りをいろいろ変更したため,ide が PIO モードになっています.hdparm を実行しても怒られます.またカーネルと alsa-driver は作り直しです.これも Linux ユーザなら避けて通れぬ道です,きっと.

alsa-driver のコンパイルですが,デフォルトでは対応している全てのサウンドカードのドライバをコンパイルするので,カーネルのコンパイルより時間がかかってます.ebuild を作って snd-intel8x0 だけコンパイルするようにしないといけませんね.

media-sound/alsa-driver/alsa-driver-1.0.6a.ebuild を改造しようとして中身をエディタで開くと,18 行目に ALSA_CARDS なる環境変数をチェックしている箇所がありまして... つまり私が当初の目的を達成するために ebuild を改造する必要は皆無というわけですね.さすがです! これからは ALSA_CARDS=intel8x0 emerge alsa-driver します.

[Gentoo] Gentoo Linux をインストール (続き)

まだまだ続く Gentoo のインストール.次は X の設定です.

# vim /etc/X11/XF86Config

XF86Config を作成し,dri と glx を有効にします.その次は fluxbox です.

# emerge fluxbox

他にもいろいろインストールしなければなりませんでした.

# emerge ptex xdvik ghostscript mlterm fetchmail cups

そして,Portage ツリーを歩いていると,X.org を発見.今までの苦労をパーにして,XFree86 を X.org に交換.

目的は ttcap 拡張を採り入れた freetype モジュールによる xfs を使用することです.Fedora Core 2 test 1 には存在していた点から X.org にデフォルトで入っているものと信じています.

# emerge -C xfree
# emerge xorg-x11

X.org コンパイル開始は午前 8 時 10 分くらい.

コンパイル終了は午前 10 時くらい.

さて,XF86Configxorg.conf に引き継いで,X を起動してみます.

さすが X.org です.freetype モジュール付きで ttcap 拡張を認識してくれました.

次は... あの味気ないコンソールを美しくします.とその前に,kernel-2.6 でやらなければならない大切なことがあります.

# emerge alsa

音を鳴らすアプリケーションは xmms だけですし,OSS で音が鳴るので別に困らないのですが,私は Windozer 故新しいものを追い求めます.

さーて,alsa インストール完了? っと.

# ls /etc/init.d/alsasound

alsa の起動スクリプトがない! と思ったらただのインストールし忘れでした.

# emerge alsa-utils
# rc-update add alsasound default

ん,snd-intel8x0 が入らない.良く考えると,カーネルに OSS のドライバを組み込んだままでした.

# cd /usr/src/linux
# make menuconfig
# make dep
# make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot

カーネル作る度に alsa も一緒に作りなおすのが非常に面倒!

さて,ほぼインストール完了です.長い道のりでした.最後に小物を少々.

# emerge scim scim-uim scim-m17n procmail

うーん,Portage いいですねー.ソースを探しに行く手間が省けます.いつでもインストールしたいときにインストール.

というわけでめでたく研究室マシンには Gentoo Linux がインストールされました.

[Gentoo] Gentoo Linux をインストール

なんだかんだで Gentoo に手を出してしまいました.今は午前 3 時 47 分... そして現在ステージ 1 実行中... なんて綺麗なフレームバッファコンソールなんでしょう.ところが...

「何だ何だこのエディタは! nano だと! そんな馬鹿な! Linux には必ず vi だけはあると信じていたのに!」

vim はいいとして,vi さえありません.したがって設定ファイルの変更は拷問と化します.

/boot と / は ext3 にしておいて,/home は ReiserFS にしてみました.小さいファイルを多数扱うので,ReiserFS がどれくらいのパフォーマンスを出すか,ちょっと楽しみです.

# mkfs.ext3 /dev/hda1
# mkfs.ext3 /dev/hda2
# mkswap /dev/hda3
# mkreiserfs /dev/hda4

取得したのは Stage2 圧縮ファイルなのですが,途中で気が変わったので /etc/make.conf をいじって Stage1 から始めます.

# cd /usr/portage
# scripts/bootstrap.sh

いつ終わるかな... Stage1... 部屋に戻ろう.

朝来ると,Stage1 が終わっていました.さあ,Stage2 の始まりです.

# emerge -pu system
# emerge system

お次はカーネルの構築です.Fedora Core 3 test 2 で kernel-2.6.8 を使っていたのですが,ここで kernel-2.4 に逆戻りです... ま,いいか.

# emerge gentoo-sources
# cd /usr/src/linux
# make menuconfig
# make dep
# make clean bzImage
# make modules
# make modules_install

kernel-2.6 の何が良かったかというと,make が非常に楽だったことですよ! make dep とか書く必要なかったんです... ま,いいか.

# emerge xfree86
# VIDEO_CARDS="rage128" emerge x11-drm

ATI Rage 128 でとりあえず drm を有効に.

いろいろやっていたら,夕方になっていました.

# emerge syslog-ng
# rc-update add syslog-ng default
# emerge vixie-cron
# rc-update add vixie-cron default
# emerge reiserfsprogs
# emerge app-admin/sudo

おっと,非常に大切なプログラムを作らないと!

# emerge vim
# emerge zsh
# emerge screen

root のパスワードを設定し,ユーザを作成します.

# passwd
# useradd -m -G users,audio,wheel -s /bin/zsh hoge
# passwd hoge

ホスト名とネットワークの設定をします.NIC のドライバはカーネルに組み込んでいるので問題なし.

# vim /etc/hostname
# vim /etc/dnsdomainname
# rc-update add domainname default
# vim /etc/conf.d/net
# vim /etc/rc.conf

なんてスッキリした /etc/rc.conf なんでしょう.Gentoo に感動します.

毎日見ることになる X の顔,ディスプレイマネージャをインストールします.私は gdm 派です.だって綺麗なんだもん.

# emerge gdm

これがまた時間のかかることです.依存関係をクリアし,gdm-pixbuf からコンパイルを始めたようです.現在 18 時 33 分.例によって待ちます.

現在 19 時 48 分.やけに時間がかかるなーと思い,今ふとコンソールを見やると,なんか dvipdfm をコンパイルしています.gdm は一体何に依存しているんだ!

やっと gdm がインストールされました.お次は grub です.

# emerge grub
# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

諸々の設定を終了し,遂にこのときがやってまいりました.そうです,reboot です.長かった...

# etc-update
# exit
# umount /mnt/gentoo/boot
# umount /mnt/gentoo/proc
# umount /mnt/gentoo
# reboot

現れたのはフレームバッファ + 「普通のコンソール」でした.まだ設定が足りないようです.あの美しいコンソールをこの手にしたい!

NIC のドライバを間違ってカーネルに組み込んでいました.カーネル再コンパイルです.

再び NIC のドライバを間違ってカーネルに組み込んでいました.再びカーネル再コンパイルです.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Sun Jan 18 14:09:47 JST 2009