Qual é a diferença entre o apt-get install e o apt-get build-dep?

29

Na página do homem do apt-get , pode-se encontrar isto:

install pkg(s)
This option is followed by one or more packages desired for installation. Each package is a package name, not a fully qualified filename (for instance, in a Fedora Core system, glibc would be the argument provided, not glibc-2.4.8.i686.rpm).
All packages required by the package(s) specified for installation will also be retrieved and installed.
[...]

build-dep source_pkg
Causes apt-get to install/remove packages in an attempt to satisfy the build dependencies for a source package.

Parece que os dois estão tentando satisfazer as dependências, mas eu tive resultados diferentes enquanto estava instalando matplotlib com cada um desses: apt-get intall não funcionou com meu subsequente pip install matplotlib em meu virtualenv, enquanto apt-get build-dep fez *.

* Sim, eu precisava instalar matplotlib em um venv, mas o pip não conseguiu resolver algumas das dependências, então usei preguiçosamente o apt para resolvê-lo

    
por Anto 26.07.2013 / 14:39

2 respostas

34

A versão curta.

apt-get install

instala um novo pacote, resolvendo e baixando automaticamente os pacotes dependentes. Se o pacote estiver instalado, tente atualizar para a versão mais recente.

apt-get build-dep

Faz com que o apt-get instale / remova pacotes em uma tentativa de satisfazer as dependências de compilação de um pacote fonte.

O comando sudo apt-get build-dep packagename significa instalar todas as dependências para 'nome_do_pacote' para que eu possa construí-lo ". Portanto, o build-dep é um comando apt-get, assim como instalar, remover, atualizar, etc.

O comando build-dep pesquisa os repositórios locais no sistema e instala as dependências de compilação para o pacote. Se o pacote não existir no repositório local, ele retornará um código de erro.

Para instalar o matplotlib, consulte Para instalar o matplotlib no Ubuntu

Fonte: ManPage & Ravi Saive

    
por Mitch 26.07.2013 / 15:00
17

A diferença é se as dependências são necessárias no tempo de execução em oposição ao no tempo de compilação .

Por exemplo, talvez eu esteja construindo um binário que usa openssl. No tempo build eu precisaria dos arquivos de cabeçalho openssl, que estão em libssl-dev . Eu listaria isso como Build-Depends .

No entanto, o binário e o pacote resultantes não precisam do cabeçalho e de outros arquivos de desenvolvimento, portanto, no tempo install , não preciso de libssl-dev . Não seria em Depends , então. Mas libssl , a biblioteca de tempo de execução com a qual meu binário está vinculado, precisaria estar em Depends .

As seções homem que você citou indicam isso (ele fala sobre "satisfazer as dependências compilar " de um pacote), mas sem o conhecimento prévio de quando o Build-Depends é usado, isso pode ser confuso. / p>

Dê uma olhada no guia de políticas do Debian para definições de campos de arquivos de controle:

link

aqui está a seção sobre dependências de compilação. Observe que está sob o cabeçalho "dependencies for source packages":

link

E este aqui fala sobre o Depends. Observe que está no cabeçalho Pacotes binários :

link

    
por roadmr 26.07.2013 / 15:43

Tags