[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:18120] Re: utmp warning



たはら@会津大です.

>>> Sun, 3 Oct 1999 20:11:33 +0900 の刻に 「suisa」、すなわち
>>> suisa@xxxxxxxxxxxxxxxxxx("T.N.") 氏曰く

suisa> 沼尻と言います。

suisa> At Fri, 1 Oct 1999 10:33:38 +0900,
suisa> Yuusuke Tahara <m5021212@xxxxxxxxxxxx> wrote:
> 
> たはら@会津大です.
> 
> script などを使って,dpkg-buildpackage でパッケージを作ろうとしたとき
> に,
> 
> no utmp entry available, using value of LOGNAME ("tahara") at /usr/lib/dpkg/controllib.pl line 40.
> 
> という warning がたくさん出ます.調べてみたら (最初のシェルは tcsh です)

suisa> 	(省略)
 
> という具合いに,script 起動時に perl の getlogin() (= getlogin(3)?) が
> 空を返すことがわかりました.無視してもいいのですが,気持悪いので直した
> いです.どうしたらよいでしょうか?

suisa> 消極的な解決法ですが、X 上ではなく Ctrl+Alt+F1 などでコンソールに降りてから
suisa> dpkg-buildpackage を実行すると、LOGNAME がセットされエラーが表示されなくなります。

これは,たぶん「getlogin() で utmp のエントリーが得られないから,代り
に LOGNAME を使うよ」と言っているのではないかと思うのですが..つまり,
LOGNAME はセットされているけど getlogin() が効いてないんだと思います.

suisa> 確か、Online manual だか JF の文章だかで「X 上からログインすると LOGNAME がセットされない」
suisa> という記述があったような気がするので、多分それが関係していると思います。
suisa> ただ、パッケージを作るのにわざわざコンソールに降りるのも煩わしいので、X 上でこの問題を
suisa> 解決する方法があったら、私も知りたいです。

私の環境だと,コンソールからログインしても変りませんでした.
したがって,沼尻さんの状況とは異なるのかも知れません.
# なんとなく原因は fakeroot 関係のような気がしてます.

とりあえず,getlogin() について Perl 本には
「/etc/utmp から,(もし見つかれば)現在のログイン名を返す.
  偽が返されたら,getpwuid を試してみれば良い.」
とありましたので,/usr/lib/dpkg/controllib.pl の最初の方で

$getlogin = getlogin();

とあるのを,Perl 本の通りに

$getlogin = getlogin() || (getpwuid($<))[0];

に変更したら,警告は出なくなりました.

suisa> ちなみに

> script などを使って,dpkg-buildpackage でパッケージを作ろうとしたとき

suisa> Linux Japan 5月号によると、パッケージを作るときには debuild というコマンドが推奨されて
suisa> いるみたいですね。(potato の devscriptsパッケージに入っています。)

うぅ知らなかった...
教えてくださってありがとうございます.(^^;

--- Tahara Yuusuke <m5021212@xxxxxxxxxxxx>
-> The University of Aizu / Department of Computer Systems
-> http://www.u-aizu.ac.jp/%7Em5021212/
-> ICQ: 38459330(@work), 35702748(@lab), 14439176(@home)