ソフトウェアをコンパイルしてインストールすることは、私が克服できない苦痛で問題です。私は次のステップに進むために私の考えを整理するために、より知識のある人と一緒にプロセスの理解を得ようとしています。
私に必要な科学ソフトウェアのほとんどは、ソフトウェアパッケージとして配布されていません。私は "./configure"がコンパイル変数を設定し、依存関係をチェックすることを理解しています。 「make」は「sudo make install」をコンパイルし、すべてのライブラリとリポジトリをその場所に置きます。しかし、それは決して動作しませんでした。私はa)依存関係の地獄に陥らずに「./configure」ステップを終了することはほとんどありません。
a) 依存地獄は非常に残念です。時には図書館があり、気に入らない。それとも、図書館からインストールしたくありません。または「設定」には見つかりません。または、私のディストリビューションがあってはいけない場所に配置します。または、私のシステムには2つのバージョンがあります。問題は、これらの問題を診断して解決する方法を理解できないことです。プログラマーになる必要がない人が学ぶための良い参考資料は何ですか?
b) 「make install」はいくつかのライブラリを置き換えて設定を変更しますが、私のパッケージマネージャはそれについて知らないことを知っています。その結果、一部のプログラムは実行されず、他のプログラムは更新されません。したがって、 "make install"を使用せずにコンパイルされたバイナリをユーザーディレクトリにアーカイブしてPATHにシンボリックリンクを追加すると、はっきりわかりますか?
私のボックスは多数の無料HDを持つシングルユーザーなので、ライブラリのコピーを複数(数十)持っていると問題が解決するかどうかはあまり気にしません。スペースは安いです。
ベストアンサー1
ほとんどのパッケージには、ビルド時に接続する必要がある<package>-dev
(Debianベースの場合)または(Red Hatベースの場合)ライブラリがあります。<package>-devel
たとえば、ソースが必要であると言うと、libxml
Debianベースのシステムでは、libxml2
(検索libxml2-dev
に使用されている)を見つけることができます。apt-cache search <dependancy>
libxml2-dev
ビルドしてlibxml2
実行する必要があります。
この./configure
ステップは通常、--with-libxml=/usr/lib/
正しいライブラリを指すフラグをサポートします(./configure --help
すべてのオプションを一覧表示する必要があります)。また、通常を使用して設置場所の変更をサポートします--prefix=$HOME/sw
。パッケージマネージャの制御範囲外でプレフィックスを使用することは、パッケージマネージャがインストールしたソフトウェアとの競合を避けるための最良の方法です。
Debianとその派生物を使用する--prefix
こと/usr/local/
は/opt/local/
安全でなければなりません。
必要なライブラリ(またはバージョン)がパッケージマネージャにない場合は、ソースをダウンロードして同様のオプションでコンパイルします。最も重要なのは、--prefix
外部パッケージマネージャを使用してソフトウェアをコンパイルするとき本物を使用したい--with-<library>=/<path/to/installed/library>
。