Linux - シンボリックリンクを置き換えずにインストールする

Linux - シンボリックリンクを置き換えずにインストールする

私は最近(愚かにも、ここに簡単な解決策があるので、--prefix=オプションをデフォルト以外の値に設定していましたが/usr/bin)、オプションを設定せずにconfigured とmaked を実行しました。かなり時間がかかるので、全体をやり直すつもりはありません。gcc-4.9.1--prefix=make

私の/usr/bin/ディレクトリにgcc-4.8.2は、OS (Ubuntu-14.04) によってインストールされた がすでに含まれています。重要な点は、既存のシンボリック リンクがすべて のようなものを指しており、コマンドによってなどgcc-4.8へのシンボリック リンクに置き換えられることです。make installgcc-4.9g++-4.9

に引数を渡してmake、既存のシンボリックリンクを置き換えないように指示できますか? または同様のことはありますか?

答え1

まず、デフォルトのプレフィックス明示的に指定されていない限り、ほとんどの場合は /usr/local です。したがって、/usr のインストールを上書きしても問題にならない可能性がありますが、/usr に 1 つの GCC があり、/usr/local に別の GCC があると、将来的に混乱が生じる可能性があります。

gcc-4.9.1で特に動作するかどうかはわかりませんが(動作しない理由はほとんどないと思いますが)、autoconf(スクリプトを生成するconfigure)には次のような機能があります。インストール時にプレフィックスを上書きします。

引用:autoconf ドキュメント、「インストール名」セクション:

インストール場所に影響を与える最も移植性の高い方法は、正しい場所を configure に渡すことです。ただし、多くのパッケージでは、再構成や再コンパイルを行わずにインストール場所を変更するために、変数の割り当てを 'make install' コマンド ラインに渡す次のショートカットの 1 つまたは両方が提供されています。

最初の方法では、影響を受けるディレクトリごとにオーバーライド変数を指定します。たとえば、「make install prefix=/path/to/alternate」は代替の場所を選択し、「${prefix}」で表現された他のすべてのディレクトリ構成変数に影響を及ぼします (言い換えると、configure 中に指定されたが共通プレフィックスでは指定されていないすべてのディレクトリは、インストール全体を再配置するためにインストール時にそれぞれオーバーライドする必要があります)。ディレクトリ変数ごとに makefile 変数をオーバーライドするアプローチは、GNU コーディング標準で必須であり、理想的には再コンパイルは発生しません。ただし、一部のプラットフォームでは共有ライブラリのセマンティクスに関する既知の制限があり、この方法を使用すると再コンパイルが必要になります。これは、GNU Libtool を使用するパッケージで特に顕著です。

2 番目の方法は、'DESTDIR' 変数を提供することです。たとえば、'make install DESTDIR=/path/to/alternate' は、すべてのインストール パスの前に '/path/to/alternate' を追加します。'DESTDIR' オーバーライドのアプローチは、GNU コーディング標準では必須ではなく、ドライブ文字を持つプラットフォームでは機能しません。一方、再コンパイルの問題を回避するのに効果的であり、configure 時に '${prefix}' で一部のディレクトリ オプションが指定されていない場合でもうまく機能します。'DESTDIR' をサポートするパッケージの場合、変数は configure および 'make all' の間は未定義のままにしておき、'make install' の間だけ指定する必要があります。

それでmake install DESTDIR=/opt/gcc-4.8.2 すべきほぼ目的のとおりに動作します。必要なディレクトリ構造に応じて、後でファイルを少し移動する必要があるかもしれませんが、開始するには十分なはずです。

これはテストしていないので、自己責任で実行してください。

関連情報