1

製品リリースの一部として、(UNIX) 開発マシンでコンパイルした Apache HTTP Server バイナリを出荷しています。

バイナリを (UNIX サーバー上に) コンパイルしたときと同じディレクトリ構造にインストールするようクライアントに指示します。一部のクライアントでは、これは適切ではありません。たとえば、サーバー上のソフトウェアをインストールできる場所に制限があり、Apache を自分でコンパイルしたくない場合です。

環境変数を使用してインストール場所を動的に指定できるように、Apache HTTP Server をコンパイルする方法はありますか?

私はこれを整理しようと数日を費やしましたが、それを行う方法を見つけることができませんでした. そのため、Apache バイナリがコンパイル時に一部のディレクトリ パスをハード コーディングしているため、必要な移植性が妨げられていると考えるようになりました。

誰かがこれを行うことができましたか?

4

4 に答える 4

1

この問題を回避する方法は、クライアントがバイナリをインストール、指定、およびコンパイルするために使用する「./configure && make」スクリプトを開発することだと思います。もちろん、クライアントがすべてのソースコードをサーバーにインストールするか、NFS 共有で利用できるようにする必要があります。

于 2008-08-22T12:34:20.480 に答える
1

特定の場所用に Apache2 をコンパイルしているが、クライアントがそれを別の場所にインストールできるようにしたい場合 (ビルド マシンと同じアーキテクチャと OS を持っていると想定しています)、それを実行できますが、apachectl スクリプトが必要になります。アフターマーケットのハッキング。

これらの手順をテストしました:

  1. Apache2 ソースを解凍し (これは Apache 1.3 でも動作するはずです)、実行しました。./configure --prefix=/opt/apache2

  2. 次にmakesudo make install実行して、ビルド マシンにインストールします。

  3. インストール ディレクトリ (/opt/apache2) に移動し、バイナリと構成ファイルを tar および gzip で圧縮します。使ったcd /opt/apache2; sudo tar cf - apache2 | gzip -c > ~/apache2.tar.gz

  4. tar ファイルをターゲット マシンに移動します。/opt/mynewdir/dan/apache2テストのためにインストールすることにしました。したがって、基本的に、クライアントはrpmなどを使用できません-それを再配置可能にする方法を知らない限り(私は知りません:-))。

  5. いずれにせよ、クライアントのconf/httpd.confファイルはハードコーディングされた絶対パスでいっぱいになります。クライアントはこれらを必要なものに変更するだけです。apachectlスクリプトにもハードコードされたパスがあります。これは単なるシェル スクリプトであるため、ハッキングするか、ビルド マシンの古いパスをクライアントの新しいパスに変換するsedスクリプトを提供できます。

  6. 私はそのすべてのハッカーをスキップして、ただ走りました./bin/httpd -f /opt/mynewdir/dan/conf/httpd.conf:-)

それが役立つことを願っています。うまくいかない場合は、表示されるエラー メッセージをお知らせください。

于 2008-08-26T12:31:09.937 に答える
0

@Hissohathair

@Hissohathairの答えに1つの変更を提案します。

6). ./bin/httpd -d <server path> (although it can be overridden in the config file) 

apachecltには、オーバーライドして使用できるHTTPDの変数があります。

于 2008-09-06T19:00:10.567 に答える
0

この問題を回避(回避)する方法は、クライアントがバイナリのインストール、指定、およびコンパイルに使用する「./configure&&make」スクリプトを開発することだと思います。そのためには、クライアントのサーバーにすべてのソースコードがインストールされているか、NFS共有で利用できるようにする必要があります。

完全なビルドツールチェーンは言うまでもありません。最近、GCCはほとんどの主要なディストリビューションでデフォルトになりません。クライアントにそれをインストールするように強制するのは正気ではないでしょう/opt/my_apache2/か?

于 2008-08-26T09:45:37.887 に答える