トップ «前の日記(2007-03-07) 最新 次の日記(2007-03-09)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|

2007-03-08 :-|

_ 仕事

0750 寒川。

ISO 27001 ISMS とかいうのがどうのこうの。

_ 地味に胸キュン

静かに萌えるろみたん みたいな。

m00.png

_ [Ruby][/usr/bin/env]#!/usr/bin/env ruby を #!/usr/pkg/bin/ruby にしてしまえというソリューション

動作未確認。

% find . -type f | while read f; do
sed -e 's%/usr/bin/env ruby%/usr/pkg/bin/ruby%\g' $f
done

_ 帰路ろ

脳内で Over the Sky 「 死闘 」を再生しながらチャリで道路を走っていたら大型車に後ろから煽られました。自動車こわい。

ff12_jac.jpg

_ [envvars][BSD][継承][Ruby][Linux][httpd][NetBSD][Apache][FreeBSD][環境変数][デーモン][スクリプト]どさにっき - デーモンさんの起こしかた

/usr/bin/env の話題[ 2007-03-03 ]に反応をいただきました。httpd に渡す PATH を制御します。

動作確認のためにこんなスクリプト( printpath.rb )を準備しておきます。環境変数 PATH を表示させます。

#!/usr/pkg/bin/ruby

print <<"EOD"
Content-type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<title>test</title>
<body>
#{ENV["PATH"]}
<br>
</body>
</html>
EOD

これを public_html 以下に置きます。ログインユーザーで sudo /etc/rc.d/apache start した場合の出力はこう。

/usr/local/sbin:/usr/local/bin:/usr/pkg/bin:/usr/pkg/sbin:/bin:/sbin:/usr/sbin:/usr/bin:/home/rin/usr/local/bin

PATH を制御した場合にちゃんと意図どおりに PATH を設定できてるかを確認します。では始めます。

やまやさんのところより。

# env - PATH=/usr/local/bin:/usr/bin:/bin /etc/init.d/hoge start

env の最初の引き数 - ( ハイフン )はなんでしょう。マニュアルを読みます。

The historic - option has been deprecated but is still supported in this implementation.

将来実装しなくなる予定とのことです。でも - の機能が分かりません。BSD ではないけど参考までに Linux のマニュアルを見てみます。

-, -i, --ignore-environment
継承された環境を無視して、空の環境から始める。

- と -i は同じ意味なようです。

もういちど NetBSD のマニュアルを見てみます。

The option `-i' causes env to completely ignore the environment it inherits.

ということでここでは -i を使うことにします。

ログインユーザーが sudo して起動する場合

rc.d ではなくログインユーザーで起動させるときはこう。

% env -i PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin sudo /etc/rc.d/apache start

printpath.rb の出力を確認します。

/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin

設定したとおりになっていますね。

起動スクリプトを変更する場合

FreeBSD には envvars というのがあるそうです。

NetBSD というか pkgsrc の apachectl にも envvars の記述がありました。

# pick up any necessary environment variables
if test -f /usr/pkg/sbin/envvars; then
  . /usr/pkg/sbin/envvars
fi

/usr/pkg/sbin/envvars の正味の内容はこう。

LD_LIBRARY_PATH="/usr/pkg/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH

PATH を追加してこのようにしておきます。/home/rin/usr/local/bin を追加しているのは動作確認のためです。printenv.rb の出力に /home/rin/usr/local/bin があれば起動スクリプトの変更は意図どおりといえるでしょう。

LD_LIBRARY_PATH="/usr/pkg/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin:/home/rin/usr/local/bin"

ではログインユーザーで httpd を起動して、ちゃんとログインユーザーの PATH ではない PATH が設定されているか確認します。

% sudo /etc/rc.d/apache start

printenv.rb の出力はこう。

/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin:/home/rin/usr/local/bin

この日記冒頭で書いた printenv.rb の出力と異なります。よってこれは envvars で設定した PATH とみなしてよさそうです。

動作確認したので /usr/pkg/sbin/envvars の PATH から /home/rin/usr/local/bin を削除しておきます。

LD_LIBRARY_PATH="/usr/pkg/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin"

まとめ

今回は httpd に環境変数を渡す方法を試しました。環境変数を渡す手段は以下の 2 つあります。

  • env -i PATH=... /etc/rc.d/apache start する
  • /usr/pkg/sbin/envvars を変更する

どうでもいいけど "NetBSD envvars" を Yahoo! 検索 したら私のところがヒットしました。envvars は apache を入れたときに入るものなんですね。

本日のツッコミ(全2件) [ツッコミを入れる]
_ ろみたん (2007-03-09 09:10)

Σ( ̄□ ̄;

_ みわ (2007-03-09 19:51)

(´ω` )