インストールされたアプリケーションに対するソースコンパイルの影響

インストールされたアプリケーションに対するソースコンパイルの影響

Ubuntu 12.04を使用してください。package xリポジトリにバージョン1.7(およびすべての依存関係)がインストールされていますが、バージョン1.8でのみ利用可能ないくつかの機能が必要なので、ソースtarをダウンロードしてコンパイルするとします。

./configure  
make  
make install
  • 既存の1.7バイナリを上書きしますか?
  • 既存のバイナリを上書きすると、パッケージマネージャは新しいバージョン(1.8)を反映し、package x将来のパッケージマネージャを更新できますか?
  • package y- に依存関係がある場合はpackage x 1.8満たされますか?

私はこれを説明する良いソースをオンラインで見つけようとしました。提案があれば教えてください。

答え1

.deb公式リポジトリが提供されているかどうかに関係なく、ほとんどのパッケージはプレフィックスとしてインストールされます/usr

これは、ユーザーが実行する実行可能ファイルが入っている/usr/bin/usr/sbin(または/usr/gamesゲームの場合)、共有ライブラリが入っていて、プラットフォームに依存しない共有/usr/libデータが入っていて/usr/share、ヘッダファイルが入り/usr/include、自動インストールされたソースコードが入ることを意味します/usr/src

小さなパッケージセットが/プレフィックスとして使用されます。たとえば、bashパッケージbashは。特定の種類のネットワーク共有...場合に備えてリモートファイルシステム)。/bin/usr/bin/usr

