Невозможно использовать Diazo (plone.app.theming) на Centos
Я сделал веб-портал на моем Mac, используя plone4.1 и Diazo.
Сейчас я пытаюсь развернуть его на моем сервере (CentOs), где есть еще один сайт с plone4.0.5 + коллективный xdv.
Когда я запускаю сайт (в новой сборке) с моей диазотемой, я получаю следующие строки через оболочку (например, fg):
2011-09-27 09:32:10 ERROR plone.transformchain Unexpected error whilst trying to apply transform chain
Traceback (most recent call last):
File "/home/plone/.buildout/eggs/plone.transformchain-1.0-py2.6.egg/plone/transformchain/transformer.py", line 42, in __call__
newResult = handler.transformIterable(result, encoding)
File "/home/plone/.buildout/eggs/plone.app.theming-1.0b8-py2.6.egg/plone/app/theming/transform.py", line 205, in transformIterable
transform = self.setupTransform()
File "/home/plone/.buildout/eggs/plone.app.theming-1.0b8-py2.6.egg/plone/app/theming/transform.py", line 150, in setupTransform
xsl_params=xslParams,
File "/home/plone/.buildout/eggs/diazo-1.0rc3-py2.6.egg/diazo/compiler.py", line 106, in compile_theme
read_network=read_network,
File "/home/plone/.buildout/eggs/diazo-1.0rc3-py2.6.egg/diazo/rules.py", line 160, in process_rules
rules_doc = fixup_themes(rules_doc)
File "/home/plone/.buildout/eggs/diazo-1.0rc3-py2.6.egg/diazo/utils.py", line 49, in __call__
result = self.xslt(*args, **kw)
File "xslt.pxi", line 568, in lxml.etree.XSLT.__call__ (src/lxml/lxml.etree.c:120289)
XSLTApplyError: xsltValueOf: text copy failed
В чем дело?
4 ответа
У меня была точно такая же проблема, и это связано со старым libxml2/libxslt. Добавьте эти строки в вашу сборку:
[buildout]
parts =
lxml # keep lxml as the first one!
...
instance
[lxml]
recipe = z3c.recipe.staticlxml
egg = lxml
libxml2-url = ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz
libxslt-url = ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
static-build = true
force = false
См. Plone - XSLTApplyError: xsltValueOf: копирование текста не выполнено. Вероятно, у вас есть устаревший libxml, как это всегда имеет место со старым дистрибутивом, таким как CentOS.
Используйте z3c.recipe.staticlxml.
Похоже, у вас могут быть слишком старые версии libxml2 и / или libxslt. Я столкнулся с идентичными проблемами с libxml2 2.6.26 и libxslt 1.1.17. После обновления до 2.7.8 и 1.2.26 (соответственно) проблемы ушли.
Если вы не можете обновить библиотеки локально, вы можете довольно быстро двигаться вперед, используя рецепт "z3c.recipe.staticlxml" в вашей сборке:
[lxml]
recipe = z3c.recipe.staticlxml
egg = lxml
Просто не забудьте удалить любой существующий lxml egg в каталоге eggs (или, возможно, в вашем ~/.buildout/eggs cache, в зависимости от того, как ваш ~/.buildout/default.cfg он настроил) сначала.
Я только получил это, чтобы работать, используя Plone 4.2.1 на Сервере OS X 10.8, но только однажды я использовал унифицированный установщик. Я поднял libxml2 до версии 2.8.0. В то время, когда я пытался это сделать, версия 2.9.0 libxml2 была повреждена для OS X 10.8.