Сбой унифицированного установщика Plone 4.0.5 в Ubuntu 11.04 (natty) с ошибкой zip / zlib

#python #ubuntu #plone #zlib

#python #ubuntu #plone #zlib

Вопрос:

Я новичок Plone и пытаюсь установить Plone 4.0.5 в Ubuntu 11.04 Natty с помощью унифицированного установщика.

Я распаковываю установщик и запускаю ./install.sh zeo от имени root и получаю следующую ошибку:

Выбрана установка кластера ZEO

Подробный журнал установки записывается в / tmp /Plone-4.0.5-UnifiedInstaller/install.log

Выбран корневой метод установки. Будет установлен для использования системным пользователем plone

Установка Plone 4.0.5 в / usr / local /Plone

Пользователь 'plone' уже существует. Нет необходимости создавать его.
Пропуск сборки libjpeg
Пропуск сборки zlib
Пропуск сборки readline
Установка Python 2.6.6. Это занимает некоторое время...
Обратная трассировка (последний последний вызов):
 Файл "", строка 1, в 
Ошибка поиска: неизвестная кодировка: zip
Поддержка Python zlib отсутствует; что-то пошло не так в сборке zlib или python.

Установка завершилась неудачно.
Смотрите подробный журнал установки в /tmp /Plone-4.0.5-UnifiedInstaller/install.log 
чтобы определить причину.

Я тоже установил эти пакеты Ubuntu:

apt-get install zlib1g zlib1g-dev zlibc libghc6-zlib-dev zlibc

Install.log довольно большой — я просто включаю здесь упоминания о zlib:

Начиная с Вт 17 мая 14:12:46 по восточному времени 2011 
настройка: ПРЕДУПРЕЖДЕНИЕ: нераспознанные параметры: --с-readline, --с-zlib, --disable-tk, --с-cxx
...
Не удалось найти необходимые биты для сборки этих модулей:
_bsddb _sqlite3 _tkinter 
bsddb185 dbm gdbm 
sunaudiodev zlib 
Чтобы найти необходимые биты, загляните в setup.py введите detect_modules() для имени модуля.


Не удалось собрать эти модули:
crypt nis 
...

Я не могу найти setup.py в установочных файлах.

Есть идеи, что мне следует делать или что я должен искать?

Спасибо.

Ответ №1:

Проблема с неиспользуемыми файлами Python и новой настройкой natty с несколькими библиотеками. Я столкнулся с той же проблемой, пытаясь получить поддержку sqlite в Python, созданном из исходного кода.

Вы можете обойти это в разделе обнаружения модулей в setup.py

http://bugs.python.org/issue9762

Редактировать:

Чтобы обойти это, измените lib_dirs в python setup.py (около строки 408) к этому (для компьютера x86_64):

 lib_dirs = self.compiler.library_dirs   [
    '/lib64', '/usr/lib64',
    '/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu',
    ]
  

(отсутствует файл /usr/lib/x86_64-linux-gnu)

Комментарии:

1. Спасибо, tMC — решаемая — я опубликую шаги для других новичков, сталкивающихся с этой проблемой.

2. Спасибо за этот ответ, я боролся уже несколько недель! Примечание для ленивых людей в 32-разрядных системах, каталог: /usr/lib/i386-linux-gnu вместо x86_64..

Ответ №2:

Спасибо — Plone установлен успешно.

Следование этому и этому привело меня к этому исправлению для setup.py

Ради других новичков — вот как применить исправление:

Просмотрите необработанный текст исправления здесь и скопируйте из строки, непосредственно следующей (не включая) за diff... строкой, до конца. Скопируйте в текстовый файл. Для этого примера предположим, что вы назвали этот файл /tmp/patch.txt

Перейдите в корневой каталог распакованных файлов унифицированного установщика, а затем выполните следующее:

 cd packages
tar xjf Python-2.6.6.tar.bz2
rm Python-2.6.6.tar.bz2
cd Python-2.6.6
patch < /tmp/patch.txt
  

Если исправление сработало, вы должны увидеть:

 patching file setup.py
Hunk #1 succeeded at 354 (offset 15 lines).
  

Затем вам нужно снова запустить tar и bzip2 пакет Python:

 cd ..
tar cjf Python-2.6.6.tar.bz2 Python-2.6.6
rm -r Python-2.6.6
  

Теперь запустите установщик еще раз, и он сможет найти модули, необходимые для сборки python2.6, включенные в унифицированный установщик.

Ответ №3:

Указание унифицированному установщику создать свой собственный zlib работает: ./install.sh --libz=yes zeo

Ответ №4:

Обратите внимание, что если в вашей системе уже есть приемлемый Python (или вы можете его установить), вы можете использовать «—with-python=/path/to/Python-2.6» на install.sh командная строка.

Ответ №5:

У меня все работает нормально, но затем я собрал его в системе maverick, затем обновил до natty.

Предварительные требования, которые у меня есть, выглядят необходимыми для вас:

 zlib1g-dev (which you have)
python-gdbm
libgdbm3
libsqlite3-0 (hard to imagine you would not have that)
python-tk
  

bsddb и sunaudio являются частью системного python2.6 — вы могли бы попробовать создать с этим ( aptitude install python2.6 , при необходимости)

Комментарии:

1. Я не верю, что у maverick была настройка multilib — с кортежем arch в пути к библиотеке. Вы можете протестировать, загрузив исходный код python 2.7.1 и посмотреть, будет ли он компилироваться со всеми модулями, для которых у вас есть файлы разработки.

2. @tMC afaik, для Plone требуется 2.6, а не 2.7, но унифицированный установщик в любом случае включает Python2.6, и метод установки nickyspag использовал бы python, включенный в Plone.

3. @auspex python2.6 будет так же не осведомлен о путях multilib, как и python 2.7. Найдите setup.py в прилагаемой версии python отредактируйте его, чтобы включить правильные пути, и повторите попытку.

4. @tMC Я понимаю вашу точку зрения, но если он просто использует системный python2.6, ему вообще не нужно компилировать python

5. Посмотрите на его вывод Failed to find the necessary bits to build these modules: _bsddb _sqlite3 _tkinter bsddb185 dbm gdbm sunaudiodev zlib To find the necessary bits, look in setup.py in detect_modules() for the module's name. , который пытается создать версия python. в нем упоминается setup.py в выходных данных