.deb主に以下を使用して作成された小規模パッケージのコレクションです。早く、内部にパッケージ固有のフォルダを作成し、/optすべてのファイルをここに配置します。それに加えて、ほとんどの場合、/optシステムのパッケージマネージャを使用しないがソースでコンパイルしない実行可能なインストーラからインストールされたソフトウェアによって場所が使用されます。 (たとえば、MATLABなどの独自のプログラムをインストールする場合/opt

これとは対照的に、ソースアーカイブをダウンロードするとき(またはBazaarやgitなどのリビジョンコントロールシステムからソースコードをインポートするとき)をビルドしてインストールします。通常/usr/local特に指定しない限り、プレフィックスにインストールします。これは、実行可能ファイルが/usr/local/bin/usr/local/libまたはにあり、/usr/local/gamesライブラリが背中にあることを意味します/usr/local/lib

いくつかの例外があります。一部のプログラムはデフォルトでプレフィックスにインストールされるため、/usrパッケージ内の同じプログラムのインストールを上書きします。.deb通常、これをビルドする./configure --prefix=/usr/localのではなく実行して./configureこれを防ぐことができます。もう一度強調しますが、通常これは必要ありません。

(このため、構築してインストールするソースコードをシステム全体で使用するのは完璧です/usr/local/src。これはこの目的のために存在します。)

パッケージのバージョンがインストールされ/usr、ソースからインストールされたバージョンが次の場所にあるとします/usr/local

  • インストールされたパッケージのファイルは上書きされません。

    通常、コマンドラインからプログラムを手動で呼び出すと、最新バージョンが実行されます(実行可能ファイルがインストールされている場所が/usr/local/bin環境PATH変数にあり、その/usrプレフィックスが付いたディレクトリの前に表示される場合/usr/bin)。

    ただし、メニューまたは検索によって作成されアクセスされるランチャーにはいくつかの問題がある可能性があります。さらに、異なるバージョンのライブラリが異なる場所にインストールされている場合、どのソフトウェアがどのバージョンを使用するかを決定するのが少し複雑になることがあります。

    実際にそうでない場合使用2つのバージョンのプログラムまたはライブラリがある場合は、一般的に使用されていないバージョンを削除する必要がありますが、制限されている場合は、依存関係を満たすためにインストールされたパッケージを維持する必要があります。

ただし、何らかの理由でファイルを上書きした場合(たとえば、ソースコードが/usr代わりにインストールされている場合/usr/local):

  • パッケージマネージャは、自分がインストールするソフトウェアがどのように変更されたかを知ることはできません。以前のバージョンがインストールされていると思います。悪い問題を引き起こす可能性があります。このような状況を避けるべきです。このような状況が発生した場合は、元のディレクトリsudo make uninstall(通常はディレクトリにあります)からインストールしたソフトウェアを削除し、上書きしたファイルを提供するパッケージを削除する必要があります。/usr/local/src/program-or-library-nameいいえソースからインストールされているバージョンを削除して復元します。その後、目的のバージョンを再インストールします。

依存関係を満たす場合:

  • .debパッケージがソースからインストールされたソフトウェアに依存し、ソースからインストールされたバージョン(またはそれ以上)が必要な場合、パッケージはいいえ正常にインストールされました。 (またはより正確には「インストール」することはできますが、「構成」されていないため使用できません。)それを解決するソフトウェアがあります。

    同様に、インストールされているソフトウェアが依存するパッケージによって提供されるファイルを手動で削除しても、ソフトウェアは少なくとも完全にインストールを試みます。 (通常、何らかの目的でそれを悪用しようとしないでください。エラーメッセージに基づいて機能するパッケージマネージャはほとんど常に悪いことです。)

したがって、目的のソフトウェアバージョンを提供するパッケージが見つからない場合は、.debコンパイルされたソフトウェアから独自のパッケージを作成し、そのパッケージからインストールする必要があります。その後、パッケージマネージャは何が起こったのかを知ります。実際、他人のコンピュータで正しく動作する必要がない独自の使用のためのパッケージを作成することはそれほど難しくありません。 (しかし、現在の表現方法を考えると、これはあなたの質問の範囲から外れる可能性があると思います。)

答え2

ソフトウェアセンターからインストールするか、APTコマンド(apt-getaptitude)を使用してインストールするものはdpkgパッケージ管理システムに知られています。低レベルのパッケージ操作ツールであるAPTおよび同様のツールは、実際のインストールを実行し、依存関係およびパッケージのダウンロードを処理するためにdpkg呼び出す高レベルのツールです。dpkg

ソースからプログラムをコンパイルすると、パッケージマネージャはそれを認識しません。状況を追跡し、インストールを上書きするのが難しいため、従う必要があるLinuxの規則は次のとおりです。

  • /bin、、、/libはパッケージマネージャ用に予約されています/sbin/usr
  • ただし、これは/usr/localシステム管理者向けです。ディレクトリ階層を尊重しますが、ファイルを直接管理する必要があります。

バラよりUbuntu 10.04でvim / gvimを7.3にアップグレードするための最良の方法は何ですか?最新バージョンのソフトウェアをダウンロードする方法のリストをご覧ください。最も簡単な方法はアンフェタミンもしそうなら。バイナリパッケージを入手したりソースからコンパイルする場合は、次を使用することをお勧めします。お店手動でインストールされたソフトウェアを管理します。または、自分だけの.debバッグ作り- より多くの作業が必要ですが、頻繁にアップグレードする場合(次のマイナーバージョンのパッケージ再構築は通常非常に高速です)、同じ展開を実行している多くのシステムに展開する場合はそれほど価値があります。

ほとんどのプログラムと同様に、実行すると./configure && make && sudo make installそのプログラムがにインストールされます/usr/local。ソースコード(通常はファイル名READMEまたは名前INSTALL)に付属のマニュアルを確認または実行して、そのような./configure --help場合であることを確認してください。プログラムが以下にインストールされると、/usr/localパッケージマネージャが提供するバージョンを妨げることはありません。/usr/local/binシステムの最初の行ですPATH。管理者(root)として実行する必要がありますmake install。ルートにコンパイルしないでください。上記のように/usr/local

答え3

包装や他の多くの要因によって異なります。

  1. 使用される命名規則 - バイナリのファイル名にバージョン番号が含まれているかどうか
  2. インストール場所 - デフォルトはoptですが、パッケージのバージョンは/ usrにあります。
  3. より多くの可能性

簡単に言うと:
普遍的な答えはありません。パッケージへの依存度が高い。可能であれば、ソースでコンパイルするのではなく、公式の+1 PPAを使用する必要があります。

関連情報