¿Qué son "build-essential" y "build-dep"?

66

Estoy investigando cómo instalar Ruby 1.9.1 en Xubuntu 10.04 y encontré el comando build-essential y build-dep varias veces. Algunas veces es seguido por paquetes y otras veces es precedido y poscedido por paquetes.

Los 2 ejemplos que estoy viendo son:

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

sudo apt-get build-dep ruby1.9

y

sudo apt-get install ruby ​​irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby 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

clasificador
fuente
3
Tenga en cuenta que no es un comando, sino un paquete en el sistema de paquetes Debian (APT). También puede adquirir el paquete utilizando herramientas GUI.
Gracias. Sin embargo, ¿cómo se relaciona con Ruby? Supongo que Ruby lo necesita para funcionar, pero tal vez estoy equivocado.
clasificador

Respuestas:

48

El build-essentialpaquete es una referencia para todos los paquetes necesarios para compilar un paquete Debian. Generalmente incluye los compiladores y bibliotecas GCC / g ++ y algunas otras utilidades.

Consulte la documentación aquí .

Ismael
fuente
2
Ok, pero eso todavía no responde a mi pregunta por completo. Entiendo que 'build-essential' contiene una lista informativa de paquetes que son esenciales para crear paquetes Debian. Pero, ¿qué se considera un paquete Debian? ¿Rubí? compiladores gcc / g ++? ¿Y cómo se relacionan los paquetes Debian y 'build-essential "con Ruby? ¿Está Ruby construido sobre el paquete Debian? Dicho de otra manera, ¿necesita Ruby el paquete build-essential para ejecutarse? Realmente deseo ver una representación visual del relaciones entre todas estas partes.
classer
3
En pocas palabras, si usted (o algún otro paquete que desea instalar) necesita un compilador C / C ++, debe instalar build-essential. Por lo general, es lo primero que instalo en una nueva instalación de Ubuntu :-)
44
@Adam Dado que Ruby es un lenguaje interpretado, el intérprete necesita el compilador C o C ++ para compilarse y ejecutarse en su máquina. build-essentiales un metapaquete (un paquete que instala muchos otros paquetes, como g ++ y gcc: los compiladores GNU C & C ++). Es necesario si desea compilar cualquier cosa desde el origen y si desea trabajar con casi cualquier lenguaje de programación. HTH!
ardilla
77
Esta respuesta es incorrecta. La respuesta a continuación es la correcta. build-depes un comando apt-get y build-essentiales un paquete.
David
2
Esta no es la respuesta correcta. El enlace proporcionado no ofrece información ni explicación sobre lo que se incluye en el paquete build-essential.
andDevW
55

El comando sudo apt-get build-dep packagenamesignifica "Como root, instale todas las dependencias para 'packagename' para que pueda construirlo". Entonces build-dep es un comando apt-get al igual que instalar, eliminar, actualizar, etc.

build-essential es un paquete que contiene referencias a numerosos paquetes necesarios para crear software en general.

Kleist
fuente
1
Gracias por explicar el comando 'build-dep'. Entonces, según tengo entendido, en este caso, Ruby1.9 tiene una lista de dependencias adjunta que Linux considera como una 'Lista de tareas / compilaciones' y una por una construye cada uno de esos elementos. La infraestructura final que se construye permite que Ruby1.9 funcione correctamente. Lo que no entiendo es por qué 'build-essential', o todos los demás paquetes en la línea superior (zlib1g zlib1g-dev zlibc libruby1.9, etc., etc.), no se incluirían en la 'Lista de tareas / Build 'adjunto a Ruby1.9. ¿No sería más simple si hubiera un solo comando?
clasificador
5

build-essentialtiene una propiedad mágica: no es necesario que aparezca como una dependencia de compilación bajo el Build-Dependscampo de control ( debian-packages) de los paquetes fuente como se documenta en https://www.debian.org/doc/debian-policy/ch-source.html# relaciones s-pkg

Puede obtener una lista de los paquetes esenciales de compilación en:

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

También puede determinar si un paquete forma parte de build-essential:

apt-get show gcc

que dice:

Build-Essential: yes
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
4

"build-essential" contiene herramientas (como el compilador gcc, make tool, etc.) para compilar / construir software desde la fuente. Entonces comienza con archivos fuente (generalmente C) y crea ejecutables a partir de ellos.

Si solo está intentando instalar Ruby, le recomiendo usar RVM (Ruby Version Manager) :

Siga las instrucciones en "Repositorio de Github (recomendado)"

Tenga en cuenta que primero necesitará el software de control de versiones Git instalado. Úselo apt-get install git-coresi aún no lo tiene.

Doug
fuente