Co to są „build-essential” i „build-dep”?

66

Badam, jak zainstalować Ruby 1.9.1 w Xubuntu 10.04 i wiele razy spotkałem się z poleceniem build-essential i build-dep . Czasami następuje po nich paczka, a czasem jest ona zarówno poprzedzona, jak i wysłana dalej.

Dwa przykłady, na które patrzę, to:

sudo apt-get install niezbędne do kompilacji zlib1g zlib1g-dev zlibc libruby1.9 libxml2 libxml2-dev libxslt-dev

sudo apt-get build-dep ruby1.9

i

sudo apt-get install ruby ​​irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-dodatki dodatki libfcgi-ruby1.8 zbuduj niezbędne libopenssl-ruby libdbm-ruby libdbi libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev

classer
źródło
3
Zauważ, że nie jest to polecenie, ale pakiet w systemie pakietów Debiana (APT). Możesz także uzyskać pakiet za pomocą narzędzi GUI.
Dzięki. Ale jak to się ma do Ruby? Zakładam, że Ruby potrzebuje go do uruchomienia, ale może się mylę.
classer

Odpowiedzi:

48

build-essentialPakiet jest punktem odniesienia dla wszystkich pakietów potrzebnych do kompilacji pakietu Debiana. Ogólnie obejmuje kompilatory i biblioteki GCC / g ++ oraz niektóre inne narzędzia.

Sprawdź dokumentację tutaj .

Ismael
źródło
2
Ok, ale to wciąż nie odpowiada w pełni na moje pytanie. Rozumiem, że 'build-essential' zawiera informacyjną listę pakietów, które są niezbędne do tworzenia pakietów Debiana. Ale co uważa się za pakiet Debiana? Rubin? kompilatory gcc / g ++? A w jaki sposób pakiety Debiana i „niezbędne do zbudowania” odnoszą się do Ruby? Czy Ruby jest zbudowane na pakiecie Debiana? Innymi słowy, czy Ruby potrzebuje pakietu niezbędnego do zbudowania? Naprawdę chcę zobaczyć wizualną reprezentację relacje między tymi wszystkimi częściami
classer
3
Mówiąc prościej, jeśli potrzebujesz (lub innego pakietu, który chcesz zainstalować) kompilatora C / C ++, musisz zainstalować niezbędny do kompilacji. Zwykle jest to pierwsza rzecz, którą instaluję w nowej instalacji Ubuntu :-)
4
@Adam Ponieważ Ruby jest językiem interpretowanym, interpreter potrzebuje kompilatora C lub C ++ do zbudowania się na komputerze. build-essentialto metapakiet (pakiet instalujący wiele innych pakietów, takich jak g ++ i gcc: kompilatory GNU C i C ++). Jest to wymagane, jeśli chcesz skompilować cokolwiek ze źródła i jeśli chcesz pracować z prawie dowolnym językiem programowania. HTH!
squircle
7
Ta odpowiedź jest zła. Odpowiedź poniżej jest prawidłowa. build-depjest poleceniem apt-get i build-essentialjest pakietem.
David
2
To nie jest poprawna odpowiedź. Podany link nie daje wglądu ani wyjaśnienia, co znajduje się w pakiecie niezbędnym do kompilacji.
iDevW,
55

Polecenie sudo apt-get build-dep packagenameoznacza „Jako root, zainstaluj wszystkie zależności dla„ nazwa-pakietu ”, aby móc go zbudować”. Więc build-dep to polecenie apt-get, podobnie jak instaluj, usuwaj, aktualizuj itp.

build-essential to pakiet, który zawiera odniesienia do wielu pakietów potrzebnych do budowy oprogramowania w ogóle.

Kleist
źródło
1
Dziękujemy za wyjaśnienie polecenia „build-dep”. Tak więc, jak rozumiem, w tym przypadku do Ruby1.9 dołączona jest lista zależności, którą Linux wygląda jak „Lista zadań do wykonania / kompilacji” i jedna po drugiej buduje każdy z tych elementów. Ostateczna budowana infrastruktura pozwala Ruby1.9 działać poprawnie. Nie rozumiem, dlaczego „niezbędne do zbudowania” lub wszystkie inne pakiety w górnej linii (zlib1g zlib1g-dev zlibc libruby1.9 itd. Itp.), Nie zostałyby uwzględnione w „liście zadań do wykonania / kompilacji” 'dołączony do Ruby 1.9. Czy nie byłoby łatwiej, gdyby było tylko jedno polecenie?
classer
5

build-essentialma jedną magiczną właściwość: nie musi być wymieniona jako zależność kompilacji w polu Build-Dependskontrolnym ( debian-packages) pakietów źródłowych, jak udokumentowano na https://www.debian.org/doc/debian-policy/ch-source.html# s-pkg-relations

Możesz uzyskać listę pakietów niezbędnych do kompilacji na:

cat /usr/share/doc/build-essential/list

Możesz także ustalić, czy pakiet jest częścią build-essential:

apt-get show gcc

który mówi:

Build-Essential: yes
Ciro Santilli
źródło
4

„build-essential” zawiera narzędzia (takie jak kompilator gcc, make tool itp.) do kompilowania / budowania oprogramowania ze źródła. Więc zaczynasz od (zwykle C) plików źródłowych i tworzysz z nich pliki wykonywalne.

Jeśli próbujesz tylko zainstalować Ruby, zdecydowanie polecam użycie RVM (Ruby Version Manager) :

Postępuj zgodnie z instrukcjami pod „Repozytorium Github (zalecane)”

Pamiętaj, że najpierw musisz zainstalować oprogramowanie do kontroli wersji Git. Użyj, apt-get install git-corejeśli jeszcze tego nie masz.

Doug
źródło