Cobalt Qube/RaQ 用 RPM の作り方

はじめに

Cobalt Qube/RaQ は,省電力かつ省スペースのネットワークサーバです.ちょっとおもちゃちっくとも言えるかわいい外見とは裏腹に,中身は rpm でパッケージ管理されたけっこうまっとうな GNU/Linux になってます.

Cobalt は日本ではうれしいことに日本語化されて売られています.ただ, この日本語化というのが WWW ページの Shift-JIS 化だったり, /etc/motd の Shift-JIS 化 (びっくりした) だったり して,インストールされてる RPM パッケージが日本語対応しているわけではありません.

ちょろちょろと WWW ベースで管理している分にはこれでも困らないのですが,やっぱりまっとうにいぢりたおす :-) ためには日本語が通るツール群が欲しくなります.欲しいなら作ってしまおう,ということで,このページでは,Cobalt Qube/RaQ で使える RPM パッケージの作り方について解説します.

なお,あたりまえの話ですが,この文書に従って作業した結果,あなたの Cobalt がどうなろうと私は責任をとれません.root で作業する部分がほとんどですので,そういう自覚を持って作業してくださいね.(root って何,という方はやめといたほうが無難です)

どういうふうに作るか

Cobalt の CPU は MIPS です.そのため,巷で流通している Intel 用の RPM パッケージはそのままでは使えません.でも幸いなことに,RPM パッケージにはその元となるソースも SRPM パッケージとして公開されていますので,基本的には以下の手順を踏めば Cobalt 用の RPM パッケー ジを作ることができます.

  1. インストールしたいプログラムの SRPM パッケージ (hoge.src.rpm とします) を ftp.linux.or.jp などから取ってきます.
  2. root になって,取ってきた SRPM を展開します.
    $ su
    # rpm -i hoge.src.rpm
  3. hoge.spec というファイルが /usr/src/redhat/SPECS/ にできます ので,これを指定して build します.
    # rpm -bb /usr/src/redhat/SPECS/hoge.spec
  4. hoge.mips.rpm というファイルが /usr/src/redhat/RPMS/mips/ に できますので,これをインストールします.
    # rpm -i /usr/src/redhat/RPMS/mips/hoge.mips.rpm

これで終わりです.簡単でしょ? :-)

ちなみに,私はこのやり方で以下の RPM を (RaQ 上で) build しました.

なんぎな子たち

ただ,残念なことにすべてがすべて,以上のやり方でうまくいくわけでは ありません.たとえば,mule (2.3@19.34) は Cobalt でうまく使える configure の設定がありませんし,sharutils は gettext まわりで build に失敗してしまいます.

こういう場合は,日本語化されていない SRPM パッケージが ftp.cobaltnet.com にないかどうか見てみましょう.もしあれば,それは Cobalt や MIPS 固有の問題には対処ずみですので,それに対して日本語化 patch があたるように .spec ファイルを修正することにより build に成功するかもしれません.

ここらへん,どのように修正したらいいかはけっこう勘と経験の世界です が,UN|X に慣れた人ならなんとかなるでしょう.RPM-HOWTO などが参考になると思います.

構築例

参考として,私が .spec を修正して build した RPM パッケージについ て,どのように直していったかを説明します.

sharutils

less-332jp をインストールしようとして,「uudecode がない」と言われ てしまいました.時代は変わるのですね.愚痴っていてもしょうがないので,uudecode を含んでいる RPM パッケージである sharutils をインストールしようとしたのですが,ftp.cobaltnet.com でも用意してくれてない (1999/3/19 注: 実は uuencode/decode は用意してあるようです) し,RedHat からとってきた sharutils-4.2-10 は上記のように gettext まわりでこけてしまいます.

しょうがないので,うしろ向きですがメッセージの国際化をあきらめたら build に成功しました.やりかたは簡単です.

  1. .spec ファイルの中で configure を呼びだしてる部分に 「--disable-nls」というのを足す.
  2. 修正した .spec を rpm -bb する.
  3. できあがり

mule2.3@19.34

mule は,上記のようにそのままでは build に失敗します.でも幸いなこ とに,emacs19.34 の SRPM はありますので,それをベースにして, mule2.3 化の patch を当てて build しました.ちょっとたいへんですが, 以下に手順を示します.

  1. emacs-19.34-7C1.src.rpm を ftp.cobaltnet.com からとってくる.
  2. mule-23-1934-alpha01.diff.gz をとってくる. (csrl.ge.aoyama.ac.jp:/pub/gnu/mule などにあります)
  3. SRPM を install する (/usr/src/redhat の容量に注意).
    # rpm -i emacs-19.34-7C1.src.rpm
  4. mule の patch を移す.
    # zcat -cd mule-23-1934-alpha01.diff.gz > /usr/src/redhat/SOURCES/mule-23-1934-alpha01.diff
  5. /usr/src/redhat/SOURCES/mule-23-1934-alpha01.diff の 4479 行 目の,
    lockdir='${sharedstatedir}/emacs/lock を
    lockdir='${sharedstatedir}/lock/emacs に書き換える. (これをしないと patch が reject されて build に失敗する)
  6. spec file にこの patch をあてる.
    # patch -p0 /usr/src/redhat/SPECS/emacs-19.34.spec < mule.patch
  7. build する.SPRM も欲しければ,-bb でなく -ba とする.
    # rpm -bb /usr/src/redhat/SPECS/emacs-19.34.spec
  8. mule じゃない emacs を uninstall する.
    # rpm -e emacs-nox
    # rpm -e emacs
    # rm /usr/bin/emacs
  9. mule の本体実行ファイルを install する.
    # rpm -i /usr/src/redhat/RPMS/mips/emacs-19.34-7C1mule23.mips.rpm
    # rpm -i /usr/src/redhat/RPMS/mips/emacs-nox-19.34-7C1mule23.mips.rpm
  10. おつかれさまでした.:-)

もっとスマートなやり方もあると思います.もし,「ほんとはこうするべきじゃないの?」なんてコメントがありましたら,coba-d メイリングリストに投稿して頂けるとみんな幸せになれます. Cobalt 自体にはあんまり関係ないのでちょっと,という話でしたら,にメイルして頂けると幸いです.


Mar 16, 1999 by Masayuki TERADA.