web-dev-qa-db-ja.com

./configureで--prefixを使用すると、正確に何ができますか?

だから私はたぶん私が愚かに見えるようになるだろう簡単な質問がありましたが、私は学んでいます

私がするとき

./configure --prefix/usr/bin/

プレフィックスは何をしていますか?これはその場所にパッケージをインストールするだけですか

また、返信では、複雑なインストールの詳細な回答を提供し、それに伴うプレフィックスとオプションを詳細に説明できます。

Apt-getインストールを実行する場合、プレフィックス付きの特定の場所にどのようにインストールしますか

私も見ました

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

./configureでprefixが呼び出された場合、なぜこれらの2つの例では常にプレフィックスが作成されるのですか?

前もって感謝します!

26
user610658

make installまたはSudo make installを使用してソフトウェアをインストールすると、異なるファイルが異なるディレクトリに配置されます。ユーザーが実行するコマンドを提供する実行可能ファイルは、通常binディレクトリに移動し、ライブラリは通常libディレクトリに移動し、マニュアルページは通常manディレクトリに移動します。

./configureを実行するとき、--prefixオプションを使用すると、thoseディレクトリの場所を指定できます--prefixと呼ばれるのは、ビルドするプログラムまたはライブラリのファイルをインストールする各ディレクトリへのパスに表示されるprefixを指定できるためです。ほとんどのconfigureスクリプトは--prefixをサポートし、それを省略して./configureを実行することは、通常./configure --prefix=/usr/localと同等です。

これにもっと完全に答えるために、私は my answer から tarファイルを「グローバルに」インストールする方法? (on nix&Linux =)、この質問に具体的に対処します:

ビルドの構成

./configureおよびmakeを実行してコンパイルされたソースコードがある場合、通常はmake install(またはSudo make install)を使用してインストールします。これにより、ビルドディレクトリからインストール場所にファイルがコピーされます。インストールするものが実行可能コマンドを提供する場合、それらの実行可能ファイルは通常、$PATHにあるディレクトリにコピーされるか、$PATHに追加することを検討する必要があります。

ソフトウェアのビルドとインストールは、多くの場合、./configuremake、時にはmake checkまたはmake test、そしてmake installまたはSudo make installを実行するのと同じくらい簡単ですが、ビルドを構成するオプションをconfigureスクリプトに渡すことができます。特に、 pfnueselが言うように 、これはあなたがどのように設定するかwhereソフトウェアがインストールされます。 make installステップは実際にソフトウェアをインストールしますが、通常、すべてがインストールされる場所は./configureステップで設定されます。

このための最も一般的なオプションは--prefixです。 configureに何を使用するかを指定しない場合のデフォルトのプレフィックスは、通常/usr/localです。 (場合によっては、プログラムまたはライブラリのソースコードが他のプレフィックスにデフォルト設定されることがあります。幸いなことに、これはまれです。)

したがって、./configureは通常、./configure --prefix=/usr/localと同等です。ホームディレクトリにソフトウェアをインストールするには、./configure --prefix=/home/galahad/home/galahadがホームディレクトリの場合)または--prefix="$HOME"を使用できます。もちろん、makeを使用してソフトウェアをビルドおよびインストールする必要があります。ソースコード形式で配布されるすべてのソフトウェアがこのように構築されているわけではないことを言っておくべきです。抽出されたソースコードアーカイブ内のドキュメントを常に検索する必要があります。

--prefixの意味

./configure --prefix=directoryを実行すると、ソフトウェアをdirectoryディレクトリの下にインストールする必要があることを示しています。しかし、これは、directoryに緩いファイルを配置することはめったにありません。代わりに、directoryの異なるサブディレクトリに異なる目的に役立つファイルを配置します。それらのサブディレクトリが存在しない場合、それらを作成します。

実行可能ファイルは通常、directory/binに入りますが、システム管理に一般的に使用される場合はdirectory/sbinに入り、ゲームの場合はdirectory/gamesに入ります(ごく最近ではありません)。ライブラリは、directory/libまたはdirectory/lib32のような別の同様の名前のディレクトリに配置されます。ヘッダーファイルはdirectory/includeに入ります。マニュアルページはdirectory/manにあります。ソフトウェアで使用されるデータファイルは、directory/shareに入ります。

それは、directoryprefixであることの意味です。異なるファイルがインストールされる場所を含む親ディレクトリです。 したがって、make installまたはSudo make installを実行して作成されたほとんどのファイルとディレクトリの 絶対パス にプレフィックスとして表示されます。

これにはいくつかの例外があります。システム全体の構成ファイル-常にではありませんが、それらを使用するソフトウェアをインストールするときに作成されることがあります-通常、/etcに入ります。これは通常、異なるプレフィックスを指定しても影響を受けません。 /usr/localに多くのソフトウェアをインストールしても、ほとんどの場合/etcが使用され、/usr/local/etcディレクトリは存在しないか、空であるか、ファイルがほとんど含まれていません。

多くのシステムでは、man hierを実行することにより、一般的なファイルシステムのレイアウトに関する詳細情報を見つけることができます。 GNU/Linuxシステムを使用している場合は、 Filesystem Hierarchy Standard に興味があるかもしれません。

31
Eliah Kagan

現在のパッケージまたはソフトウェアを構成するために必要なものの場所を示します。

単純な場合のように、sslライブラリの場所を伝えることができます:

--with-libssh2=/usr/local  #used in configuring nagios

また、システムに応じてプログラムを適切にコンパイルするために、どのパッケージを構成しないかを指示します。

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

これらは、ご使用のシステムに適したコンパイルを作成するための単なる追加オプションです。それは私が思うことです。それが何か他のものであるならば、私を修正してください。

--prefix=PREFIXオプションは、アーキテクチャに依存しないファイルをPREFIXにインストールします。 make installコマンドを実行すると、ライブラリはPREFIX/libディレクトリに、実行可能ファイルはPREFIX/binディレクトリなどに配置されます。

この引数がconfigureコマンドに渡されない場合、デフォルト値は/usr/localです。

1
luv.preet