当使用buildout部分扩展切换到2个Plone实例时,buildout不会删除“instance”部分

时间:2012-02-02 14:01:12

标签: plone zope buildout

我们正在为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中删除部件分配

2 个答案:

答案 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