2009年10月27日火曜日

毛筆フォントのインストール

要約

年賀状のシーズンが近づいているので、フリーの毛筆フォントをインストールしてみた。

参考文献

http://park15.wakwak.com/~unixlife/linux/de-font2.html

必要なパッケージ

http://musashi.or.tv/ からリンクをたどり、http://musashi.or.tv/kouzanmouhitufont.htm の「ダウンロード」の箇所から、Windows TrueTypeフォントのダウンロードをクリックし、KouzanMouhituFont.zip をダウンロードする。

作業内容

このパッケージに入っているフォントのファイル名は shift-jis になっている。そこで gnome-terminal を起動し、「端末(T)」、「文字コードの設定(C)」、「ユーザー定義(SHIFT-JIS)」を選択する。そうしておいてから、以下のようにパッケージを展開する。

$ cd work
$ mkdir aoyagi-kozan
$ cd aoyagi-kozan
$ cp ~/ダウンロード/KouzanMouhituFont.zip .
$ unzip KouzanMouhituFont.zip
$ mv 衡山毛筆フォント.ttf KozanMohituFont.ttf
そして、フォントファイル名を日本語から ascii コードのファイル名に変えておく。こうすれば、通常の utf8 の端末でも扱える。

それから文字コードを utf8 にした端末で、以下のようにインストールする。

$ su
# cd /usr/share/fonts/truetype/
# mkdir kozan
# cd kozan
# cp /home/fumi/work/aoyagi-kozan/KozanMohituFont.ttf .
# cd /etc/defoma/hints/
# defoma-hints truetype \
/usr/share/fonts/truetype/kozan/KozanMohituFont.ttf > KozanMohituFont.hints
# defoma-font -vt register-all KozanMohituFont.hints 
# fc-cache -f -v

OpenOffice.org 3.1.1 のインストール

要約

そろそろ年賀状の心配をしなければならない季節になったが、Debian 5.0.3 "lenny" にインストールされている OpenOffice.org 2.4 は縦書きの文字が表示されないというバグがあるらしい。実際にそういう現象が発生した。

Debian のパッケージには、それ以降のバージョンのパッケージが無いようなので、OpenOffice.org のサイトからダウンロードしたパッケージをインストールしてみた。

必要なパッケージ

参考文献

作業内容

既存パッケージの削除

最初、もともと入っていた OpenOffice.org 2.4 を削除せずに、OpenOffice.org 3.1.1 をインストールしたら、処理上はインストールされたように見えたのだが、実際はなにもインストールされていなかった。

そこでまず、既存の OpenOffice.org 2.4 を何とかして削除する。ついでにうまくインストールされていなかった 3.1.1 の分も削除する。以下のコマンドは少々あやふや。

$ sudo aptitude purge openoffice.org
$ sudo aptitude purge ~ooobasis3.1*
$ sudo aptitude purge ~nopenoffice.org-*
削除する時は "-s" オプションを併用して、事前に確認した方がいいと思う。

JAVA ランタイム環境のインストール

次に JAVA ランタイム環境をインストールする。

$ sudo aptitude install openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib

OpenOffice.org 3.1.1 のインストール

それから OpenOffice.org 3.1.1 をインストールする。

$ tar xvzf OOo_3.1.1_LinuxIntel_install_ja_deb.tar.gz 
$ cd OOO310_m19_native_packed-1_ja.9420/
$ cd DEBS/
$ sudo dpkg -i *
$ cd desktop-integration/
$ sudo dpkg -i openoffice.org3.1-debian-menus_3.1-9420_all.deb
これでインストール作業は完了。

フォントの置換

OpenOffice.org 3.1.1 で使われているデフォルトのユーザーインタフェース用フォントは多少見づらいので、フォントの置換機能を使って別のフォントに置き換えてみる。

メニューバーの「ツール(T)」「オプション(O)...」とたどり、オプションの設定ダイアログを出す。ダイアログが出たら、左側のツリーから「フォント」を選ぶ。

次に右側のパネルにある「置換テーブルを使う(A)」をチェックする。そしてその下の「フォントの種類(F)」 のテキストエリアに Andale sans UI と入力する。さらにその右側にある「置換候補(P)」 のテキストエリアに、代わりに使用するフォントをプルダウンメニューから選択する。そしてその右側にあるチェックボタンをクリックする。するとその下にあるリスト領域に登録される。

最後に、そのリスト領域の左端にある「常に」のチェックボックスをクリックしておく。

これでたしかにフォントは変化するのだが、設定パネルでアンチエイリアスを有効にしてあるにしては、ビットマップフォントのような印象を受ける。

