Apt-get install ve apt-get build-dep arasındaki fark nedir?


33

On apt-get adamın sayfasında , kimse bu bulabilirsiniz:

yükleme pkg (s)
Bu seçeneği kurulum için istenen bir veya daha fazla paket izler. Her paket tam bir dosya adı değil bir paket adıdır (örneğin, Fedora Core sisteminde glibc, glibc-2.4.8.i686.rpm değil, sağlanan argüman olur).
Kurulum için belirtilen paket (ler) tarafından istenen tüm paketler de alınır ve yüklenir .
[...]

build-dep source_pkg Kaynak paket için derleme bağımlılıklarını sağlama girişiminde
apt-get paketlerini kurmaya / kaldırmaya neden olur .

Her ikisi de bağımlılıkları sağlamaya çalışıyor gibi gözüküyor, ancak bunların her birini kurarkenmatplotlib farklı sonuçlar elde ettim: sanalenvde apt-get intallmüteakiplerimle çalışmadım, *.pip install matplotlibapt-get build-dep

*Evet, matplotlibbir venv içine kurmam gerekiyordu, ama pip bazı bağımlılıkları çözemedi, bu yüzden çözmek için tembelce apt kullandım

Yanıtlar:


39

Kısa versiyon

apt-get install

bağımlı paketleri otomatik olarak çözen ve indiren yeni bir paket yükler. Paket yüklüyse, en son sürüme yükseltmeyi deneyin.

apt-get build-dep

Kaynak paket için yapı bağımlılıklarını sağlamaya çalışarak apt-get paketlerini kurmaya / kaldırmaya neden olur.

Komut sudo apt-get build-dep packagename, 'packagename' için tüm bağımlılıkları kurmak, böylece kurabilirim "anlamına gelir. Bu yüzden build-dep, yükleme, kaldırma, güncelleme vb. Gibi apt-get komutudur.

build-depKomut sisteminde yerel depoları arar ve paket için inşa bağımlılıklarını yükleyin. Paket yerel depoda mevcut değilse, bir hata kodu döndürür.

Matplotlib'i yüklemek için bkz. Matplotlib'i Ubuntu'ya Kurmak

Kaynak: ManPage ve Ravi Saive


19

Aradaki fark, bağımlılıkların inşa zamanında değil , çalışma zamanında gerekip gerekmediğidir .

Örneğin, belki openssl kullanan bir ikili yapı yapıyorum. At inşa zamanda ben içindedir openssl header dosyaları, gerekir libssl-dev. Daha sonra bunu bir olarak listelerim Build-Depends.

Ancak, ortaya çıkan ikili dosya ve paket başlık ve diğer geliştirme dosyalarına ihtiyaç duymaz, bu yüzden kurulum sırasında ihtiyacım yok libssl-dev. O zaman içeri Dependsgirmezdi. Ancak libssl, ikili dosyamın bağlandığı çalışma zamanı kütüphanesinin içinde olması gerekir Depends.

Alıntı yaptığınız man bölümleri bunu (bir paketin " yapı bağımlılıklarını yerine getirmekten bahsediyor" hakkında) bunu gösterir , ancak Build-Depends ne zaman kullanıldığına dair önceden bilgi sahibi olmadan kafa karıştırıcı olabilir.

Kontrol dosyası alanlarının tanımları için Debian politika rehberine bakınız:

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

İşte Bağımlılıklar konulu bölüm. " Kaynak paketler için bağımlılıklar " başlığının altında olduğuna dikkat edin :

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

Ve bu da Depends hakkında konuşuyor. ' İkili paketler başlığı ' altında not alın :

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


Teşekkürler. Kaynağınıza göre kaynaktan bir kütüphane oluşturmak için dep-inşa etmem gerekecek gibi görünüyor.
saat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.