Come aggiornare il software installato dalla fonte?


10

Installo NGinx dal sorgente poiché i pacchetti dal repository ubuntu sono piuttosto vecchi. Mi chiedevo qual è il metodo migliore per aggiornare questi tipi di installazioni?

Il mio attuale flusso di lavoro comporta.

  • Download della nuova fonte
  • Installa il software con gli stessi percorsi.
  • Riavvio del software.

Qualcosa mi dice che questo non è il percorso migliore.

Suggerimenti?

Risposte:


9

Hai ragione a pensare che questo non sia il percorso migliore. Questo percorso richiede molti passaggi manuali ed è molto soggetto a errori e non si adatta bene.

Quando si lavora con le distribuzioni di Linux, è necessario attenersi il più possibile alla gestione dei pacchetti.

I vantaggi dell'utilizzo della gestione dei pacchetti:

  • Supporto per le dipendenze
  • Facile installazione / rimozione
  • Inventario del software
  • Supporto per l'aggiornamento / il downgrade, inclusa la gestione dei file di configurazione
  • Il pacchetto sorgente documenta fondamentalmente il processo di compilazione e lo ha automatizzato per te una volta scritto.
  • Firma del pacchetto
  • e altro ancora

Quando inizi a lavorare solo dalla fonte, perdi tutte queste fantastiche funzionalità e le cose iniziano a diventare disordinate abbastanza rapidamente.

Per risolvere il tuo problema specifico, dovresti dare un'occhiata al repository di backport di Ubuntu , forse hanno una versione aggiornata di NGinx che puoi usare.

Se non hanno una versione adatta, la soluzione migliore sarebbe quella di creare da soli un pacchetto ubuntu backportato. Non è poi così difficile, ed è meno lavoro che compilarlo dal sorgente manualmente ogni volta. Il backporting richiede, fondamentalmente, di prendere il pacchetto sorgente da Ubuntu, sostituire il vecchio file tar.gz upsteam con quello più recente desiderato e ricostruire il pacchetto.

Puoi utilizzare questa guida per aiutarti a eseguire il backport del pacchetto.


8

Ho trovato abbastanza comodo installare versioni diverse in posizioni separate e solo un link simbolico alla versione che si desidera utilizzare, come:

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

I vantaggi sono:

  • tempi di inattività del servizio ridotti durante un aggiornamento
  • rollback facile
  • puoi comunque usare lo stesso percorso, come /usr/local/foo/bin/bar

Ovviamente devi ancora riapplicare tutte le modifiche alla configurazione che hai apportato alla versione precedente, ma per questo puoi usare un sistema di controllo delle versioni (RCS / SVN / GIT) o uno strumento di gestione della configurazione come Bcfg2 .

E, naturalmente, questo è adatto solo per una manciata o meno host.


Questo è ciò che faccio nei pochi casi in cui la creazione di pacchetti non è una risposta adatta, tranne che di solito uso / opt anziché / usr / local.
Freiheit,

2

La prossima volta ... che ne dici di compilarlo in un * .rpm o * .deb?


1

Se lo installerai su un singolo computer, farlo dal sorgente ogni volta è il problema nel modo migliore. Se lo installerai su più macchine e vuoi assicurarti che sia coerente, probabilmente vale la pena imparare come creare pacchetti Debian. Probabilmente potresti usare il pacchetto in Ubuntu come base.


1

Non c'è un ottimo modo. Il motivo per cui è stata creata un'efficace gestione dei pacchetti è stato quello di risolvere questo problema. L'aggiornamento e la disinstallazione di elementi compilati da sorgenti è difficile.

Sono d'accordo con Tom e David.

Se si tratta di un caso unico, la ricompilazione dalla fonte è probabilmente la soluzione migliore. Se si trova su una serie di macchine, è sicuramente il momento di passare alla gestione dei pacchetti supportata.


0

temo che sia l'unico modo. se hai più server da mantenere, considera di avere un ambiente di test separato in cui compilare e possibilmente impacchettare il risultato della tua compilation.

questo standardizzerà leggermente le impostazioni e faciliterà l'implementazione su molti server. inoltre non avrai bisogno di gcc su macchine di produzione [che molti considereranno come un vantaggio per la sicurezza].

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.