2009年10月22日木曜日

dia 0.97 インストールの記録

要約

Debian の dia パッケージでなんら不足は無かったのだが、 ためしに最新バージョンをビルドしてみた。

ビルド環境

Debian 5.0.3 "lenny" でビルド。

必要なパッケージ

Dia 本家よりリンクをたどり、 dia-0.97.tar.bz2 をダウンロードする。 他にも各種パッケージが必要だったが、それについては、その都度インストールした。

結局インストールしたものは次のとおり。

  • libart-2.0-dev パッケージ
  • libEMF
  • libgnome2-dev パッケージ
  • libgnomeui-dev パッケージ
  • python2.5-dev パッケージ
  • swig1.3 パッケージ
  • libwmf-dev パッケージ
  • libwmf-bin パッケージ
  • docbook-utils パッケージ
  • dblatex パッケージ

作業内容

configure

configure 1回目

ソースパッケージを展開後、 とりあえず何もオプションを指定せずに configureを実行してみた。 するとエラーが出た。 つまり「intltool-update というコマンドが見つからない」というわけである。

調べてみると、このコマンドは妙なところにあった。

$ locate  intltool-update
/usr/share/intltool-debian/intltool-update

$ file /usr/share/intltool-debian/intltool-update
/usr/share/intltool-debian/intltool-update: a /usr/bin/perl -w script text executable
このような場所はコマンドの検索パスに無いから見つからなくて当然である。

configure 2回目

そこで以下を実行した。

$ PATH=/usr/share/intltool-debian:$PATH ./configure

結果は次のようになった。

Configuration:
 Source code location: .
 Compiler:  gcc

 Gnome support:    no
 Python support:    no
 Libart support (PNG export):  no
 Cairo support (PNG, PDF, print): yes
 Dia Python bindings with SWIG  no
 WMF plug-in with libEMF:                no
 html doc:                               no
 pdf and ps doc:                         no

libart の開発環境インストール

これではあまりに寂しいので、まずは libart の開発環境をインストール。

$ sudo aptitude install libart-2.0-dev

libEMF のインストール

このライブラリは Debian のパッケージに無かったので、自前でインストールした。 libEMF 本家からリンクをたどり、ECMA-234 Metafile Library のページから libEMF-1.0.4.tar.gz をダウンロードする。

あとは、パッケージ付属のドキュメントを読んでから、以下のように構築。

$ ./configure --enable-editing
$ make
$ sudo make install
$ sudo /sbin/ldconfig

configure 3回目

以下を実行

$ PATH=/usr/share/intltool-debian:$PATH ./configure
結果は、
Configuration:
 Source code location: .
 Compiler:  gcc

 Gnome support:    no
 Python support:    no
 Libart support (PNG export):  yes
 Cairo support (PNG, PDF, print): yes
 Dia Python bindings with SWIG  no
 WMF plug-in with libEMF:                no
 html doc:                               no
 pdf and ps doc:                         no

configure 4回目

以下を実行 すると libgnome2.0 not found になった。

libgnome2-dev 開発環境のインストール

そこで libgnome2-dev をインストール。

configure 5回目

以下を実行。 すると No package 'libgnomeui-2.0' found となった。

libgnomeui-dev 開発環境のインストール

そこで libgnomeui-dev をインストール。

configure 6回目

以下を実行。 すると、以下のエラーになった。

checking for python module gtk... yes
checking for headers required to compile python extensions... not found
checking for libpython2.5.a... not found
configure: error: could not find files required to build python plugin

python2.5-dev 開発環境のインストール

そこで python2.5-dev をインストール。

$ sudo aptitude install python2.5-dev

configure 7回目

以下を実行。 すると以下のエラーとなった。

checking for swig... no
configure: WARNING: cannot find 'swig' program. You should look at http://www.swig.org
configure: error: could not find SWIG required to generate the bindings

swig1.3 のインストール

そこで swig1.3 をインストール。

$ sudo aptitude install swig1.3

configure 8回目

以下を実行。 結果は次のとおり。

Configuration:
 Source code location: .
 Compiler:  gcc

 Gnome support:    yes
 Python support:    yes
 Libart support (PNG export):  yes
 Cairo support (PNG, PDF, print): yes
 Dia Python bindings with SWIG  yes
 WMF plug-in with libEMF:                no
 html doc:                               yes
 pdf and ps doc:                         yes
WMF plug-in with libEMF の部分だけが no のままである。

libwmf-dev と libwmf-bin のインストール

そこで libwmf-devlibwmf-bin をインストールしてみる。

$ sudo aptitude install libwmf-dev libwmf-bin

