O que são "build-essential" e "build-dep"?

66

Estou pesquisando como instalar o Ruby 1.9.1 no Xubuntu 10.04 e me deparei com o comando build-essential e build-dep várias vezes. Às vezes é seguido por pacotes e às vezes é precedido e pós-cedido por pacotes.

Os 2 exemplos que eu estou vendo são:

sudo apt-get install zlib1g-dev 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 libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 libopenssl-ruby libdbm-ruby libdbm-ruby libdbi libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev

classer
fonte
3
Note que não é um comando, mas um pacote no sistema de pacotes Debian (APT). Você também pode adquirir o pacote usando ferramentas da GUI.
Obrigado. Mas como isso se relaciona com Ruby? Presumo que Ruby precise que ele funcione, mas talvez eu esteja errado.
classer

Respostas:

48

O build-essentialpacote é uma referência para todos os pacotes necessários para compilar um pacote Debian. Geralmente inclui os compiladores e bibliotecas GCC / g ++ e alguns outros utilitários.

Confira a documentação aqui .

Ismael
fonte
2
Ok, mas isso ainda não responde minha pergunta completamente. Eu entendo que 'build-essential' contém uma lista informativa de pacotes que são essenciais para a criação de pacotes Debian. Mas o que é considerado um pacote Debian? Rubi? compiladores gcc / g ++? E como os pacotes Debian e 'build-essential' se relacionam com o Ruby? O Ruby é construído sobre o pacote Debian? Dito de outra forma, o Ruby precisa do pacote build-essential para rodar? Eu realmente quero ver uma representação visual do relações entre todos esses componentes.
classer
3
Simplificando, se você (ou algum outro pacote que deseja instalar) precisa de um compilador C / C ++, é necessário instalar o build-essential. Geralmente é a primeira coisa que instalar em um novo :-) instalação do Ubuntu
4
@ Adam Como o Ruby é uma linguagem interpretada, o intérprete precisa do compilador C ou C ++ para construir-se para rodar em sua máquina. build-essentialé um metapacote (um pacote que instala muitos outros pacotes, como g ++ e gcc: os compiladores GNU C & C ++). É necessário se você deseja compilar algo da fonte e se deseja trabalhar com quase qualquer linguagem de programação. HTH!
squircle
7
Esta resposta está errada. A resposta abaixo é a correta. build-depé um comando apt-get e build-essentialé um pacote.
David
2
Esta não é a resposta correta. O link fornecido não fornece informações ou explicações sobre o que está no pacote essencial para a construção.
andDevW 27/07
55

O comando sudo apt-get build-dep packagenamesignifica "Como root, instale todas as dependências do 'packagename' para que eu possa construí-lo". Portanto, build-dep é um comando apt-get, como instalar, remover, atualizar etc.

build-essential é um pacote que contém referências a vários pacotes necessários para a construção de software em geral.

Kleist
fonte
1
Obrigado por explicar o comando 'build-dep'. Pelo que entendi, neste caso, o Ruby1.9 tem uma lista de dependências anexada à qual o Linux parece uma 'Lista de Tarefas / Construção' e uma a uma constrói cada um desses itens. A infraestrutura final criada permite que o Ruby1.9 funcione corretamente. O que eu não entendo é por que 'build-essential', ou todos os outros pacotes da linha superior (zlib1g zlib1g-dev zlibc libruby1.9 etc. etc.) não seriam incluídos na lista de tarefas 'anexado ao Ruby1.9. Não seria mais simples se houvesse apenas um comando?
classer
5

build-essentialpossui uma propriedade mágica: não precisa ser listada como uma dependência de construção no Build-Dependscampo de controle ( debian-packages) dos pacotes de origem, conforme documentado em https://www.debian.org/doc/debian-policy/ch-source.html# relações s-pkg

Você pode obter uma lista dos pacotes essenciais para compilação em:

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

Você também pode determinar se um pacote faz parte de build-essential:

apt-get show gcc

que diz:

Build-Essential: yes
Ciro Santilli adicionou uma nova foto
fonte
4

"build-essential" contém ferramentas (como o compilador gcc, make tool, etc) para compilar / criar software a partir da fonte. Então você começa com os arquivos de origem (geralmente C) e cria executáveis ​​a partir deles.

Se você está apenas tentando instalar o Ruby, eu recomendo apenas o uso do RVM (Ruby Version Manager) :

Siga as instruções em "Repositório do Github (recomendado)"

Observe que você precisará do software de controle de versão Git instalado primeiro. Use apt-get install git-corese você ainda não o tiver.

Doug
fonte