我们正在为Plone部署的productoin切换一到两个Zope实例。我定义了以下buildout结构:
buildout.cfg
[buildout]
extends = app.cfg
... some environment specific stuff
app.cfg
[buildout]
extends = base.cfg
parts =
zope2
productdistros
instance1
instance2
zopepy
supervisor
[instance1]
<= instance
http-address = 18081
[instance2]
<= instance
http-address = 18082
base.cg
[buildout]
parts =
zope2
productdistros
instance
zopepy
... bulk of buildout configuration suitable for both server and development
测试这个我希望这个buildout配置导致现有的实例部分被删除并替换为instance1和instance2。但是,实例部分不会被删除 - 它仍然可以在bin和parts目录中找到。
[zopetest@dev home]$ bin/buildout
Updating zope2.
Updating fake eggs
Updating productdistros.
Updating instance1.
Updating instance2.
Updating instance.
Updating zopepy.
Updating supervisor.
我在一个不同的zope实例上有一个非常相似的设置,从一开始就这样配置,它没有“实例”部分。
我们正在使用Python 2.4.6运行zc.buildout 1.4.4构建Plone 3.3.6。
我尝试了以下内容而没有任何变化: *升级到buildout 1.5.2 *从base.cfg中删除部件分配
答案 0 :(得分:1)
这是plone.recipe.zope2instance的“功能”。传统上,配方避免删除它为运行plone而创建的实例和脚本(无论出于何种原因:设计不当或故意决定,我不确定)。
对于任何值得的东西,从版本4.2.0开始,有support for generating non-plone scripts(类似于zc.recipe.egg)并且这些脚本被正确管理。参见:
了解所有血腥细节。 (我相信“功能”是install方法不返回元组,除非您使用脚本,在这种情况下返回包含脚本的元组。)
答案 1 :(得分:0)
这实际上是由于zc.buildout automatic part selection功能
当通过变量替换或初始化配方引用带有配方的部分时,该部分被视为零件并添加到参考零件之前的零件清单中
我有以下部分
[zopepy]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/zc.recipe.egg
recipe = zc.recipe.egg
eggs = ${instance:eggs}
因为它引用了“实例”部分,“实例”包含在部件列表中。
要修复我更改了它以复制粘贴实例的蛋值
eggs =
Plone
${buildout:eggs}
然后运行bin / buildout