Domanda

Stiamo usando rpm per distribuire le nostre applicazioni web internamente. L'rpm installa i file, configura apache, cron, logging e così via.

Vorrei creare una versione di prova dell'rpm che si installa in una posizione diversa con una configurazione diversa per apache, cron e logging. Dovrebbe essere possibile installare sia la produzione che i test rpm sullo stesso computer.

Con entrambi gli rpms installati avrei qualcosa di simile

/opt/app/www/...
/opt/app-test/www/...
/etc/httpd/conf.d/app.conf
/etc/httpd/conf.d/app-test.conf
/etc/cron.d/app
/etc/cron.d/app-test
/etc/init.d/app
/etc/init.d/app-test

Quale sarebbe un buon modo per raggiungere questo obiettivo?

  • Copia le specifiche e rinomina tutto in " test " ;?
  • Creare pacchetti secondari diversi per prod / test?
  • Utilizzare le macro rpm per modificare la posizione e i nomi nelle specifiche?
  • Usa rpm --relocate?

Esiste un numero di giri esistente che tenta di fare ciò che posso vedere?

È stato utile?

Soluzione

Nei miei file delle specifiche, utilizzo i macro incorporate e quindi, con un account di prova (non root) e un ~ / .rpmmacros personalizzato, cambio il prefisso predefinito:

%_prefix %{_home}

Funziona bene.

Puoi persino creare un database rpm di prova:

$ rpmdb --initdb --dbpath /home/test/var/lib/rpm

e inseriscilo nel tuo .rpmmacros:

%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000

Altri suggerimenti

Anche se hai una soluzione diversa, ho deciso di suggerire un altro modo per raggiungere questo obiettivo. Nulla di sbagliato nella virtualizzazione però. Probabilmente una soluzione migliore comunque poiché l'esecuzione di un ambiente di test sulla stessa macchina in quanto la produzione non è sicura / immagino. Detto questo ...

Probabilmente userei un file di specifica come modello e quindi questo:

...
# somwwhere in the beginning of spec
%global testrel test

#rest of document
Source0: tarball-with-things%{?testrel}.tar.bz
...
%if ${?testrel:1}${!?testrel:0}
# this will execute only in test rpm
%endif
...

Nota che specialmente la macro % {? testrel} è interessante. Ti consente di aggiornare le cose contemporaneamente per entrambe le versioni, ma se desideri mantenere qualcosa di specifico per una versione o per l'altra puoi ancora farlo. Inoltre non richiede alcuna modifica al database, macro personalizzate in ~ / .rpmmacros (che cambierebbe a seconda del sistema su cui è stato costruito)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top