题
我们使用的转速部署我们的网络应用程序内部。Rpm安装的文件、配置apache,cron、记录等等。
我想建立一个测试版本的转用于安装在一个不同的位置不同的配置for apache,cron和记录。它应该有可能同时安装的生产和测试rpm在同一台机器上。
与这两个rpm装我会喜欢的东西
/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
是什么将是一个很好的方式来实现这一目标?
- 复制规范,并重新命名的一切"测试"?
- 创建不同的子包,用于生产/测试?
- 使用转宏的改变位置的名称和在规格?
- 使用rpm--搬迁?
是否有任何现有的转试图这样做,我可以看看?
解决方案
在我的规格文件的,我用的 建立宏 然后,有一个测试帐户(不根)和一个自定义~/.rpmmacros,我改变default prefix:
%_prefix %{_home}
工作正常。
你甚至可以创建一个测试转数据库:
$ rpmdb --initdb --dbpath /home/test/var/lib/rpm
并把这个放在你的.rpmmacros:
%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000
其他提示
虽然你有不同的解决办法,我决定建议另一种方式来实现这一点。没有什么是错误的虚拟化。可能一个更好的解决方案无论如何因为在运行测试环境,在同一台机器上的生产是不安全/安全,我猜。那所说的...
我可能会使用一个规格文件作为一个模板,然后这一点:
...
# 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
...
注意这一问题完全没有字幕的 %{?testrel}
宏观是件有趣的事情。它可以更新的东西,同时对这两个版本,但是如果你想要保留一些具体的一个版本或其他的你还是可以的。它也不需要任何更改数据库,定义中的宏~/.rpmmacros(这将改变,取决于系统是建立在)
不隶属于 StackOverflow