Os binários criados a partir do código-fonte podem ser instalados em uma segunda máquina?

Os binários criados a partir do código-fonte podem ser instalados em uma segunda máquina?

Não tenho certeza se este é o melhor lugar para perguntar isso. Por favor, indique-me a direção certa se houver um lugar melhor.

Digamos, hipoteticamente, que eu tenha duas máquinas - A é uma máquina de desenvolvimento e B é uma máquina de produção. A possui software como um compilador que pode ser usado para construir software a partir do código-fonte, enquanto B não.

Em A, posso facilmente construir software a partir do código-fonte seguindo a rotina usual:

./configure
make

Então, posso instalar o software criado em A executando sudo make install. No entanto, o que eu realmente gostaria de fazer é instalar o software que acabei de criar no B. Qual é a melhor maneira de fazer isso?

Existem algumas opções que considerei:

  1. Use um gerenciador de pacotes para instalar software em B: esta não é uma opção para mim porque o software disponível no gerenciador de pacotes está muito desatualizado.
  2. Instale o compilador e outras ferramentas de construção em B: Prefiro não instalar ferramentas de construção na máquina de produção devido a várias restrições.
  3. Copie manualmente os binários de A para B: isso é propenso a erros e gostaria de ter certeza de que os binários sejam instalados de maneira consistente nas máquinas de produção.
  4. Instale apenas makeem B, transfira o diretório de origem e execute sudo make installem B: esta é a melhor solução que encontrei até agora, mas por algum motivo (talvez deslocamentos de clock), maketentarei reconstruir o software que já deveria ter sido build, que falha porque as ferramentas de construção não estão instaladas em B. Como minhas máquinas também têm velocidades de E/S terríveis, a transferência do diretório de origem leva muito tempo.

O que seria muito bom é se houvesse uma maneira de criar algum tipo de pacote contendo os binários construídos que pudesse ser transferido e executado para instalar os binários e arquivos de configuração. Existe alguma ferramenta desse tipo?

Responder1

Usando o que você tem até agora e se o makefile for gerado com autotools GNU, eu definiria olocal de destino ou caminho de instalaçãocom

./configure --prefix=/somewhere/else/than/the/usual/usr/local

e então corra

make && make install

e finalmente copie os arquivos da pasta de prefixo para a usr/pasta da outra máquina. Isso pressupõe que ambas as máquinas tenham a mesma arquitetura; caso contrário, use o conjunto de ferramentas cruzado correspondente.

Responder2

A maneira mais limpa de fazer isso provavelmente seria usar as ferramentas de empacotamento que o sistema operacional usa para criar um pacote para o aplicativo e instalá-lo como qualquer outro. Como fazer isso varia entre os gerenciadores de pacotes e sistemas), e há uma certa curva de aprendizado aí.

A instalação manual pode ser um pouco mais fácil se o pacote fonte suportar a instalação do software dentro de alguma subárvore (por exemplo, /opt/packagenameou /usr/local/packagename). Compile e instale em uma máquina e copie apenas essa subárvore para o mesmo local na outra máquina. O diretório deve incluir todos os arquivos relevantes e somente eles.

Se precisar de alterações no /etc, você terá que fazer isso manualmente. Além disso, para realmente acessar os binários, você terá que vinculá-los simbolicamente a algum diretório em seu caminho ou adicionar o bindiretório de pacotes ao caminho. A maioria dos pacotes que usam autoconf/ automakepodem levar o --prefixargumento ao ./configurescript para definir o caminho de instalação.

Em qualquer caso, você precisa descobrir quais bibliotecas, etc. o aplicativo que você compilou precisa e certificar-se de ter versões compatíveis em ambas as máquinas.

informação relacionada