这是一个普遍的问题,但是以一个例子为动机。一般问题是:如何从未使用的附加组件中清除Plone站点?您可以通过多种方式生成未使用的加载项,例如,如果您为一件事使用一个加载项,之后您更喜欢另一个加载项。
我开始学习Plone,也许我犯了一些错误。但我认为一些附加组件可能会产生问题,因为它们会留下一些不会自动卸载的东西。然后我的问题也是关于如何将数据与可能的附加组件隔离开来。
所以,这是一个例子:
当我开始使用Plone时,我安装了一个名为zettwerk.ui的附加组件。但后来我卸载了它。我使用Plone Web界面和buildout配置删除了附加组件。然后我遇到了问题:每次我尝试安装另一个附加组件时都会出现一条错误消息:
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?
答案 0 :(得分:6)
这已在GenericSetup 1.6.5中修复: http://pypi.python.org/pypi/Products.GenericSetup/1.6.5 更新到该版本(包含在Plone 4.1.4中)应该可以解决问题。 (目前最新的稳定版本是Plone 4.1.5,GenericSetup 1.6.6,所以我想说去那个。)
说明:在安装过程中,zettwerk.ui告诉GenericSetup它需要一个工具。然后创建此工具。在卸载期间,该工具已删除,但它仍在所需工具列表中。如果卸载zettwerk.ui但程序包仍在您的buildout中并且您安装了另一个附加组件,那么GenericSetup会查看所需工具列表并再次创建此工具。如果zettwerk.ui不可用,则会因上述错误而失败。 GenericSetup 1.6.5只是在这种情况下打印一个警告,并愉快地继续。
我不认为wildcard.fixpersistentutilities在这种情况下有效,但我可能会弄错。出于某种原因,我到目前为止设法避免需要该包。
答案 1 :(得分:0)
有两种可能性。
首先,做一个备份: - )
最简单,如果您重新安装的zettwerk.ui产品与您最初添加的产品版本不同,请尝试重新安装。多年来,产品移除得到了很大改善,现在更少的产品表现出这种行为。
如果问题仍然存在,请将产品wildcard.fixpersistentutilities
添加到您的buildout,重新运行buildout,然后导航到您网站上的/@@fix-persistent-utilities
,在该网页上查找引用{{1}的内容的任何内容}。去掉它。一旦您没有更多参考,请删除zettwerk.ui产品。
实际上,还有第三种可能性:在zettwerk.ui上添加补丁以修复其卸载!