gentooで日本語が使える快適なcui環境を構築する備忘録

追記:
もうここには書かないつもりだったけど重要なので書きます
ibus-fbtermが本家に取り込まれました
それにより依存していたfbtermも本家に取り込まれたみたいです
なのでlaymanはいりません

この記事は現在執筆中につき不完全です
不完全と言ってもtmux上で256colorが表示できないぐらいです
screen上でならできるみたいです
screen上じゃなくてもできるようになりました。一番下に近い追記に書いておきました
コマンドにはわかりやすいように行頭に#を書いておきます
root権限じゃないとダメだよって意味じゃないです
けどないとこれからするほとんどのコマンドができないと思います

Q.これをするとどんなことができるの?
X11を立ち上げなくてもCUIの解像度があがって日本語が扱えて256 colorで快適に過ごせます
(ssh経由の人やX11を常に使っている人にはいらないですね…)

執筆時点でのuname -a
Linux localhost 3.2.12-gentoo #7 SMP Mon Jun 4 18:46:16 JST 2012 i686 Intel(R) Pentium(R) 4 CPU 3.20GHz GenuineIntel GNU/Linux

執筆時点での各バージョン
sys-kernel/gentoo-sources-3.2.12
sys-apps/v86d-0.1.10
app-i18n/fbterm-1.7
app-portage/layman-1.4.2-r3
app-portage/eix-0.25.5
app-i18n/ibus-fbterm-0.9.1
(ibus-fbtermはoverlayにもないのでemergeしても入りません)

必要なもの
v86dとカーネルのソースとfbtermを入手するためにlaymanぐらいかな
eixは別になくても今のところは特に問題はない
laymanはuseにgitあれば今のところ問題ないけどsubversionもあってもいいかもしれない
(overlayのgentoo-zhはgitがあれば落とせるので。)
後は日本語入力したいならibusも必要
uimの場合はまだ筆者がやってないからわからない

やり方
まずはカーネル再構築をする必要があるので
    # emerge -va sys-kernel/gentoo-sources
でもしておいて、次に解像度を指定できるように
    # emerge -va sys-apps/v86d
をする(x86系のCPUじゃないならUSEにx86emuがいるかもしれないけどそんな環境ないのでわかりません)
fbtermはoverlayにあるので
    # emerge -va app-portage/layman
これを落として楽にできるようにしましょう(そもそもこの方法じゃないやり方が存在するのかしらない)
どのoverlayから落とすのか確認するために
    # emerge -va ">=app-portage/eix-0.25.5"
をする(筆者の環境で執筆時点でstableのversion:eix-0.23.10だとeix-remote update時に何故かエラー出る)

ここまで来たらまずはfbtermを落としたいのでどのoverlayにあるかわかりませんし
(執筆時点ではgentoo-zhとgentoo-taiwanにあります)
    # eix-remote update
を実行して全てのoverlayからパッケージを検索できるようにします
    # eix fbterm
そしてこれを実行すると以下のような文字が帰ってきます
__前略__
[I] app-i18n/fbterm
     Available versions:  ~1.4[1] ~1.4[2] ~1.5[1] ~1.5[2] ~1.6[1] ~1.6[2] (~)1.7[1] (~)1.7[2] {{caps gpm video_cards_vesa}}
     Installed versions:  1.7[1](12:29:21 AM 06/06/2012)(gpm -caps -video_cards_vesa)
     Homepage:            http://fbterm.googlecode.com
     Description:         fast FrameBuffer based TERMinal emulator for Linux
__中略__
[1] "gentoo-taiwan" layman/gentoo-taiwan
[2] "gentoo-zh" layman/gentoo-zh
__後略__
これの見方はバージョン名の後ろに書かれている[1]とか[2]は下に書いてあるoverlayにあるよ
ということです。書いていない場合はoverlayではなくそのまま落とせる奴です
gentoo-taiwanとgentoo-zhにあることがわかりましたが
gentoo-taiwanでやるとeselect newsにgentoo-taiwanともう1つの何か(覚えてない)は
gentoo-zhに統一されます。なのでgentoo-taiwanは使わないでねと書いてあるので
ここは素直にgentoo-zhを選びましょう
    # layman -a gentoo-zh
で可能です(layman -Lで一覧が見れます。)
追加できたことを確認するために
    # layman -l
を実行してgentoo-zhという文字列があったら追加できてます
次に追加したoverlayのgentoo-zhを更新します
    # layman -S
