如何从Plone站点清理未使用的附加组件?

如何从Plone站点清理未使用的附加组件?,plone,Plone,这是一个一般性的问题,但受到一个例子的启发。一般的问题是:如何从未使用的附加组件中清除Plone站点?您可以通过多种方式生成未使用的加载项,例如,如果您对一件事使用一个加载项,然后您更喜欢另一个加载项 我开始了解普隆,也许我犯了一些错误。但我认为一些附加组件可能会出现问题,因为它们留下了一些无法自动卸载的东西。然后,我的问题也是关于如何从可能的附加组件封装中分离数据 这就是一个例子: 当我开始使用Plone时,我安装了一个名为zettwerk.ui的插件。但后来我卸载了它。我使用Plone we

这是一个一般性的问题,但受到一个例子的启发。一般的问题是:如何从未使用的附加组件中清除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,然后错误消失。但我认为解决办法并不干净。那么,如何从构建中删除zettwerk.ui而不产生问题呢?

有两种可能性

首先,进行备份:-)

最简单的是,如果重新安装的zettwerk.ui产品与最初添加的版本不同,请尝试重新安装。多年来,产品去除率有了很大提高,现在表现出这种行为的产品越来越少

如果仍然存在问题,请将产品
通配符.fixtPersistentUtilities
添加到您的构建,重新运行构建,然后导航到站点上的
/@@fix peristentUtilities
,在该页面上查找引用
Zetterk.ui
的任何内容。移除它。一旦不再有引用,请删除zettwerk.ui产品


事实上,还有第三种可能性:在zettwerk.ui中添加补丁以修复其卸载

这已在常规设置1.6.5中修复: 更新到该版本(包括在Plone 4.1.4中)应该可以做到这一点。 (目前最新的稳定版本是Plone 4.1.5和GenericSetup1.6.6,所以我想选择那个版本。)

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


我认为wildcard.fixpersistentutilities在这种情况下不起作用,但我可能弄错了。由于某些原因,到目前为止,我已设法避免使用该软件包。

谢谢,更新Plone修复了它。我已修复了更新Plone的问题,但很高兴了解wildcard.fixpersistentutilities。