ソースからインストールします。パッケージマネージャーを破壊せずに依存関係を解決する方法


19

ソフトウェアのコンパイルとインストールは、私が克服できない痛みと問題です。私は次のレベルに到達するために私の心をクリアするために、より知識のある誰かとこのプロセスの私の理解を駆け抜けたいです。

私が必要とする多くの科学ソフトウェアはパッケージとして配布されていません。「./configure」がコンパイル変数を設定し、依存関係を確認すると「make」がコンパイルを行い、「sudo make install」がすべてのライブラリとビンをその場所に配置することを理解しています。しかし、それは決して機能しません。私はめったにa)「./configure」ステージから抜け出て依存関係の地獄に入ることはなく、もしそうすれば、b)「sudo make install」はおそらく私の箱を壊します。

a)依存関係の地獄は非常にイライラします。時々私はライブラリを持っていますが、それは好きではありません。または、ライブラリがインストールされません。または、「構成」が見つかりません。または、私のディストリビューションは、あるべきではない場所にそれを置きました。または、私のシステムには2つのバージョンがあります。問題は、診断方法を理解できないため、これらの問題を修正できないことです。プログラマーになる必要のない人のために学ぶための良い参考資料は何ですか?

b)私の理解では、「make install」はいくつかのライブラリを置き換え、パッケージマネージャーがこれを認識せずに設定を変更します。そのため、一部のプログラムは実行されず、他のプログラムは更新できません。したがって、「make install」を使用せずに、PATHに追加されたシンボリックリンクを使用して、コンパイル済みのバイナリをユーザーディレクトリに保持するだけでよいのでしょうか。

私のボックスはシングルユーザーで、無料のHDがたくさんあるので、問題が解決する場合、ライブラリのコピーを複数(数十)持つことはあまり気にしません。スペースは安いです。


3
使用しているディストリビューションは言うまでもありません。これは興味深い情報です。Debian派生物を実行する場合apt-get build-dep <package>、必要な依存関係を自動的にインストールするために使用できます。
マルコ

私はCentOS 6を使用します(ラボのスーパーグルが使用するものを持っています)が、Ubuntuを使用していました。
レンツ

ディストリビューションパッケージャーの生活へようこそ。この依存関係の追跡をすべて行うことは特に難しいことではありませんが、骨の折れる作業です。
ジル 'SO-悪であるのをやめる

非ルートパッケージマネージャーと、おそらくソフトウェアのインストールとパッケージ管理に関するnot-root-userとタグ付けされた他の質問を参照してください。
ジル 'SO-悪であるのをやめる

回答:


16

ほとんどのパッケージには、<package>-dev(Debianベースの)または<package>-devel(Red Hatベースの)ビルドがあります。

そのため、たとえばソースは、それが必要と言う場合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>です。


5

これauto-aptに使用できるツールがあります。

男の自動傾向

auto-aptは、auto-apt環境内で実行されているプログラムのファイルアクセスをチェックするプログラムです。プログラムがインストールされていないパッケージのファイルにアクセスする場合、auto-aptはapt-getを使用して、そのファイルを含むパッケージをインストールします。

次のように使用されます。

auto-apt run ./configure

別の方法はapt-get build-dep <package>、Debianベースのディストリビューションで使用することです。


apt-get build-dep <package>私のために働いた。./configureもう1つ必要なパッケージを学習するのを何度も繰り返してイライラしていました!
HeatfanJohn

2

RPMベースのディストリビューションでは、あなたはそれがない(適切なパッケージを作成であなたの手を試みることができること ...ハード)。

適切なパッケージの利点は、パッケージマネージャーがソフトウェアを追跡し、セットアップを他の場所/次のマシンで簡単に複製できることです。適切なソースパッケージを移植すると(新しいアップストリームバージョン、バグ修正パッチ、基礎となるライブラリが更新されます)、次回からすべてを一から把握するよりも簡単です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.