Question

Nous utilisons rpm pour déployer nos applications Web en interne. Le rpm installe les fichiers, configure apache, cron, la journalisation, etc.

Je souhaite créer une version test du RPM qui s’installe à un emplacement différent avec une configuration différente pour Apache, Cron et la journalisation. Il devrait être possible d'installer à la fois les tr / min de production et de test sur la même machine.

Avec les deux RPM installés, j'aurais quelque chose comme

/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

Quel serait un bon moyen d'y parvenir?

  • Copiez la spécification et renommez tout en "test"?
  • Créer différents sous-packages pour prod / test?
  • Utilisez les macros rpm pour modifier l'emplacement et les noms dans la spécification?
  • Utiliser rpm --relocate?

Existe-t-il un rpm existant qui tente de le faire et que je puisse consulter?

Était-ce utile?

La solution

Dans mes fichiers de spécification, j'utilise les macros intégrées puis, avec un compte test (non root) et un ~ / .rpmmacros personnalisé, je change le préfixe par défaut:

%_prefix %{_home}

Fonctionne bien.

Vous pouvez même créer une base de données de test rpm:

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

et mettez ceci dans votre .rpmmacros:

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

Autres conseils

Même si vous avez une solution différente, j'ai décidé de suggérer un autre moyen d'y parvenir. Rien de mal à la virtualisation cependant. Probablement une meilleure solution de toute façon, car exécuter un environnement de test sur la même machine que la production n’est pas sûr / sécurisé, je suppose. Cela dit ...

J'utiliserais probablement un fichier de spécification comme modèle, puis ceci:

...
# 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
...

Notez que la macro % {? testrel} est particulièrement intéressante. Cela vous permet de mettre à jour simultanément les choses pour les deux versions, mais vous pouvez toujours conserver quelque chose de spécifique à une version ou à une autre. Cela ne nécessite également aucune modification de la base de données, des macros personnalisées dans ~ / .rpmmacros (qui changeraient en fonction du système sur lequel il est construit)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top