apt-get installとapt-get build-depの違いは何ですか?


33

apt-getの人のページ、1はこれを見つけることができます。

install pkg(s)
このオプションの後に、インストールに必要な1つ以上のパッケージが続きます。各パッケージは、完全修飾ファイル名ではなくパッケージ名です(たとえば、Fedora Coreシステムでは、glibc-2.4.8.i686.rpmではなく、glibcが引数として提供されます)。
インストールに指定されたパッケージに必要なすべてのパッケージも取得およびインストールされます。
[...]

build-dep source_pkgは、ソースパッケージのビルド依存関係を満たすために、
apt-getがパッケージをインストール/削除 するようにします。

これは、これらの両方は、依存関係を満たすためにしようとしているように聞こえるが、私はしながら、異なる結果を持っていた設置matplotlib者のそれぞれに:apt-get intall私、その後に仕事をしませんでしたpip install matplotlibが、私のvirtualenvの中にapt-get build-dep*をしました。

*ええ、私matplotlibはvenv にインストールする必要がありましたが、pipはいくつかの依存関係を解決できなかったので、解決するために怠ziにaptを使用しました

回答:


39

ショートバージョン。

apt-get install

新しいパッケージをインストールし、依存パッケージを自動的に解決およびダウンロードします。パッケージがインストールされている場合は、最新バージョンにアップグレードしてください。

apt-get build-dep

ソースパッケージのビルド依存関係を満たすために、apt-getにパッケージをインストール/削除させます。

このコマンドsudo apt-get build-dep packagenameは、 'packagename'のすべての依存関係をインストールして、ビルドできるようにすることを意味します。 "build-depは、インストール、削除、更新などのapt-getコマンドです。

このbuild-depコマンドは、システム内のローカルリポジトリを検索し、パッケージのビルド依存関係をインストールします。パッケージがローカルリポジトリに存在しない場合、エラーコードが返されます。

matplotlibのインストールについては、Ubuntuにmatplotlibをインストールするを参照してください。

ソース:ManPage&Ravi Saive


19

違いは、ビルド時ではなく実行時に依存関係が必要かどうかです

たとえば、おそらくopensslを使用するバイナリを作成しています。で、ビルド時間を私はしているOpenSSLのヘッダファイルを、必要があるでしょうlibssl-dev。次に、これをとしてリストしBuild-Dependsます。

ただし、結果のバイナリとパッケージにはヘッダーやその他の開発ファイルは必要ないため、インストール時にはが必要ありませんlibssl-devDependsそれでは、ではありません。しかしlibssl、バイナリがリンクするランタイムライブラリはにある必要がありますDepends

引用したmanセクションはこれを示しています(パッケージの「ビルドの依存関係を満たす」について説明しています)。

制御ファイルのフィールドの定義については、Debianポリシーガイドをご覧ください。

http://www.debian.org/doc/debian-policy/ch-controlfields.html

ここにビルド依存のセクションがあります。「ソースパッケージの依存関係」ヘッダーの下にあることに注意してください。

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps

そして、これはDependsについて話します。Binary packagesヘッダーの下にあることに注意してください:

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps


ありがとう。あなたの記述によると、ソースからライブラリを構築するにはbuild-depが必要だと思われます。
-kchoi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.