Cosa sono "build-essential" e "build-dep"?


57

Sto cercando come installare Ruby 1.9.1 in Xubuntu 10.04 e mi sono imbattuto nel comando build-essential e build-dep più volte. A volte è seguito da pacchetti e talvolta è sia preceduto che post-ceduto dai pacchetti.

I 2 esempi che sto guardando sono:

sudo apt-get install build-essential   zlib1g zlib1g-dev zlibc libruby1.9   libxml2 libxml2-dev libxslt-dev

sudo apt-get build-dep ruby1.9

e

sudo apt-get install ruby ​​irb ri rdoc   ruby1.8-dev libzlib-ruby libyaml-ruby   libreadline-ruby libncurses-ruby   librerie libuburses-ruby libruby-extras   libfcgi-ruby1.8 build-essential   libopenssl-ruby libdbm-ruby   libdbi-ruby libdbd-sqlite3-ruby   sqlite3 libsqlite3-dev libsqlite3-ruby   libxml-ruby libxml2-dev


3
Si noti che non si tratta di un comando, ma di un pacchetto nel sistema di pacchetti Debian (APT). Potresti anche acquisire il pacchetto usando gli strumenti della GUI.

Grazie. Come si collega a Ruby però? Presumo che Ruby ne abbia bisogno, ma forse ho torto.
classer

Risposte:


47

Il pacchetto build-essentials è un riferimento per tutti i pacchetti necessari per compilare un pacchetto Debian. In genere include i compilatori e le librerie GCC / g ++ e alcune altre utilità. Controlla la documentazione: Qui!


1
Ok ma questo non risponde ancora alla mia domanda. Capisco che "build-essential" contenga un elenco informativo di pacchetti che sono essenziali per creare pacchetti Debian. Ma cosa è considerato un pacchetto Debian? Rubino? compilatori gcc / g ++? E in che modo i pacchetti Debian e 'build-essential' si riferiscono a Ruby? Ruby è costruito sopra il pacchetto Debian? In altre parole, Ruby ha bisogno del pacchetto build-essential per funzionare? Mi piacerebbe davvero vedere una rappresentazione visuale del relazioni tra tutte queste parti.
classer

3
Per dirla semplicemente, se tu (o qualche altro pacchetto che vuoi installare) hai bisogno di un compilatore C / C ++, devi installare build-essential. Di solito è la prima cosa che installo in una nuova installazione di Ubuntu :-)

4
@Adam Dato che Ruby è un linguaggio interpretato, l'interprete ha bisogno del compilatore C o C ++ per costruirsi da solo sul proprio computer. build-essential è un metapacchetto (un pacchetto che installa molti altri pacchetti, come g ++ e gcc: i compilatori GNU C & amp; C ++). È necessario se vuoi compilare qualsiasi cosa dalla fonte e se vuoi lavorare con quasi tutti i linguaggi di programmazione. HTH!
squircle

@Ismael @thepurplepixel ottima informazione, grazie
classer

3
Questa risposta è sbagliata. La risposta qui sotto è quella corretta. build-dep è un comando apt-get e build-essential è un pacchetto.
David

47

Il comando sudo apt-get build-dep packagename significa "Come root, installa tutte le dipendenze per" nome pacchetto "in modo che possa essere compilato". Quindi build-dep è un comando apt-get proprio come installare, rimuovere, aggiornare, ecc.

build-essential è un pacchetto che contiene riferimenti a numerosi pacchetti necessari per la creazione di software in generale.


Grazie per aver spiegato il comando 'build-dep'. Quindi, come ho capito, in questo caso Ruby1.9 ha un elenco di dipendenze ad esso allegato che Linux considera come una "lista delle cose da fare / costruire" e uno per uno costruisce ciascuno di questi elementi. L'infrastruttura finale che viene creata consente a Ruby1.9 di funzionare correttamente. Quello che non capisco è perché 'build-essential', o tutti gli altri pacchetti nella riga superiore (zlib1g zlib1g-dev zlibc libruby1.9 ecc. Ecc.), Non verrebbero inclusi nell'elenco 'To Do / Build' 'allegato a Ruby1.9. Non sarebbe più semplice se ci fosse un solo comando?
classer

4

"build-essential" contiene strumenti (come il compilatore gcc, make tool, ecc.) per compilare / creare software dal sorgente. Quindi inizi con (di solito C) i file sorgente e crei file eseguibili da essi.

Se stai solo cercando di installare Ruby, ti consiglio vivamente di usarlo RVM (Ruby Version Manager) :

Seguire le istruzioni in "Github Repository (consigliato)"

Si noti che è necessario prima installare il software di controllo versione Git. Uso apt-get install git-core se non lo hai ancora


4

build-essential ha una proprietà magica: non ha bisogno di essere elencata come dipendenza di compilazione sotto il Build-Depends campo di controllo ( debian-packages ) dei pacchetti sorgente come documentato a https://www.debian.org/doc/debian-policy/ch-source.html#s-pkg-relations

Puoi ottenere un elenco dei pacchetti build-essential a:

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

Puoi anche determinare se un pacchetto fa parte di build-essential con:

apt-get show gcc

che dice:

Build-Essential: yes
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.