これでemergeでインストールができるようになったので
    # emerge -va app-i18n/fbterm
を実行してインストールします

これでインプットメソッド以外の一通りの必要なものは揃いました
(インプットメソッドは最後に設定することにします。理由はこの文章を書いているときには)
(まだやり方がわかっていないからなのです)
次にカーネルの再構築を行います
    # cd /usr/src/linux
これでソースがあるところに移動して
    # make menucofig
Gentoo Linuxにおけるグラフィカルな起動画面とuvesafbについて(Linux 2.6.23以降) - 試験運用中なLinux備忘録
このサイトを参考に
 Device Drivers  --->
 +Graphics support  --->
  +Support for frame buffer devices  --->
  |+<*>   Userspace VESA VGA graphics support
  +Console display driver support  --->
   +[*]   Support for the Framebuffer Console Decorations
を有効にして
    # make bzImage
でもしてカーネルを再構築して
/usr/src/linux/arch/i386/boot/bzImageを決まった場所に入れる
次に解像度が勝手に変わるように
(grubを使用している場合の話です。liloなどの人は各自調べてください)
/boot/gurb/grub.confなどを開いて
    kernel /linux-3.2.12-gentoo root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap
こんな感じにvideo=uvesafb:1280x1024-32,mtrr:3,ywrapを追加する
1280x1024-32の部分は解像度と色の設定です。各自自分の環境にあわせてください
(どの解像度が設定できるかはcat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modesでわかります)
(このサイトを参考にしました)
こつこつDebian フレームバッファとのたたかい

設定が終わったなら再起動をすれば解像度が変わっているはずです
ログインした後に
    # fbterm
と打てば日本語が使える環境になっているはずですが
大抵の場合は/dev/fb0に対する権限がないと怒られるので
    # gpasswd -a ユーザー名 video
を実行します。するとrootじゃなくてもfbtermが使えます
(ユーザー名のところは自分のユーザー名に置き換えてください。言わなくてもわかってると思うけど)
初期設定だととても見にくいですし恐らく8bit colorじゃないので
~/.zshrcなどのshellの設定ファイルに
Check if fbterm is running - Linux Note
このサイトを参考にして
    if grep '^fbterm' /proc/$PPID/cmdline > /dev/null; then
        export TERM=fbterm
    fi
を追加しておきます。これでfbtermを起動すると$TERMがfbtermになって8bit colorが有効になります
(そんなのしたくねえよという方はここにパッチがあるので当てて~/.fbtermrcにterm=fbtermを追加すれば良し)
Issue 48 - fbterm - Fbterm should set the TERM to fbterm not linux. - a fast FrameBuffer based TERMinal emulator for linux - Google Project Hosting
次にフォントを変えたい場合は
~/.fbtermrcの
    font-name=
    font-size=
で変えることができます。それぞれフォント名とフォントのサイズを指定します
(ちなみに筆者はフォントにRictyを採用している)
次にアンチエイリアスなどをかけたい場合は
~/.fonts.confに
Ubuntu日本語フォーラム / fbterm が framebuffer を認識しない
のサイトを参考にしながら
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <edit name="hinting" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign">
            <const>hintslight</const>
        </edit>
        <edit name="embeddedbitmap" mode="assign">
            <bool>false</bool>
        </edit>
        <edit name="antialias" mode="assign">
            <bool>true</bool>
        </edit>
    </match>
</fontconfig>
を追加します

これでインプットメソッド以外の環境を整え終えました
というわけで日本語が入力できないので
ibusを使う場合はibus-fbtermを
uimを使う場合はemerge -va app-i18n/uimをした時についてくる/usr/bin/uim-fepを
(どのパッケージでどの実行ファイルが出来るかはe-fileを使用すれば調べることができます)
(emerge -va app-portage/pflで入ります。便利です)

それではまずuimを使う方法を書きます
こちらは非常に簡単で
    # emerge -va app-i18n/uim
