como instalo um software que eu compilei com 'make'?

0

versão curta : make install tenta recompilar o projeto. Eu só quero colocar todos os arquivos nos lugares certos.

versão longa : Eu criei um contêiner docker para construir os projetos que eu quero. Foi um sucesso. A razão é que eu não quero instalar todas as dependências dev como pcre-devel e tal em meu contêiner docker final, digamos, apenas por uma questão de construir ag (o silver searcher).

Portanto, o processo é: eu pré-cozer minhas fontes com ./configure and make. então eu vou para o meu contêiner final e só executo make install. Pelo que entendi, make install apenas copia arquivos para os lugares certos. Mas, em vez disso, está tentando recompilar o projeto. Eu já emiti make, então por que make install está tentando reconstruir o projetct novamente?

O projeto específico que está fazendo isso é ag o pesquisador de prata

Eu recebo este erro:

bash-4.2# ./ag --version
ag version 0.32.0

Features:
  +jit +lzma -zlib
bash-4.2# make install
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh             /opt/sources/the_silver_searcher/missing autoheader)
rm -f src/stamp-h1
touch src/config.h.in
cd . && /bin/sh ./config.status src/config.h
config.status: creating src/config.h
config.status: src/config.h is unchanged
  CC       src/ignore.o
In file included from src/ignore.c:10:0:
src/options.h:7:18: fatal error: pcre.h: No such file or directory
 #include <pcre.h>
              ^
compilation terminated.
make: *** [src/ignore.o] Error 1
bash-4.2#

é claro que não quero instalar a dependência do pcre. mas isso não deve ser um problema porque eu tenho o binário já no lugar. O que está acontecendo?

    
por ninrod 21.07.2016 / 00:23

1 resposta

0

Para alguns projetos, a fase de "instalação" pode ser bastante simples. Portanto, uma abordagem diferente pode ser executar make -n install na máquina em que você compilou tudo. Isto irá avaliar o que é necessário para uma instalação e imprimir mas não executar os comandos. Se isso for relativamente curto, basta recortar e colar entre duas janelas de terminal para executá-las manualmente no destino. Pode até haver um alvo no Makefile que o empacota para você (embora você queira dar uma olhada no Makefile.in, que pode ser mais fácil de entender).

    
por 21.07.2016 / 08:34

Tags