Instaluj tylko zależności danego pakietu w Debianie lub Ubuntu (apt)

18

Czy istnieje lepszy sposób na zainstalowanie tylko wymaganych zależności pakietu, zamiast instalowania go bezpośrednio za pomocą apt-get (lub innego interfejsu programu dpkg), a następnie natychmiastowego usuwania go, pomijając jego zależności?

Vinícius Ferrão
źródło

Odpowiedzi:

22

apt-cache depends pkgname pokaże zależności pakietu.

Jeśli chcesz mieć wszystko w jednym poleceniu, możesz zrobić gorzej niż:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
smammy
źródło
16

apt-get udostępnia polecenie dla dokładnie tego ...

apt-get build-dep <package name>

Ze stron podręcznika użytkownika

build-dep powoduje, że apt-get instaluje / usuwa pakiety, próbując spełnić zależności kompilacji dla pakietu źródłowego. Domyślnie zależności są spełnione, aby zbudować pakiet natywnie. W razie potrzeby można określić architekturę hosta za pomocą opcji --host-architecture.

Nathan Crock
źródło
9
Czy nie może być różnicy między build dependenciesi dependencies? Podobnie jak w przypadku, gdy normalnie instalujesz program, dostajesz zależności, które musi on faktycznie uruchomić, a przy zależnościach kompilacji myślę więcej o bibliotekach, kompilatorach i podobnych rzeczach. Więc nie jestem pewien (ta odpowiedź ma pozytywne głosy), ale wydaje mi się, że nie jest trywialne, że uzyskanie zależności kompilacji jest tym samym, co uzyskanie zależności (uruchamiania) pakietów?
Nanne
1
Masz rację. W odpowiedzi na to pytanie, tak bardzo dawno temu, nie do końca rozumiałem różnicę między zależnościami kompilacji (czas kompilacji) a zależnościami (czas wykonywania). Dziękujemy za wyjaśnienie Nanne!
Nathan Crock
4

aptitude pozwoli ci określić zapytanie zamiast nazwy pakietu podczas instalacji. Jeśli chcesz zainstalować zależności nazwanego pakietu foo, możesz zainstalować pakiety, które mają odwrotną zależność od foo:

aptitude install '?reverse-depends(foo)'

lub

aptitude install '~Rfoo'

Problem z instalacją pakietu, a następnie jego usunięciem polega na tym, że wszystkie pakiety, które zostaną zainstalowane jako zależności, zostaną oznaczone jako „automatycznie zainstalowane” i zostaną usunięte przez dowolną akcję instalacji / usunięcia / aktualizacji przez aptitude lub podczas uruchamiania, apt-get autocleanchyba że oznacz je jako zainstalowane ręcznie za pomocą aptitude marklub apt-markpolecenia.

Jednak rodzi się pytanie, dlaczego chciałbyś to zrobić, zgaduję, że próbujesz zainstalować zależności dla niektórych programów, które zamierzasz skompilować ręcznie. W takim przypadku najpierw należy zainstalować zależności kompilacji apt-get build-dep packagename, ale następnie należy utworzyć fikcyjny pakiet, który ma zależności środowiska wykonawczego (które zasadniczo różnią się od zależności kompilacji), używając equivpakietu do zbudowania fikcyjnego pakietu z poprawnymi zależnościami dla Twój ręcznie skompilowany program. Zobacz informacje na temat equivsw APT HOWTO

gulasz
źródło
3

W przypadku budowania pkgname ze źródeł

apt-get build-dep pkgname
eri
źródło
1
zależności kompilacji nie są zależnościami środowiska wykonawczego
patrz
>> W przypadku budowania pkgname ze źródeł
eri
Nie wiem, gdzie to jest gwarantowane / udokumentowane. Ponadto nadal nie czyni tego samego w żadnym celu. Cały czas używam build-dep ale naprawdę chciałbym uzyskać lepszą odpowiedź na bieżące pytanie. Ja też tego potrzebuję.
sehe