Criando binários distribuíveis no Unix

0

Minha intenção é gerar binários distribuíveis - Eu estou fazendo um ./configure - make - make install na minha máquina de compilação, e arquivei o conteúdo do diretório de instalação (aquele que eu dei um prefixo ao fazer ./configure e fazer a instalação) e movido para outra máquina sob outro usuário para teste. Após o teste, vejo que os arquivos copiados ainda tentam acessar alguns arquivos em um caminho que estava na minha máquina de compilação - e, portanto, recebo permissions denied error. Anteriormente eu estava pensando que poderia ser um problema de tar durante a extração, mas graças a Daniel Beck que me ajudou perceber que não tem nada a ver com o processo de arquivamento.

Eu não tenho privilégios root / sudo. O crux é - como faço para construir em uma máquina e usar os arquivos de instalação em muitos outros sem entrar em problemas relacionados a permissões? Quais são as regras para criar tarballs distribuíveis universalmente?

Obrigado.

    
por Sayan 12.11.2011 / 08:39

2 respostas

1

O problema é que muitos programas Unix não são relocáveis. Eles sempre procurarão por arquivos no caminho que você fornecer para configurar (não em relação ao seu próprio local). Se você quer que ele seja relocável, então ele pode ser instalado em qualquer diretório de usuários (ou em qualquer outro lugar) e ainda encontrar seus arquivos, onde não há outra maneira senão modificar o programa para se comportar dessa maneira.

Não há regras genéricas para criar tarballs geralmente distribuíveis, especialmente para programas feitos para serem instalados a partir da origem. A maioria das distribuições Unix possui algum tipo de sistema de pacotes especiais para distribuir binários. A melhor coisa é usar isso / aqueles. A maioria dos aplicativos comerciais que são enviados como binários em tarballs usam uma variável de ambiente para localizar seus arquivos e usar um script de shell de wrapper que define essa variável (procurando os arquivos relativos a seu próprio caminho, por exemplo). Então, novamente, você provavelmente terá que modificar o programa para se comportar dessa maneira.

    
por 14.11.2011 / 19:17
0

Use tar --no-same-owner (para a versão GNU) ao descompactar o tarball. --no-same-permissions também pode ser útil.

    
por 12.11.2011 / 08:54