をするだけ。
後は筆者の環境だとデフォルトのキーバインドだと動かなかったので
/usr/share/uim/generic-key-custom.scmを
(define-custom 'generic-on-key '("<Control> " "<Control>\\" "zenkaku-hankaku")
と
(define-custom 'generic-off-key '("<Control> " "<Control>\\" "zenkaku-hankaku")
こんな感じにするとC-space または C-\ または zenkaku-hankaku(何故かこれは動かない)
で全角と半角を切り替えることができます
起動するには
    # uim-fep -u anthy
のように打つだけです。後ろの引数はどのインプットメソッドを使うか指定しています
(mozcを使いたい場合はgentooでuim-mozcを使う方法)

次にibusを使う場合を書きます

以下の内容は素人がebuildを作成しているので注意

※ここから先はibus-1.4.0-14以上を導入済みとして進めていきます
(ちなみに筆者はibus-mozcを使ってます)

ibus-fbtermを導入したいがoverlayにもないのでローカルoverlayを
Using custom ebuilds with Gentoo (Linux Reviews)
このサイトを参考にしながら作る
(やったことないけどgentoojpにでも投げてみようかな)
    # mkdir -p /usr/local/portage/app-i18n/ibus-fbterm/files/
/etc/make.confにPORTDIR_OVERLAY="/usr/local/portage"を追加
/usr/local/portage/app-i18n/ibus-fbterm/ibus-fbterm-0.9.1.ebuildに以下の内容にして
保存する
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=4
inherit eutils

DESCRIPTION="ibus-fbterm is a input method for FbTerm based on iBus."
HOMEPAGE="http://ibus-fbterm.googlecode.com"
SRC_URI="https://ibus-fbterm.googlecode.com/files/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="x86"
IUSE=""

RDEPEND=">=app-i18n/ibus-1.4.1
    app-i18n/fbterm"
DEPEND="${RDEPEND}"

src_prepare(){
    epatch "${FILESDIR}"/${P}-ibus-1.4.0-14.patch
}

次にibus-1.4.0-14からAPI周りが変わったらしくてそのままだとコンパイルできないみたいだから
AUR (en) - ibus-fbterm
このサイトを参考にして
/usr/local/portage/app-i18n/ibus-fbterm/files/ibus-fbterm-0.9.1-ibus-1.4.0-14.patchの中身を
以下の内容にする
 diff -Nurap ibus-fbterm-0.9.1.orig//src/display.c ibus-fbterm-0.9.1//src/display.c
--- ibus-fbterm-0.9.1.orig//src/display.c    2012-06-06 17:59:26.000000000 +0900
+++ ibus-fbterm-0.9.1//src/display.c    2012-06-06 18:05:22.000000000 +0900
@@ -212,7 +212,7 @@ static void calculate_status_win()
         IBusProperty *prop = ibus_prop_list_get(property_list, i);
         if (!prop) break;
 
-        w += text_width(prop->label->text);
+        w += text_width(ibus_property_get_label(prop)->text);
     }
 
     status_bar_win.x = cursor_x;
@@ -238,8 +238,8 @@ static void draw_status_bar()
         IBusProperty *prop = ibus_prop_list_get(property_list, i);
         if (!prop) break;
 
-        draw_text(x, y, COLOR_FG, COLOR_BG, prop->label->text, strlen(prop->label->text));
-        x += FW(text_width(prop->label->text));
+        draw_text(x, y, COLOR_FG, COLOR_BG, ibus_property_get_label(prop)->text, strlen(ibus_property_get_label(prop)->text));
+        x += FW(text_width(ibus_property_get_label(prop)->text));
 
         char space = ' ';
         draw_text(x, y, COLOR_FG, COLOR_BG, &space, 1);
保存をしたら後は
    # emerge -va app-i18n/ibus-fbterm
で導入ができるはず
後は端末から(fbterm上からではない)
    # ibus-fbterm-launch
をすると起動できてC-Spaceで日本語打てるようになる
ただ、不具合なのか確定してない文字は表示されない…とりあえずこれは又の機会に

以下余談
今回の反省点はebuildの依存関係あたりを何もやっていないということ
そもそもibus-fbtermが何に依存しているのかがわからないのでしゃあない
(fbtermとibusは確実だけども…)
追記:依存関係はちゃんと書きました。足りないのあるかもしれないけどね
それとtmux上だと256colorにならないのと (ちゃんとtmux -2と256colorになるようにオプションをつけている)
256colors2.plをfbterm上でやると明らかにバグる
但しscrenn上だとどちらもちゃんとなるが
fbtermでやるとどちらも何故か一部の黄色がオレンジ色に見えるので色の設定が若干おかしい
追記:patchを当てることで256color化ができました
これを使えばいいです
uimでmozc使いたい 使えるようになりました -> gentooでuim-mozcを使う方法
gentoojpに投げてみたけどよくわからなかったので本家にも投げてみました
こちらも英語でよくわからなかったけどね…

  • 最終更新:2012-06-22 10:43:11

このWIKIを編集するにはパスワード入力が必要です

認証パスワード