configure 9回目

以下を実行。 しかし、まだダメである。

Configuration:
        Source code location:   .
        Compiler:               gcc

        Gnome support:                          yes
        Python support:                         yes
        Libart support (PNG export):            yes
        Cairo support (PNG, PDF, print):        yes
        Dia Python bindings with SWIG           yes
        WMF plug-in with libEMF:                no
        html doc:                               yes
        pdf and ps doc:                         yes
そこで config.log を調べてみると、 /usr/local/include/libEMF/emf.h が検出されていないことが分かった。

configure 10回目

そこで以下のように CPPFLAGS の定義を追加して実行。 結果は次のとおり。

Configuration:
 Source code location: .
 Compiler:  gcc

 Gnome support:    yes
 Python support:    yes
 Libart support (PNG export):  yes
 Cairo support (PNG, PDF, print): yes
 Dia Python bindings with SWIG  yes
 WMF plug-in with libEMF:                yes
 html doc:                               yes
 pdf and ps doc:                         yes

make

これで全部 yes になったので make してみる。

$ make
結果は
Writing index.html for book(index)
touch dia_html
no -t pdf -T  native \
                -P 'latex.unicode.use=1' \
                -P latex.encoding='utf8' \
                -P 'latex.class.options=oneside' \
                dia.xml
make[3]: no: コマンドが見つかりませんでした
make[3]: [dia.pdf] エラー 127 (無視されました)
make[3]: *** `.epsfigures' に必要なターゲット `ps/graphics/color_selector.eps' 
を make するルールがありません.  中止.
make[3]: ディレクトリ `/home/fumi/src/dia/dia-0.97/doc/en' から出ます
make[2]: *** [all-recursive] エラー 1
make[2]: ディレクトリ `/home/fumi/src/dia/dia-0.97/doc' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/home/fumi/src/dia/dia-0.97' から出ます
make: *** [all] エラー 2
configure の結果には以下の箇所があった。
checking for dblatex... no
checking for jw... no

docbook-utils のインストール

そこで、ひょっとして、と思い、docbook-utils をインストール。

$ sudo aptitude install docbook-utils
以下の新規パッケージがインストールされます:
  docbook-dsssl{a} docbook-utils jadetex{a} libostyle1c2{a} 
  libsgmls-perl{a} libsp1c2{a} openjade{a} sgmlspl{a} sp{a} 

configure 11回目

以下を実行。 すると、以下の箇所でまだ検出されないものがあった。

checking for dblatex... no
checking for jw... /usr/bin/jw

dblatex のインストール

そこで dblatex をインストール。

$ sudo aptitude install dblatex
以下の新規パッケージがインストールされます:
  dblatex doc-base{a} libfreezethaw-perl{a} libmldbm-perl{a} 
  libuuid-perl{a} preview-latex-style{a} texlive-generic-extra{a} 
  texlive-humanities{a} texlive-humanities-doc{a} texlive-lang-cyrillic{a} 
  texlive-latex-extra{a} texlive-latex-extra-doc{a} texlive-pictures{a} 
  texlive-pictures-doc{a} texlive-xetex{a} texpower{a} texpower-manual{a} 

configure 12回目

以下を実行。 これでいずれも検出された。

checking for dblatex... /usr/bin/dblatex
checking for jw... /usr/bin/jw

make 2回目

configure がうまくいくようになったので、 最初からやり直す。 結果は以下のとおり。

Found png for 'graphics/preferences-gridlines'
Found png for 'graphics/file-preferences-tree'
'dia.pdf' successfully built
make[3]: *** `.epsfigures' に必要なターゲット `ps/graphics/color_selector.eps' 
を make するルールがありません.  中止.
make[3]: ディレクトリ `/home/fumi/src/dia/dia-0.97/doc/en' から出ます
make[2]: *** [all-recursive] エラー 1
make[2]: ディレクトリ `/home/fumi/src/dia/dia-0.97/doc' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/home/fumi/src/dia/dia-0.97' から出ます
make: *** [all] エラー 2
make するルールが無いのではいかんともしがたいので、 やむなく --with-hardbooks オプションを削除。

make 3回目

再度やり直し。 これで、ようやくビルド完了。単純だが面倒だった。

2009年10月19日月曜日

USB ハブの導入

要約

Debian 5.0.3 "lenny" をインストールした際、それまで使えていたキーボード用の PS/2 ポートが故障してしまったらしく、キーをタイプしても反応が無くなってしまった。そこでやむなく「PS/2 から USB へ変換するコネクタ」を導入した。しかしマシン本体には USB ポートが2個しかなく、それぞれをマウスとキーボードで占有してしまっている。そうなると、今まで USB 接続していたプリンタ Epson PX-V630 が Debian 機から利用できなくなった。
そこでうまく動作するかどうかわからなかったが、USB ハブを導入することにした。

