3

私がコンパイルした UNIX プログラムがある場合、それを別のディレクトリに再配置し、正しく実行し続けるにはどうすればよいでしょうか。

私は Perl を考えていますが、Apache のような他のシステムにも興味がありますが、これが完了すると失敗するようです。この種の再配置を実行できると、製品インストールの一部として他のシステムをバンドルするときに非常に便利です。

価値があるのは、ActivePerlのインストールプロセスには、インストール中に再配置を実行する魔法が含まれているようです..

Installing ActivePerl...
Copying files to /opt/ActivePerl-5.8...done
Relocating...done (164 files relocated)
Generating HTML documentation...done
Syncing perl PPM database with .packlists...done 

ActivePerl has been successfully installed at /opt/ActivePerl-5.8.

その「再配置中...」行の背後で何が起こっているかについて誰か教えてもらえますか?

4

5 に答える 5

7

perlをコンパイルすると、特定の場所に特定のファイルが存在することが期待されます。これらのパスのいくつかは。で見ることができますperl -V。ActivePerlの場合、インストール全体を移動する場合は、物を見つけることがperl期待される場所と、さまざまなヘルパープログラムが見つけることを期待する場所を更新する必要がありますperl。ActiveStateのreloc_perlのドキュメントを参照してください。ソースがある場合は、ソースを参照してください。

ActivePerlが行うことは、他のプログラムで行うこととは一般的に関係がありません。それは彼らがそれぞれ何をし、何を期待するかに依存します。

于 2009-11-20T04:29:24.923 に答える
3

Active Perlは、システム上でperlをコンパイルせず、解凍して適切な場所にコピーするだけです。

問題は、Perlインストールには、ライブラリの場所、インストールの場所など、インストール固有の情報が必要な多くのファイルがあることです。これらのファイルは、再配置フェーズ中に正しい情報を持つように変更されます。

于 2009-11-20T04:26:10.623 に答える
3

その多くはプログラムに依存します。一部のプログラムはかなり自己完結型であるため、外部に配置された構成ファイルまたはその他の許容度の低い要素にディレクトリ パスを持つ他のプログラムよりも適切に移動を処理します。

于 2009-11-20T03:29:32.313 に答える
0

UltraEdit を使用して、Perl インストールの下にあるすべてのファイルを検索して置換します。たとえば、C:\Perl64 から G:\Perl64 に移動する場合、「C:\Perl64」を含むすべてのファイルを「G:\Perl64」に置き換えます。その過程で、いくつかの構成ファイルと exe ファイルの読み取り専用プロパティのチェックを外し、置き換えをやり直す必要があります。

于 2013-10-21T14:31:24.280 に答える
0

「再配置」の下で何を意味するかによって異なります。バイナリを実行して別のディレクトリに移動すると、Linux で動作するはずです。

したがって、すべてのバイナリと構成ファイルを別のディレクトリに移動し、現在の作業ディレクトリを変更するプログラムを作成できます。

于 2009-11-20T03:25:08.687 に答える