Construir bash (ou pacote linux alternativo) com nome binário / doc customizado

3

Estou tentando construir o Bash 4.2 como um pacote RPM para uso em sistemas Enterprise Linux 5, que vêm por padrão com o 3.2.25. Isso funciona com sucesso, no entanto, eu quero que ambas as versões coexistam no sistema, para evitar conflitos com o pacote do sistema, e permitir que o sistema / outros scripts continuem a usar o bash3, com o qual eles são compatíveis.

Meu plano é o seguinte:

  • Renomeie o pacote 'bash4' e não entre em conflito com 'bash' ou forneça 'sh'
  • Configure o bash para construir com o nome binário 'bash4' e altere o caminho de quaisquer documentos ou arquivos de suporte de acordo

Em teoria, isso é simples e o Vim oferece prefixo / sufixo binário em seus scripts de configuração, no entanto o bash não parece ter esse recurso. O mais próximo que eu encontrei é o EXEEXT do automake, que fornece suporte para extensões executáveis (como .exe no Windows), mas isso não é realmente projetado para o que eu quero fazer, não resolve o problema do documento.

    
por Stealthii 07.10.2013 / 10:42

1 resposta

2

Embora a versão bash autoconf (2.63) seja um pouco antiga (setembro de 2008), ela suporta os recursos --program-transform-name e --program-suffix . Infelizmente, o processo de compilação bash não usa esses recursos como detalhado na documentação , nem usa parâmetros para permitir o processamento em tempo de compilação das páginas man.

Como o número de arquivos e alterações é pequeno, recomendo uma abordagem semi-manual, ou seja, escrever um pequeno script para fazer as alterações na pré-instalação. Opcionalmente, você pode usar o installwatch para ter certeza de ver tudo durante a instalação, mas bash é realmente mínimo. (FWIW, eu dei uma rápida olhada nas portas bash do FreeBSD e nos patches do Debian, nenhum sinal de uma correção adequada.)

Embora geralmente seja uma maneira interessante de quebrar construções, você pode abusar de EXEEXT aqui:

ac_cv_exeext=42 ./configure [...]
make
./bash42 -c 'echo $BASH_VERSION'
4.2.42(1)-release

já que tudo o que você salvou foi uma renomeação, eu realmente não recomendo ;-)

Há um pouco mais a ganhar com:

./configure [...]
make -e Program=bash42

como isso também reflete sua alteração no script bashbug gerado (embora não o renomeie).

    
por 07.10.2013 / 12:46