用意したもの

セルフパワータイプの USB ハブ "Buffalo BHBU2A11BKA"(家電量販店で 2405円)

結果


あっけないほどすんなりと組み込めた。プリンタもマウスも問題なく動作している。

2009年10月9日金曜日

電子辞書環境の構築

要約

Debian に移行した当初は、別に無くてもいいと思い、何もしなかったのだが、いざ調べるときになって、いちいち紙の辞書を調べるのはかなり億劫なものだということがあらためて分かった。そこで電子辞書環境を再度構築することにした。

参考文献

必要なパッケージ

作業内容

辞書データと appendix データのインストール

辞書データ

辞書データは /usr/local/libdata/ebooks 以下にインストールし、appendix データは /usr/local/libdata/ebooks/appendix 以下に、それぞれインストールする。

辞書データにはカタログと辞書データ本体があるので、それを両方ともコピーする。

# <研究社「新英和・和英中辞典」マウント>
# cd /usr/local
# mkdir -p libdata/ebooks/appendix
# cd libdata/ebooks
# mkdir chujiten
# cd chujiten
# cp /mnt/catalogs .
# cp -R /mnt/chujiten .
# cd ..

# <現代用語の基礎知識 2000 CD-ROM 版 マウント>
# mkdir genkiso-2000
# cd genkiso-2000
# cp /mnt/catalogs .
# cp -R /mnt/gn00ep01 .
# cp -R /mnt/gn00ep02 .
# cd ..

# <辞典盤 マウント>
# mkdir jitenban
# cd jitenban
# cp /mnt/catalogs .
# cp -R /mnt/chiezo .
# cp -R /mnt/chujiten .
# cp -R /mnt/iwakoku .
# cp -R /mnt/mypaedia .
# cd ..

# <学研「現代新国語辞典・漢字源」マウント>
# mkdir kokugo_kanji
# cd kokugo_kanji
# cp /mnt/Catalogs .
# cp -R /mnt/KANJIGEN .
# cp -R /mnt/KOKUGO .

appendix データ

appendix データは、ダウンロードした tar アーカイブを /usr/local/libdata/ebooks/appendix 以下にそのまま展開する。

# cd /usr/local/libdata/ebooks/appendix
# tar xvzf chujiten2-2.0.tar.gz
# tar xvzf gendai2000-1.0.tar.gz
# tar xvzf jitenban-2.4.tar.gz
# tar xvzf kanjigen2-2.0.tar.gz

ebnetd サーバーのインストールと設定

eb ライブラリのビルド

eb ライブラリのビルドは以下のとおり。

$ ./configure
$ make
$ su
# make install
# /sbin/ldconfig

ebnetd のビルド

ebnetd のビルドは以下のとおり。

$ ./configure
$ make
$ su
# make install

ebnetd.conf の設定

ebnetd をインストールすると <インストールプレフィックス>/etc/ebnetd.conf.sample ファイルもインストールされる。このファイルを ebnetd.conf としてコピーし、そこに変更を加える。変更内容は以下のとおり。

--- ebnetd.conf.sample 2009-10-09 13:38:33.000000000 +0900
+++ ebnetd.conf 2009-10-09 13:51:11.000000000 +0900
@@ -9,7 +9,7 @@
 
 ### Port number `ndtpd' binds.
 ### (default: ndtp)
-# ndtp-port  ndtp
+ndtp-port  ndtp
 
 ### Port number `ebhttpd' binds.
 ### (default: http)
@@ -17,22 +17,25 @@
 
 ### Owner of the server process.
 ### (default: none)
-user   ndtpuser
+#user   ndtpuser
 
 ### Group of the server process.
 ### (default: none)
-group   ndtpgrp
+#group   ndtpgrp
 
 ### How many clients can be connected to the server at the same time.
 ### (default: 1)
-# max-clients  1
+max-clients  3
 
 ### Which hosts can or cannot connect to the server.
 ### (default: none)
 hosts   127.0.0.1
-hosts   ::1
-hosts   !?
-hosts   host.your.domain
+hosts   192.168.0.1
+hosts   192.168.0.2
+hosts   192.168.0.3
+#hosts   ::1
+#hosts   !?
+#hosts   host.your.domain
 
 ### Timeout seconds until the server disconnects an idle connection.
 ### (default: 900)
@@ -61,32 +64,51 @@
 ### Book entry
 ###
 begin book
