hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
03/16/2004 むむ [長年日記]
■ [Linux][Rubyx] Rubyx
Gentoo を全部 Ruby 化したような Linux ディストリ.ていうか力.
とりあえず chroot 環境作って突っ込んでみた.まだまだ荒削り感が否めないけど結構おもろい.
まず何がおもろいって,ディレクトリ構成.rubyx (これ Gentoo で言うところの emerge) で何かをインストールすると,/pkg/hogehoge.1 (最後の数字はインストール回数) 以下にインストールされて,それが / に symlink される.デフォでは /pkg/hogehoge.1/bin とかになるので,/bin に全部集まることになる.あと distcc が最初から使えるあたりが何とも.:)
パッケージシステムとしては,/pkg/rubyx.x/lib/ruby/site_ruby/rubyx/packages 以下に .rb スクリプトがある*1.これが Gentoo で言うところの ebuild になる.この .rb ファイル,例えば vim なら vim.rb という名前になっていて,一つのファイルで複数のバージョンを管理してるみたい.このファイルの中で各ビルドプロセス (unpack, build とか) をオーバーライドしてビルドとかインストールとかを行うらしい.デフォのビルドプロセスは /sbin/rubyx という Ruby スクリプトの中に書いてある.
どうもパッケージのソースはデフォで rsync.rubyx.org,または環境変数 RUBYX_MIRROR で指定した場所から rsync で取ってくるらしい.そのため公式にないパッケージをでっち上げてやろうとするとそんなもんはねぇと怒られるので,あらかじめ自分で /home/source/<pkgname>/pkg.rar という形で置いておかなきゃならんみたい.てか何でデフォの圧縮形式が rar なんだと文句を言いたいところだけど (多分これは download や unpack メソッドをオーバーライドしてなんとかできると思うけど,それって本末転倒…).
とりあえず lv がなかったことに腹を立てたので lv の .rb をでっちあげて入れてみた.ファイルはこんな感じ.
class Pkg_Lv < Package def initialize() super(nil,'Powerful Multilingual File Viewer','451', { '451'=>{'files'=>['lv451'],'c'=>'-O2','c++'=>'-O2'} } ) dependancy(COMPULSORY_LIBS,'ncurses','glibc') end def build(extraconfig='', extramake='') path(unpack(),'build').cd bash "LIBS=-lncurses ../src/configure #{stdconfig} "+extraconfig bash "make -j#{$mj} #{extramake}" bash "mkdir -p #{prefix}/{bin,lib,man/man1}" bash "make #{extramake} install" standardRootOwnership() end end; Pkg_Lv.new()
このスクリプトを lv.rb という名前で /pkg/rubyx.2/lib/ruby/site_ruby/rubyx/packages に置いて /usr/lib/ruby/site_ruby/rubyx/packages 以下に symlink する.
ソースは lv451.tar.gz を解凍したやつを rar で固めて /home/source/lv 以下に置いて chown source:source しておく.
あとは rubyx --nd --in lv でインストール完了.
追記
rubyx って依存性でたくさんのパッケージが対象になったときでも並列で動かすんだなぁ…依存性どうやってんだろ.まぁ多分依存性ツリーの葉の部分を取ってやってるんだろうけど….
Portage もこれ導入してくれないかなあ.
追記2
/etc/{passwd,group} にパッケージ名のユーザとグループ作りまくるのどうにかならんのかいな….パッケージ名のユーザ:グループでビルドプロセス走らせてるみたいで,多分いらんところにファイル勝手に作ったりしないようにするためのものなんだろうけど,/etc/{passwd,group} みたいな重要なファイルをごりごり書き換えたり,肥大化したりするのは気持ち悪いぞ.
追記3
例えば
dependancy(OPTIONAL_TOOLS,'xfree86')
とか書いてあるパッケージは,xfree86 のインストールの後にビルドし直すらしい.どういうときに使うのかよくわからんけど.
ちなみに dependancy (なんで dependancy なんだ? 英国はそうなん?) の種類には以下のものがある.rubyx スクリプトから抜粋.
# Dependancy attributes. BUILD_TOOLS = 1 # dep-pkg is used during build OPTIONAL_TOOLS = 2 # dep-pkg provides optional tools COMPULSORY_TOOLS = 4 # dep-pkg provides compulsory tools OPTIONAL_LIBS = 8 # dep-pkg provides optional libraries COMPULSORY_LIBS = 16 # dep-pkg provides compulsory libraries MODIFY = 32 # We modify this dependancy DEPENDANCY_MASK = 63 # Non-dependancy attributes REQUIRE_SOURCES = 64 # dep-pkg sources are used during build OVERRIDE = 128 # We override same name /-linked file(s) in dep-pkg
追記4
そうそう,大事なこと忘れてた.chroot 環境だから使い勝手がどうなのかよくわからないんだけど,init スクリプトも ruby みたい.んで,しかもサービスの起動方法が /etc/init.d/hoge start とかじゃなくて,/sbin/start hoge という形.古い頭じゃついてけないなこの構成.
■ [Gentoo] ebuild-uploader 修正版
おぉ,修正版がテスト運用を開始している.うーんすごい見やすい.運営ログのテーブルにこだわりが感じられる.:) 素晴らしい.
ご意見ご感想などは Wiki や ML へ,なのかな.
以下個人的な意見.
レイアウトに関してはこの場合 table にしても css にしても一長一短ありそう.css だと w3m や Dillo などで見たときにサイドバーが下に表示されることになるけど,これは左ペインの一覧と運営ログのリンク,どちらがよく使われるのかという問題になる.ちなみに自分は専ら運営ログを使うかな.
例えば w3m なんかは大きなウィンドウで使うことはあまりないだろうから,もし一覧をあまり使わないのであればかえって邪魔になると思うのでサイドバーは下にあった方が良いのかも知れない….
あとこのままのレイアウトでいくならもうちょい css をいじった方がよさそうかな…これは完璧に自分の趣味の問題なので自分の仕事かな.;)
まぁ考えがまとまったら Wiki なり ML なりに書こう.
*1 これらのファイルは /usr/lib/ruby/site_ruby/rubyx/packages/ に symlink されてる
rubyx は昨日だか一昨日だか自分も 2ch で存在を知って rar 取得して
読んでみました (^^; けっこうおもしろそうでした。結局パッケージの
作成手順を記した .rb スクリプトからシェルスクリプト呼んだりする
ものがあったり、なんだかなあと思う部分はありましたが、ユーザが
増えてパッケージの数も増えるのであれば注目したいですね。
まぁ今はまだまだ荒削りな感じですが,これからが楽しみですよね.:)