]
トップ «前の日記(2009-07-21) 最新 次の日記(2009-07-23)» 編集

Yukiharu YABUKI の tDiary



このtDiaryを検索します。

2009-07-22 [長年日記]

_ fakeroot

Debian でパッケージを作ったりするときにお世話になる fakeroot ですが、本当に詳しいことは英語のドキュメントを読まないといけいようです。でも日本語で概略を書いてある所が。

ところで、fakeroot は、どのような原理で動作しているのでしょうか。


fakeroot を実行しますと、LD_PRELOAD という環境変数を設定して、新たにシェルを起動します。

LD_PRELOAD が設定されていますと、実行時に本来ロードされるべき libc 等のライブラリをロードする前に、 LD_PRELOAD で指定されたライブラリを先にロードします。(glibc の機能です。)

これを利用しますと、libc の関数やシステムコールではなく、嘘の結果を返す fakeroot の関数に処理を行わせることができます。

[いますぐ実践! Linux システム管理 / Vol.138より引用]

ただ、fakeroot の実体は、LD_PRELOAD で指定されたライブラリと言えるため、これだけでは、fakeroot 内で行った結果を残しておけません。


そこで、faked というデーモンさんを起動して、 faked に情報を一括管理させています。

ですので、faked を kill してしまいますと、fakeroot は途方に暮れてしまいます。

[いますぐ実践! Linux システム管理 / Vol.138より引用]

って所が。

これ見てわかったことがあってfakerootコマンドって

yelona:~# which fakeroot
/usr/bin/fakeroot
yelona:~# file `which fakeroot`
/usr/bin/fakeroot: symbolic link to `/etc/alternatives/fakeroot'
yelona:~# ls -la /etc/alternatives/fakeroot
lrwxrwxrwx 1 root root 22 2008-11-27 17:31 /etc/alternatives/fakeroot -> /usr/bin/fakeroot-sysv
ってなってたんだな。しかしfaked-tcpって、どんなときに使うのか、よくわかってないから思いつかないなあ。理由があるから作っているのだろうし。