-    ### Name of the book.
-    ### (required)
-    name  jitenban97
-
-    ### Title of the book.
-    ### (required)
-    title  Jitenban 97
-
-    ### Path to a top directory of the book.
-    ### (required)
-    path  /cdrom
-
-    ### Path to a top directory of the appdendix data of the book.
-    ### (default: none)
-    appendix-path /usr/local/share/eb/appendix/jitenban97-2.1
-
-    ### How many clients can access the book at the same time.
-    ### (default: 1)
-    max-clients  1
+    name  chujiten
+    title  Chujiten
+    path  /usr/local/libdata/ebooks/chujiten
+    appendix-path /usr/local/libdata/ebooks/appendix/chujiten2-2.0
+    max-clients  3
+    hosts  127.0.0.1
+    hosts  192.168.0.1
+    hosts  192.168.0.2
+    hosts  192.168.0.3
+end
+
+begin book
+    name  genkiso-2000
+    title  Kiso-Chishiki
+    path  /usr/local/libdata/ebooks/genkiso-2000
+    appendix-path /usr/local/libdata/ebooks/appendix/gendai2000-1.0
+    max-clients  3
+    hosts  127.0.0.1
+    hosts  192.168.0.1
+    hosts  192.168.0.2
+    hosts  192.168.0.3
+end
 
-    ### Which hosts can or cannot access to the book.
-    ### (default: none)
+begin book
+    name  jitenban
+    title  Jitenban
+    path  /usr/local/libdata/ebooks/jitenban
+    appendix-path /usr/local/libdata/ebooks/appendix/jitenban-2.4
+    max-clients  3
+    hosts  127.0.0.1
+    hosts  192.168.0.1
+    hosts  192.168.0.2
+    hosts  192.168.0.3
+end
+
+begin book
+    name  kokugo_kanji
+    title  Kokugo_Kanji
+    path  /usr/local/libdata/ebooks/kokugo_kanji
+    appendix-path /usr/local/libdata/ebooks/appendix/kanjigen2-2.0
+    max-clients  3
     hosts  127.0.0.1
-    hosts  ::1
-    hosts  !?
-    hosts  host.your.domain
+    hosts  192.168.0.1
+    hosts  192.168.0.2
+    hosts  192.168.0.3
 end
 
 ### Add a book group directive (lines between `begin book' and `end'),

/etc/services の変更

ebnetd で使われるポート番号を /etc/services に追加する。このファイルには、もともと以下の定義がある。

search          2010/tcp        ndtp
そこで、これを以下のように変更する。
search          2010/tcp        ndtp ebnet

ebnetd の起動環境設定

前回は単独のデーモンとして使えるように、ブート時に使われるスタートアップスクリプトを用意したのだが、今回は inetd 経由で起動するようにする。そこで、ebnetd のソースに含まれる doc/ebnetd.info-1 内の記述に従い、/etc/inetd.conf の最後に以下の行を追加する。

ebnet      stream  tcp     nowait      root    /usr/local/sbin/ebnetd ebnetd --inetd
それから inetd を再起動する。
# /etc/init.d/openbsd-inetd restart

ebnetd の動作確認

ebnetd の動作確認は、doc/ebnetd.info-1 内の記述に従い、以下のようにする。
まずサーバーが動くホスト(この場合は自ホスト)に telnet で接続する。

$ telnet localhost ebnet
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
そして BOOKLIST コマンドをタイプし、Enter キーを押す。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
BOOKLIST
辞書とサーバーのインストールと設定が正しければ、利用可能な辞書の一覧が表示される。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
BOOKLIST
!OK; book names and an empty line follows
chujiten Chujiten
chujiten.app Chujiten
genkiso-2000 Kiso-Chishiki
genkiso-2000.app Kiso-Chishiki
jitenban Jitenban
jitenban.app Jitenban
kokugo_kanji Kokugo_Kanji
kokugo_kanji.app Kokugo_Kanji
終了する時は QUIT コマンドをタイプし、Enter キーを押す。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
BOOKLIST
!OK; book names and an empty line follows
chujiten Chujiten
chujiten.app Chujiten
genkiso-2000 Kiso-Chishiki
genkiso-2000.app Kiso-Chishiki
jitenban Jitenban
jitenban.app Jitenban
kokugo_kanji Kokugo_Kanji
kokugo_kanji.app Kokugo_Kanji

QUIT
Connection closed by foreign host.
$
以上でサーバー側の作業は完了。

ebview のインストール

最初は、従来どおり、以下に示す ebview のパッチを当ててからビルドした。

