Eu preciso compilar um software das fontes.
./config && make && make install
Nele, ele instala um monte de coisas em todos os lugares (bibliotecas, etc)
Mas o problema é que também preciso copiar esse software para outro conjunto de máquinas nas quais não desejo instalar o gcc.
Como eu poderia fazer esse software instalar em um "diretório" para depois apenas copiar para as outras máquinas?
Se você pretende distribuir o software para outras máquinas, definitivamente precisa empacotá-lo.
Você não especifica qual distribuição está usando, então a orientação geral segue.
O software nos mundos GNU/Linux e *BSD geralmente é distribuído em forma de pacote e código-fonte quando sua licença permite.
Diferentes distribuições usam diferentes frontends ou gerenciadores de pacotes para atualizar, instalar e remover este software.
O software compilado a partir do código-fonte é comumente (mas nem sempre) construído usando um fluxo de trabalho conhecido (
configure && make && make install
), a opção que você mencionou (--prefix
) é uma opção presente ao usar um conjunto comum de ferramentas para construir software a partir do projeto GNU conhecido comoautotools
. Resumidamente explicado, é possível passar uma opção para modificar o local padrão (/usr/local
) quemake install
será usado para copiar o software compilado no sistema local.O software de empacotamento inclui essa etapa de compilação, mas é mais complicado, pois aproveita o uso de metadados para gerenciar dependências, transacionalidade e outras funcionalidades não presentes no
autotools
esquema básico.Dê uma olhada na saída de:
Nesse caso, o formato do pacote é RPM , outras distribuições usam DEB e os gerenciadores de pacotes também são diferentes (
yum
/dnf
,zypper
,pkgsrc
,dpkg
ouapt
/aptitude
, ...).Dependendo da quantidade de máquinas para as quais você precisa distribuir este software e do processo usado para construí-lo, fazer o controle de qualidade e armazená-lo, diferentes métodos (ou partes deles) se aplicam:
Aprenda como o sistema de embalagem padrão funciona na plataforma de sua escolha. Por exemplo, no Red Hat e derivados, você precisa escrever um arquivo SPEC e usar
rpmbuild
. Também existem alternativas leves comofpm
essa que podem economizar seu tempo.Aprenda a configurar e gerenciar um repositório privado para hospedar seus pacotes personalizados. Algumas ferramentas neste campo incluem
createrepo
eapt-utils
, mas também aplicativos de nível superior comocobbler
,pulp
ounexus
.Se seu fluxo de trabalho for mais complicado, por exemplo, se incluir o controle de qualidade do pacote, você pode precisar de ferramentas para automatizar isso. Existem muitos .
Documente o processo.