Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Редактор vi
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

Сборка Python 2.6 под FreeBSD

Решил я тут установить себе Python 2.6. В портах его нет, а из исходных текстов Python под FreeBSD всегда ставился не охотно. Пришлось разобраться.

Проблема

При сборке Python под FreeBSD make выдаёт сообщение:

gcc -shared build/[...]/Modules/_cursesmodule.o \
-L/usr/local/lib -lncursesw -o build/[...]/_curses.so
Segmentation fault (core dumped)
*** Error code 139

Stop in /usr/home/c/py26/trunk.

и на этом процесс останавливается (длинные пути я заменил многоточиями, а длинную строку разорвал символом «\»).

При этом на диске появляется python.core.

Решение

Это происходит из-за своеобразия библиотек FreeBSD. Решение таково:

# Для начала получаем исходные тексты Python (у вас их ещё нет?)
svn checkout http://svn.python.org/projects/python/trunk

# Заходим в директорию с исходниками
cd trunk

# Стандартный шаг
./configure --prefix=/home/c/py26/local

Теперь в директории Modules появился файл Setup. Его надо поправить руками. Находим в нём строку

#readline readline.c -lreadline -ltermcap

И изменяем её вот так:

readline readline.c -lreadline

Возвращаемся в корень дерева исходных текстов и запускаем make.

Её работа завершится с примерно такой ошибкой:

libpython2.6.a(posixmodule.o)(.text+0x3cc4): In function posix_tmpnam':
./Modules/posixmodule.c:6949: warning: warning: tmpnam() possibly used
unsafely; consider using mkstemp()
libpython2.6.a(posixmodule.o)(.text+0x3c1e): In function posix_tempnam':
./Modules/posixmodule.c:6902: warning: warning: tempnam() possibly used
unsafely; consider using mkstemp()
libpython2.6.a(config.o)(.data+0x4c): undefined reference to initreadline'
*** Error code 1

Stop in /usr/home/c/py26/trunk.

Но в этом нет ничего страшного. Запускаем make повторно. (Сбой происходит из-за не правильного порядка компиляции.) Теперь make проходит до конца без ошибок и предупреждений.

Остаётся сделать

make install

Всё. Новёхонький Python 2.6 установлен, можно наслаждаться. Особого внимания заслуживает опция -3. При указании этой опции Python начинает выдавать предупреждения на все конструкции, которые не будут работать в Python-3000.

© 1999 − 2010 Мичурин Алексей — http://www.michurin.com.ru/