--- src/preference.c.orig 2005-10-05 09:41:23.000000000 +0900
+++ src/preference.c 2005-10-05 10:11:16.000000000 +0900
@@ -400,7 +400,7 @@ void  calculate_font_size(){
  PangoFontDescription* desc;
  PangoLanguage* lang;
  PangoFontMap* fontmap;
-#ifndef __WIN32__
+#if !GTK_CHECK_VERSION(2,8,0) && !defined(__WIN32__)
  Display *display;
 #endif
  PangoContext *context;
@@ -420,6 +420,9 @@ void  calculate_font_size(){
  desc = pango_font_description_from_string(fontset_normal);
  lang =  pango_language_from_string("ja");
 
+#if GTK_CHECK_VERSION(2,8,0)
+ fontmap = pango_cairo_font_map_get_default();
+#else
 #ifdef __WIN32__
  fontmap = pango_win32_font_map_for_display();
 #else
@@ -430,7 +433,8 @@ void  calculate_font_size(){
  }
 
  fontmap = pango_x_font_map_for_display(display);
-#endif
+#endif /* __WIN32__ */
+#endif /* GTK_CHECK_VERSION(2,8,0) */
 
  if(fontmap == NULL){
   LOG(LOG_INFO, "fontmap == NULL");

しかし Debian "lenny" でビルドすると、途中で以下のようなエラーが出る。

調べてみると、これについては www.nabble.com/Bug-444523 にパッチが掲載されていた。そこで、それを参考に以下の修正を加えた。
--- ebview-0.3.6.org/src/ebview.c 2004-02-22 12:46:29.000000000 +0900
+++ ebview-0.3.6/src/ebview.c 2009-10-09 14:41:39.000000000 +0900
@@ -15,7 +15,7 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
-#define GTK_DISABLE_DEPRECATED 1
+//#define GTK_DISABLE_DEPRECATED 1
 
 #define _GLOBAL
 #include 
これでビルドが完了した。
$ パッチを入れる
$ ./configure
$ make
$ su
# make install
これでクライアント側の準備も完了した。

2009年10月8日木曜日

Entrance のインストールと設定

要約


Enlightenment プロジェクトで開発されているディスプレイマネージャEntrance のインストールと設定の記録。

以下の記述で、コマンドプロンプト "#" はスーパーユーザー(root)アカウントを示し、"$" は一般ユーザーアカウントを示す。

参考文献

必要なパッケージ

README ファイルによると、Entrance の構築には以下のライブラリが必要になる。

  • Evas
  • Ecore
  • edje
  • Esmart
  • PAM(オプション)
Entrance のソースコードを含めて、これらのソースはすべて SVN のリポジトリにあるので、以下のコマンドを使ってチェックアウトする。
svn co http://svn.enlightenment.org/svn/e/trunk/パッケージ名
たとえば、
svn co http://svn.enlightenment.org/svn/e/trunk/entrance
svn co http://svn.enlightenment.org/svn/e/trunk/evas
svn co http://svn.enlightenment.org/svn/e/trunk/ecore
svn co http://svn.enlightenment.org/svn/e/trunk/edje
svn co http://svn.enlightenment.org/svn/e/trunk/esmart
のように実行する。PAM はインストール済みなのでそれを使う。

作業内容

ビルド作業

Entrance は、他の E17 関係同様 /opt/e17 以下にインストールするので、インストールプレフィックスを付けてビルドする。

なお、インストール先が標準的な場所ではないので、作業前に PKG_CONFIG_PATH 環境変数と PATH 環境変数を以下のように調整しておく必要がある。

$ ./autogen.sh --prefix=/opt/e17
$ make
$ su
# make install
# /sbin/ldconfig

動作環境の設定

Entrance の基本的な設定は「ディスプレイマネージャ Entrance のインストールと設定」を参照。

注意点

その1

Vine Linux の場合、ディスプレイマネージャは inittab から呼ばれる prefdm から起動されていたが、Debian では起動時のスタートアッププロセスとして登録されている。

/etc/rc0.d/K01gdm -> ../init.d/gdm
/etc/rc1.d/K01gdm -> ../init.d/gdm
/etc/rc6.d/K01gdm -> ../init.d/gdm
/etc/rc2.d/S30gdm -> ../init.d/gdm
/etc/rc3.d/S30gdm -> ../init.d/gdm
/etc/rc4.d/S30gdm -> ../init.d/gdm
/etc/rc5.d/S30gdm -> ../init.d/gdm

Entrance をインストールすると、entrance という名前のスタートアップ用のシェルスクリプトも <インストールプレフィックス>/etc/init.d/entrance という名前でインストールされる。

よって Debian では、/etc/init.d/gdm の代わりに、このインストールされた entrance がブート時に起動するように設定を変更する必要がある。

その2

Entrance の設定ファイル <インストールプレフィックス>/etc/entrance_config.cfg/entrance/session/n/session("n" は数字) というキーに登録されている文字列は、パス名が付いていればセッションを起動するためのコマンドとして認識され、パス名が無ければ単なるセッション名として Xsession に引数として渡される。

Vine Linux の prefdm 以降の処理ではこの文字列を参照して起動するセッションを決めることができた。しかし Debian ではそうはいかないようである。Debian の Xsession では、渡された引数が実行可能ファイルではない場合、警告メッセージを出してフォールバックのセッションが起動してしまう。

また、Entrance は起動可能なセッションを自動的に探し出す機能があるが、その機能で探し出したセッションは Xsession を介さず直接起動されてしまう。これは英語環境では問題ないかもしれないが、少なくとも日本語環境では、Xsession 以降で行われている、日本語入力関係をはじめとする処理内容がすべて飛ばされてしなうので、それでもセッションは起動することは起動するが、きわめて使いにくいセッションになる。

そのため、<インストールプレフィックス>/etc/entrance_config.cfg/entrance/session/n/session("n" は数字)というキーには、セッションを起動するコマンドを、パス名を付けずに登録する必要がある。

その3

Debian の /etc/X11/Xsession を使うとなると、/etc/gdm/Xsession で行われている処理の一部を /etc/X11/Xsession に取り込む必要が出てくる。/etc/gdm/Xsession を利用する場合でも、多少は手を加える必要が出てくるが、前者の方法よりはずっと少なくて済む。

そこで、まず /etc/X11/Xsession/etc/X11/Xsession.original としてバックアップしておく。そして /etc/gdm/Xsession/etc/X11 以下に Xsession という名前でコピーして、それに手を加えて利用することにする。変更内容は以下のとおり。 やっていることは、

  • エラーファイル $HOME/.xsession-errors の設定
  • 言語関係の環境変数設定
  • メッセージなどの出力先を、先に設定したエラーファイルにリダイレクトする設定

設定作業

既存の Xsession のバックアップと新しい Xsession の作成

# cd /etc/X11
# mv Xsession Xsession.original
# cp ../gdm/Xsession .
... ここで、コピーした Xsession を変更する ...

Entrance の設定ファイルにセッション追加

スタートアップスクリプトの入れ替え

# cd /etc/init.d
# cp /opt/e17/etc/init.d/entrance .
# ./gdm stop
# update-rc.d -f gdm remove
# update-rc.d entrance start 99 2 3 4 5 .

再起動

# /sbin/shutdown -r now
以上で、gdm に代わって Entance が立ち上がる。

gdm に戻す場合

gdm に戻す場合は以下のようにする。

# update-rc.d -f entrance remove
# update-rc.d gdm start 30 2 3 4 5 . stop 01 0 1 6 .

2009年10月4日日曜日

Postgesql のインストール

要約

Postgesql 8.4.1 のインストールとデータベースの初期化、およびサーバーの起動と停止までの記録。

なお、"#" はスーパーユーザー (root) のプロンプト、"%" は postgresql データベース管理用ユーザー (postgres) のプロンプト、"$" は一般ユーザーのプロンプトを表す。

参考文献

PostgreSQL 8.3.1 のインストールと設定

必要なパッケージ

ミラーサイトより、 をダウンロードする。

作業内容

チェックサムの確認

$ md5sum -c postgresql-8.4.1.tar.gz.md5

構築

$ ./configure
$ make
$ make check
# make install

設定

既存の postgresql の停止

debian のインストール時に一緒にインストールされたバージョン 8.3 の postgresql が動いているので、まずそのサーバーをシャットダウンし、各ランレベルに登録されているスクリプトを削除する。

# cd /etc/init.d
# ./postgresql-8.3 stop
# update-rc.d -f postgresql-8.3 remove

データベース作成用ディレクトリの準備

バージョン 8.4.1 は /usr/local 以下にインストールしたので、データベースは /usr/local/pgsql/data に作成することにした。

$ sudo mkdir /usr/local/pgsql/data
$ sudo chown postgres /usr/local/pgsql/data

データベースの初期化

サーバーの起動

データベースの作成

試しにテスト用のデータベースを作ってみる。 しかし "fumi" というロールがまだ無いので当然エラーになった。サーバーのログにも以下のメッセージが載っている。

FATAL:  role "fumi" does not exist

そこでまずロールを作成する。

% /usr/local/pgsql/bin/createuser fumi
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n

それから再度テスト用のデータベースを作ってみる。 今度はうまくいった。

サーバーの停止

ここまでできたので、ひとまずサーバーをシャットダウンする。 この結果は、サーバーのログに以下のように載っている。

LOG:  received smart shutdown request
LOG:  autovacuum launcher shutting down
LOG:  shutting down
LOG:  database system is shut down

2009年10月3日土曜日

Enlightenment E17 のインストール

要約

インストールした debian も、当初の「借りてきた猫」状態を脱し、ようやく「自分のもの」になってきたので、E17 をインストールしてみた。
作業日
2009年10月3日
マシン環境
  • CPU: Intel Pentium III 800MHz
  • メモリ: 128MB
  • ディスク: FUJITSU MAH3182MP 18.3GB

参考文献

必要なパッケージ

E17 のビルドに必要な EFL は上記参考文献の中でも微妙に異なっている。今回は easy_e17.sh で定義されているものを使った。このスクリプトの中では以下のように定義されている。

efl_basic="eina eet evas ecore efreet e_dbus embryo edje esmart"
モジュールや他のアプリケーションをビルドするならもっと必要になるが、E17 をビルドするだけならこれだけでよい。このライブラリをこの順序でビルドしていく。

ソース自体はまだ svn リポジトリの中なので、以下のコマンドでダウンロードした。

svn co http://svn.enlightenment.org/svn/e/trunk/パッケージ名
このコマンドは EFL だけではなく、アプリケーションでも同じである。 たとえば、
svn co http://svn.enlightenment.org/svn/e/trunk/eina
のように実行する。このようにして、必要なソースツリーをチェックアウトする。

作業内容

インストール先は /opt/e17 とする。そのため、autogen.sh--prefix=/opt/e17 というオプションを付ける。

なお、インストール先が標準的な場所ではないので、作業前に PKG_CONFIG_PATH 環境変数と PATH 環境変数を以下のように調整しておく必要がある。

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$install_path/lib/pkgconfig"
export PATH="/opt/e17/bin:$PATH"

ビルド手順は以下のとおり。

各ソースのディレクトリに移動してから
$ ./autogen.sh --prefix=/opt/e17
$ make
$ su
# make install
# /sbin/ldconfig(今回は要らないような気もするが、念のため)

あとは「GDM から選択できるセッションを増やす」に書いたやり方で GDM から選択できるようにすればいい。

2009年10月2日金曜日

GDM から選択できるセッションを増やす

新しくインストールした E16 を GDM から選択できるようにする。

GDM の設定ファイルには "/usr/share/gdm/defaults.conf" と "/etc/gdm/gdm.conf" があり、一般ユーザーは後者を変更するようになっているようである。

GDM が認識するセッション(.desktop ファイル)は、"/usr/share/gdm/defaults.conf" の中の "[daemon]" セクションにある "SessionDesktopDir" に指定されているパス内にあるものに限られる。この変数には、デフォルトでは "/usr/share/gdm/BuiltInSessions/:/usr/share/xsessions/:/etc/dm/Sessions/" が指定されている。

一方 E16 セッション用のファイル(e16.desktop) は "/usr/local/share/e16/misc/" にインストールされ、"/usr/local/share/xsessions/" にシンボリックリンクが作成される。そのため、このままの設定では、GDM は E16 のセッションを認識できない。

そこで "/etc/gdm/gdm.conf" 内の "[daemon]" セクションに "SessionDesktopDir" を以下のように定義する。

最後に、設定ファイルが変更されたことを GDM に通知する必要がある。それには以下のコマンドを実行する。

# gdmflexiserver --command="UPDATE_CONFIG daemon/SessionDesktopDir"

このあとログアウトすると、GDM のセッション選択パネルに E16 が追加され、選択できるようになっている。

これで、E16 を選択すれば、めでたく E16 が立ち上がる . . . はずなのだが、当初は以下のメッセージが出て、E16 が立ち上がらなかった。(画面の都合により改行)

gdm[3969]: WARNING: session_child_run: セッション・ファイル
"e16" の中に Exec 行がありません。代わりにフェイルセーフの
GNOME を起動します

しかしいくら "e16.desktop" を見直してみても間違っていないように見える。マシンを再起動してみても効果がなかった。そこでいったんシャットダウンし、翌日再び同じことをやってみたところ、なんと正常にログインできてしまった。どうしてこうなったのか、原因は不明。

2009年10月3日追記
当初おかしくなったのは、再起動したつもりで、やはりしていなかったためかもしれない。E17 をインストールした時も、再起動しないと同じ現象が発生した。この時はコールドブートして直った。