Como atualizar o software instalado a partir da fonte?


10

Eu instalo o NGinx a partir da fonte, já que os pacotes do repositório ubuntu são bastante antigos. Eu queria saber qual é o melhor método para atualizar esses tipos de instalações?

Meu fluxo de trabalho atual envolve.

  • Fazendo o download da nova fonte
  • Instale o software com os mesmos caminhos.
  • Reiniciando o software.

Algo me diz que esse não é o melhor caminho.

Sugestões?

Respostas:


9

Você está certo ao pensar que esse não é o melhor caminho. Essa rota requer muitas etapas manuais e é muito suscetível a erros e não é bem dimensionada.

Ao trabalhar com distribuições linux, você deve manter o gerenciamento de pacotes o máximo possível.

As vantagens de usar o gerenciamento de pacotes:

  • Suporte de dependência
  • Fácil instalação / remoção
  • Inventário de software
  • Suporte para atualização / downgrade, incluindo manipulação de arquivos de configuração
  • O pacote de origem basicamente documenta seu processo de compilação e o automatiza para você depois que ele é escrito.
  • Assinatura de pacote
  • e mais.

Quando você começa a trabalhar apenas da fonte, perde todos esses ótimos recursos e as coisas começam a ficar confusas rapidamente.

Para resolver seu problema específico, você deve verificar o repositório de backports do ubuntu , talvez eles tenham uma versão atualizada para o NGinx que você possa usar.

Se eles não tiverem uma versão adequada, a melhor solução seria criar você mesmo um pacote ubuntu suportado. Realmente não é tão difícil, e é menos trabalhoso do que compilá-lo manualmente a partir do código-fonte toda vez. O backporting requer, basicamente, a retirada do pacote fonte do ubuntu, a substituição do antigo arquivo up.geam tar.gz pelo mais recente que você deseja e a reconstrução do pacote.

Você pode usar este guia para ajudá-lo a exportar o pacote.


8

Achei bastante conveniente instalar uma versão diferente em locais separados e apenas ligar para a versão que você deseja usar, como:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Os benefícios são:

  • tempo de inatividade minimizado do serviço durante uma atualização
  • reversão fácil
  • você ainda pode usar o mesmo caminho, como /usr/local/foo/bin/bar

É claro que você ainda precisa aplicar novamente as alterações de configuração feitas na versão anterior, mas para isso você pode usar algum sistema de controle de versão (RCS / SVN / GIT) ou ferramenta de gerenciamento de configuração como o Bcfg2 .

E, é claro, isso é adequado apenas para alguns hosts ou menos.


É o que eu faço nos poucos casos em que a criação de pacotes não é uma resposta adequada, exceto que geralmente eu uso / opt em vez de / usr / local.
freiheit

2

Da próxima vez ... que tal compilá-lo em um * .rpm ou * .deb?


1

Se você estiver instalando isso em uma única máquina, fazê-lo da fonte toda vez é o problema da melhor maneira. Se você vai instalar isso em várias máquinas e deseja garantir que seja consistente, provavelmente vale a pena aprender como criar pacotes Debian. Você provavelmente poderia usar a embalagem no Ubuntu como base.


1

Não existe uma ótima maneira. A razão pela qual o gerenciamento eficaz de pacotes foi criado foi resolver esse mesmo problema. Atualizar e desinstalar as coisas compiladas pela fonte é difícil.

Eu concordo com Tom e David.

Se este for um caso único, recompilar a partir da fonte é provavelmente a sua melhor aposta. Se estiver em uma variedade de máquinas, é hora de mudar para o gerenciamento de pacotes com suporte.


0

Receio que este seja o único caminho. se você tiver mais servidores para manter - considere ter um ambiente de teste separado onde você compila e possivelmente empacota o resultado da sua compilação.

isso padronizará levemente suas configurações e facilitará a implantação em muitos servidores. Além disso, você não precisará do gcc nas máquinas de produção [que muitos considerarão como benefício de segurança].

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.