Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇147:
#!に関して [川] 02/09 01:12

 └◇148:Re:#!に関して [水口] 02/09
  └◇150:Re:#!に関して [川] 02/09
   └◇151:Re:#!に関して [水口] 02/09
    └◇152:Re:#!に関して [川] 02/09
     └◇154:Re:#!に関して [水口] 02/09 <


147● #!に関して[ 川 ] 2002 02/09 01:12
Windowsで d:ドライブに d:/cygwinにCygwinをインストールしています。

よくUNIXでは、
#!/usr/local/bin/perl となっていますが、Cygwinでは
#!d:/cygwin/usr/local/bin/perl としなけばエラーになるので、ソースの一行目の修正を
余儀なくされます。これを Linuxで動作する
#!/usr/local/bin/perl として cygwinでも動作させたいのですが、Cygwinを詳しく知らないので
下手に触ると、今うまく動作しているものがCygwinの構造がむちゃくちゃになり動かなくなるとを
恐れています。(^^;
また、書籍によっては #! /usrとか一文字をはなしている書き方もありますが厳密にどちらが正しいのでしょうか?

Cygwinの初心者なので、Cygwinのお勧め書籍やサイトがありましたら教えていただけないでしょうか?
レベル的に合わないけど、上級者向けの書籍があれば1冊持っておきたいです。
スレッド一覧


148● Re:#!に関して[ 水口 ] 2002 02/09 01:12
> Windowsで d:ドライブに d:/cygwinにCygwinをインストールしています。
> ...
> #!/usr/local/bin/perl として cygwinでも動作させたいのですが、...

健全な Cygwin であれば、こんなところではでつまずかないと思います。
つまり、bash等で「ls /usr/local/bin」とやれば d:/cygwin/usr/local/bin
の内容が見えるはずなんですが。それはできて「#!/usr/local/bin/perl 」が通らない
とすると......

1 cygwinアプリでないshellを使用してる?
2 ......

最近まさかと思う質問が多いようですが、なにか事態が変わってるんでしょうか?
スレッド一覧


150● Re:#!に関して[ 川 ] 2002 02/09 01:13
> つまり、bash等で「ls /usr/local/bin」とやれば d:/cygwin/usr/local/bin
> の内容が見えるはずなんですが。それはできて「#!/usr/local/bin/perl 」が通らない
> とすると......
> 1 cygwinアプリでないshellを使用してる?
> 2 ......
> 最近まさかと思う質問が多いようですが、なにか事態が変わってるんでしょうか?

1) cygwinの窓で ls /usr/local/binとすれば、ファイルが見れます。
2 ) しかし、http://localhost/でアクセスすると、サーバーの内部エラーが発生し、Apacheのログを見ると以下のようになっています。
(2)No such file or directory: couldn't spawn child process: d:/program files/apache group/apache/htdocs/index.cgi
3) #!d:/cygwin/usr/local/bin/perl と書き直すと、正しくブラウザで表示されます。

cygwinは以下のとおりです。
CYGWIN_NT-4.0 PAPA 1.3.6(0.47/3/2) 2001-12-08 17:02 i686 unknown

Apacheは1.3.22

環境変数を設定したり、何かCygwinの設定で、ルートの基点が変更できたら良いなと思います。

しかし、普通に考えると、インストールされるとそれを基点にアクセスできるのが当たり前と考えますが
私の環境が異常なのでしょうか。
スレッド一覧


151● Re:#!に関して[ 水口 ] 2002 02/09 01:13
Apacheのログを見ると以下のようになっています。
> (2)No such file or directory: couldn't spawn child process: d:/program files/apache group/apache/htdocs/index.cgi
> 3) #!d:/cygwin/usr/local/bin/perl と書き直すと、正しくブラウザで表示されます。

なるほど、Apache がらみでしたか。
d:/cygwin/ と / を等価だと認識できるのは Cygwinアプリだけなので、非Cygwinアプリ
の Apache が「#! /usr/local/bin/perl」を正しく処理できないのは理解できます。

1 Apache の設定で、「外部コマンドは d:/cygwin/bin/sh 経由で起動する」様にする。

2 Cygwinでコンパイルした Apache を使用する。

3 CYGROOT を c:/ にした上で、c: 以外のドライブレターを使用しない。

のうちいずれかひとつで解決しそうな気がしますね。

> 私の環境が異常なのでしょうか。

各ソフトが仕様どおりの動作をした結果だと思います。
スレッド一覧


152● Re:#!に関して[ 川 ] 2002 02/09 01:14
>各ソフトが仕様どおりの動作をした結果だと思います。
そのとおりですね。 私の少ない知識の範囲で考えておりました。

>なるほど、Apache がらみでしたか。
>d:/cygwin/ と / を等価だと認識できるのは Cygwinアプリだけなので、非Cygwinアプリ
>の Apache が「#! /usr/local/bin/perl」を正しく処理できないのは理解できます。

>1 Apache の設定で、「外部コマンドは d:/cygwin/bin/sh 経由で起動する」様にする。
>2 Cygwinでコンパイルした Apache を使用する。
>3 CYGROOT を c:/ にした上で、c: 以外のドライブレターを使用しない。
>のうちいずれかひとつで解決しそうな気がしますね。

1が一番スマートなような気がします。(大きな修正なく目的が達成できそうな点で)

しかし、1−3すべてわからず、手をこまねいております。

1でWin版のApacheを用いていますが、httpd.confにそれらしき記述を見つけることができませんでした。
なぜ、Win版Aapcheを使うのかという理由は、Win版のインストール・設定は非常に簡単にでき、バージョンアップも頻繁に行われている点です。

2は、Cygwin版Apacheにすれば、話は早いのですが、実は Perlも cygwin版を使っていなく、Win版Perlを利用しています。
理由は1と同様に、インストール・セットアップ・バージョンアップなど総合的に見てソフト自体の出来が良いと感じているからです。

3は、Cygwinのど素人で設定ファイルをいじくるのでが恐いからです。(^^;

自分では最善のつもり・上級者が見れば情けない理由ですがよろしくお願いいたします。
スレッド一覧


154● Re:#!に関して[ 水口 ] 2002 02/09 01:15
> 1でWin版のApacheを用いていますが、httpd.confにそれらしき記述を見つけることができませんでした。

申し訳無い。できませんでしたか。 Apache を使ったことがないくせに、調べずに書いてしまいました。

> 2は、Cygwin版Apacheにすれば、話は早いのですが、実は Perlも cygwin版を使っていなく、Win版Perlを利用しています。

Cygwin の Shell に #!/.../perl を処理させると、
非Cygwin の Perl が script file を読めないというケースに昔遭遇しました。
これは、Cygwin の Shell は例えば d:/prog/foo/bar.cgi を
/cygdrive/d/prog/foo/bar.cgi の様な 非Cygwinアプリには理解できない Path に変換して Perl に渡す(ことがある)為です。
今は CygwinPerl を使用しているので最新の事情は違うかもしれませんが。

いっそ、Cygwin に頼らないアプローチもアリでしょうか?
# 掲示板の趣旨に反してすみません。m(_r_)m

Apache process の current drive を d: に固定することができたなら、
後は d:\cygwin\usr\local を d:\usr\local に移動すれば OK かも知れませんね。
スレッド一覧

早田のホームページへ
CGIROOM