Apa perbedaan antara apt-get install dan apt-get build-dep?

33

Pada halaman man apt-get , orang dapat menemukan ini:

install pkg
Opsi ini diikuti oleh satu atau beberapa paket yang diinginkan untuk instalasi. Setiap paket adalah nama paket, bukan nama file yang sepenuhnya memenuhi syarat (misalnya, dalam sistem Fedora Core, glibc akan menjadi argumen yang diberikan, bukan glibc-2.4.8.i686.rpm).
Semua paket yang dibutuhkan oleh paket yang ditentukan untuk instalasi juga akan diambil dan diinstal .
[...]

build-dep source_pkg
Menyebabkan apt-get untuk menginstal / menghapus paket-paket dalam upaya untuk memenuhi dependensi build untuk paket source.

Kedengarannya seperti keduanya mencoba untuk memenuhi dependensi, tetapi saya memiliki hasil yang berbeda saat menginstalmatplotlib dengan masing-masing: apt-get intalltidak bekerja dengan saya berikutnya pip install matplotlibdi virtualenv saya, sementara apt-get build-depmelakukan *.

*Ya, saya perlu menginstal matplotlibdi venv, tapi pip tidak bisa menyelesaikan beberapa dependensi, jadi saya malas menggunakan apt untuk menyelesaikannya

Anto
sumber

Jawaban:

39

Versi singkat.

apt-get install

menginstal paket baru, secara otomatis menyelesaikan dan mengunduh paket yang tergantung. Jika paket diinstal maka cobalah untuk meningkatkan ke versi terbaru.

apt-get build-dep

Penyebab apt-get untuk menginstal / menghapus paket dalam upaya untuk memenuhi dependensi build untuk paket source.

Perintah itu sudo apt-get build-dep packagenameberarti menginstal semua dependensi untuk 'nama paket' sehingga saya dapat membangunnya ". Jadi build-dep adalah perintah apt-get seperti menginstal, menghapus, memperbarui, dll.

The build-depperintah pencarian repositori lokal dalam sistem dan menginstal membangun dependensi untuk paket. Jika paket tidak ada di repositori lokal, ia akan mengembalikan kode kesalahan.

Untuk menginstal matplotlib, lihat Untuk Menginstal matplotlib di Ubuntu

Sumber: ManPage & Ravi Saive

Mitch
sumber
19

Perbedaannya adalah apakah dependensi diperlukan pada saat runtime dan bukan pada saat membangun .

Sebagai contoh, mungkin saya sedang membangun biner yang menggunakan openssl. Pada saat membangun saya akan membutuhkan file header openssl, yang ada di libssl-dev. Saya kemudian akan mendaftarkan ini sebagai Build-Depends.

Namun, biner dan paket yang dihasilkan tidak perlu header dan file pengembangan lainnya, jadi pada saat instalasi saya tidak perlu libssl-dev. Itu tidak akan masuk Depends, kalau begitu. Tapi libssl, perpustakaan runtime biner saya yang ditautkan, perlu masuk Depends.

Bagian pria yang Anda kutip menunjukkan ini (ini berbicara tentang "memenuhi dependensi build " dari sebuah paket), tetapi tanpa pengetahuan sebelumnya tentang kapan Build-Depends digunakan, ini bisa membingungkan.

Lihat panduan kebijakan Debian untuk definisi bidang file kontrol:

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

inilah bagian tentang Build-Depends. Perhatikan itu di bawah tajuk "dependensi untuk paket sumber ":

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

Dan ini berbicara tentang Tergantung. Catat 'di bawah header paket Biner :

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

roadmr
sumber
Terima kasih. Sepertinya saya perlu membangun-dep untuk membangun perpustakaan dari sumber .. sesuai dengan deskripsi Anda.
kchoi