5

这是一个普遍的问题,但受到一个例子的启发。一般的问题是:如何从未使用的附加组件中清除 Plone 站点?您可以通过多种方式生成未使用的附加组件,例如,如果您将一个附加组件用于一件事,然后您更喜欢另一个。

我开始学习 Plone,也许我犯了一些错误。但我认为某些附加组件可能会产生问题,因为它们留下了一些不会自动卸载的东西。然后我的问题也是关于如何将数据与可能的附加组件足迹隔离开来。

所以,这是一个例子:

当我开始使用 Plone 时,我安装了一个名为 zettwerk.ui 的插件。但后来我卸载了它。我使用 Plone Web 界面和构建配置删除了附加组件。然后我遇到了问题:每次我尝试安装另一个附加组件时都会出现错误消息:

2012-04-28 00:21:54 INFO GenericSetup.rolemap Role / permission map imported.
2012-04-28 00:21:54 INFO GenericSetup.archetypetool Archetype tool imported.
2012-04-28 00:21:54 INFO GenericSetup.browserlayer Browser layers imported
2012-04-28 00:21:54 INFO GenericSetup.resourceregistry KSS registry imported.
2012-04-28 00:21:54 ERROR GenericSetup Step zettwerk.ui.disable_sunburst_patch has an invalid import handler
2012-04-28 00:21:54 INFO GenericSetup.rolemap Role / permission map imported.
2012-04-28 00:21:54 INFO GenericSetup.toolset Class zettwerk.ui.tool.tool.UITool not found for tool portal_ui_tool
2012-04-28 00:21:54 ERROR Zope.SiteErrorLog 1335586914.990.0334188015457 http://localhost:8080/Plone/portal_quickinstaller/installProducts
Traceback (innermost last):
  Module ZPublisher.Publish, line 126, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module Products.PDBDebugMode.runcall, line 70, in pdb_runcall
  Module ZPublisher.Publish, line 46, in call_object
  Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 575, in installProducts
  Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 512, in installProduct
   - __traceback_info__: ('plone.app.theming',)
  Module Products.GenericSetup.tool, line 323, in runAllImportStepsFromProfile
   - __traceback_info__: profile-plone.app.theming:default
  Module Products.GenericSetup.tool, line 1080, in _runImportStepsFromContext
  Module Products.GenericSetup.tool, line 994, in _doRunImportStep
   - __traceback_info__: toolset
  Module Products.GenericSetup.tool, line 123, in importToolset
TypeError: 'NoneType' object is not callable
> /home/daniel/.buildout/eggs/Products.GenericSetup-1.6.3-py2.6.egg/Products/GenericSetup/tool.py(123)importToolset()
-> new_tool = tool_class(tool_id)

我将 zettwerk.ui 放回 buildout.conf 中,然后错误消失了。但我认为解决方案并不干净。那么,我怎样才能从 buildout 中删除 zettwerk.ui 而不会出现问题?

4

2 回答 2

6

这已在 GenericSetup 1.6.5 中修复:http: //pypi.python.org/pypi/Products.GenericSetup/1.6.5 更新到该版本(包含在 Plone 4.1.4 中)应该可以解决问题。(目前最新的稳定版本是带有 GenericSetup 1.6.6 的 Plone 4.1.5,所以我会说去那个。)

说明:在安装过程中,zettwerk.ui 告诉 GenericSetup 它需要一个工具。然后创建此工具。在卸载过程中,该工具被删除,但它仍在所需工具列表中。如果 zettwerk.ui 已卸载但软件包仍在您的构建中并且您安装了另一个附加组件,则 GenericSetup 会查看所需工具的列表并再次创建此工具。当 zettwerk.ui 不可用时,这将失败并出现上述错误。在这种情况下,GenericSetup 1.6.5 只是打印一个警告并愉快地继续。

我认为 wildcard.fixpersistentutilities 在这种情况下不起作用,但我可能弄错了。出于某种原因,到目前为止我已经设法避免需要那个包。

于 2012-04-28T19:15:53.023 回答
0

有两种可能性。

首先,做一个备份:-)

最简单的,如果您重新安装的 zettwerk.ui 产品与您最初添加的版本不同,请尝试重新安装它。多年来,产品移除已经有了很大改进,现在很少有产品表现出这种行为。

如果您仍然有问题,请将产品添加wildcard.fixpersistentutilities到您的构建中,重新运行构建,然后导航到/@@fix-persistent-utilities您的站点,在该页面上查找引用的任何内容zettwerk.ui。去掉它。一旦那里没有更多引用,请删除 zettwerk.ui 产品。

实际上,还有第三种可能:为 zettwerk.ui 添加补丁以修复其卸载问题!

于 2012-04-28T18:43:46.563 回答