MyDC.ru _ PtokaX под *nix _ Сборка PtokaX в Fedora Linux, openSUSE
Автор: dmvn 5.12.2009, 14:49
Я смотрю, редхатовские изделия не особо популярны среди хабостроителей. Вашему вниманию предлагается HOW-TO по сборке PtokaX в Fedora Linux. Инструкция практически так же сработает (должна!) на openSUSE. Для CentOS или RHEL инструкция тоже работает, но с изменениями (см. ниже в этой теме).
Проверялось всё это на Fedora 12 (Constantine).
Здесь приводится пошаговая инструкция, в конце - итоговые diff-ы файлов, которые нужно подогнуть. Шаг 1. Скачиваем, распаковываем:
Код
tar -xvf 0.4.1.1-posix-src.tgz
Шаг 2. Образовалась папка PtokaX. Заходим и пытаемся собрать:
Код
cd PtokaX make
Шаг 3 gcc нам говорит что-то про tinyxml. ага, берем в руки yum и ставим два пакета (о чудо, они называются именно так, мы угадали!) и снова запускаем make (пакеты ставим либо через sudo, либо под root-ом, либо через гуйню)
Код
sudo yum install tinyxml tinyxml-devel make
Шаг 4 На этот раз оно ругается на строчку в файле src/stdinc.h. говорит что нету такого файла - tinystr.h. Убираем эту строчку нах (строка 84 в оригинальном файле), и снова говорим make. После этого оно ругнется на makefile, скажет что нету файла tinyxml/tinyxml.a. Смело правим makefile и убираем из строки 47 упоминание tinyxml в самом конце строки (см. diff ниже) Шаг 5. Снова make, теперь оно ругается про что-то связанное с lua. Берем yum и говорим
Код
sudo yum install lua-devel make
Шаг 6 Ура, оно скомпилировалось, но сломалось на линковке, будет ругаться на lua5.1. Открываем makefile на строке 42, и заменяем
Код
-llua5.1
на
Код
-llua-5.1 -ltinyxml
И снова make. Ураа!! Всё собралось, перед нами свеженький ещё не остывший бинарник PtokaX. Итого: diff -ub makefile.original makefile:
на CentOS (он же по сути дела FC6 - тестовое нестабильное корыто)
Что вы говорите? Ставнивать центос и лютый тестинг под названием Федора?
Кстати, интересует вопрос - что делаю эти патчи. Описание, пожалуйсто. Ну и да, tinyxml tinyxml-devel в RHEL нету, так что забираем с sourceforge
Ну и таки да - не катит оно твоим способом под центосом. Начнем хотя бы с того, что в центосе луа статическая бибилиотека /usr/lib/liblua.a и по идее -llua5.1 не катит, надо инклудить этот файл, то есть добавить строчку после
Код
$(CURDIR)/tinyxml/tinyxml.a \ /usr/lib/liblua.a
Однако птока не собирается и после этого, говорит
Код
/usr/lib/liblua.a(loadlib.o): In function `ll_loadfunc': (.text+0x947): undefined reference to `dlsym' /usr/lib/liblua.a(loadlib.o): In function `ll_loadfunc': (.text+0x954): undefined reference to `dlerror' /usr/lib/liblua.a(loadlib.o): In function `ll_loadfunc': (.text+0xa2c): undefined reference to `dlopen' /usr/lib/liblua.a(loadlib.o): In function `ll_loadfunc': (.text+0xa41): undefined reference to `dlerror' /usr/lib/liblua.a(loadlib.o): In function `gctm': (.text+0x104e): undefined reference to `dlclose' collect2: выполнение ld завершилось с кодом возврата 1 make: *** [PtokaX] Ошибка 1
Автор: dmvn 5.12.2009, 18:50
Цитата(mariner @ 5.12.2009, 15:31)
Что вы говорите? Ставнивать центос и лютый тестинг под названием Федора?
1) если уж цитируешь, тогда не искажай оригинальный текст. а то можно подумать что про корыто - это мои слова. 2) Ждать пока RH разродится новой версией CentOS, обычные пользователи не будут, и мой опыт говорит что FC работает не сильно хуже супер-стабильных энтерпрайзов, которые по сути просто не развиваются. 3) зачем простому пользователю эта супер-стабильность, когда более современные ОС обеспечивают не худшую стабильность при гораздо большем функционале? (это всё был оффтоп, не будем его развивать)
Цитата(mariner @ 5.12.2009, 15:31)
Кстати, интересует вопрос - что делаю эти патчи. Описание, пожалуйсто.
что делают патчи, объяснять не надо, поскольку это написано в них самих. они делают ровно то, что выше предлагалось проделать руками для понимания сути дела - меняют makefile и stdinc.h. Для сборки под FC7..12 и opensuse инструкция годится, адаптировать ее для CentOS тоже можно, просто у меня его сейчас нет под рукой.
главное, чтобы народ не качал неизвстно откуда хрен знает какие бинарники...
Автор: mariner 5.12.2009, 20:27
Цитата
2) Ждать пока RH разродится новой версией CentOS, обычные пользователи не будут, и мой опыт говорит что FC работает не сильно хуже супер-стабильных энтерпрайзов, которые по сути просто не развиваются.
К сожалению имею список "историй неудач", связанных с федориной, собственно поэтому и корыто оно тестовое.
Цитата
современные ОС
читаем возможности RHEL последнего =). Чего тебе в центосе на хватает то? Мне просто интересно.
Цитата
адаптировать ее для CentOS тоже можно, просто у меня его сейчас нет под рукой.
нету под рукой - не говори про то, что подходит. Не подходит она. Мне сейчас пришлось пересобирать луа, чтобы все взлетело. Несложно кстати, даже rpm-ки получились, правда под powerpc
Цитата
главное, чтобы народ не качал неизвстно откуда хрен знает какие бинарники...
а вот тут да, поддерживаю
Автор: dmvn 6.12.2009, 12:46
1. Чего не хватает? хотя бы того что в 2.6.18, на котором живет RHEl 5.4, ещё нету поддержки EXT4 (только experimental, сколь я помню) и ещё массы других вещей, которые давно уже стабилизированы для практического применения большинством юзверей. 2. насчет неудач - ну хз, может быть готовили плохо, повар не выспался и тд ? У федор есть удачные релизы, есть не очень. Но те, на которые уже накатились все апдейты, уж в серверном-то исполнении работают более чем прилично. 3. центос 5.4 уже скачал, щас поставлю и напишу FAQ для него. заодно узнаем, что там нужно собирать а что нет... UPD: 64-битный под вм-тварью просто не завелся (чего не скажешь о других 64-битных линухах), пробуем i386...
Автор: mariner 6.12.2009, 13:39
Цитата
вм-тварью
ты сам себе ответил
Цитата
хотя бы того что в 2.6.18
enterprise же! ну и да - ext4 там уже вообще то есть, однако у ext4 есть проблемы определенные, по которым его, как и btrfs не будет в enterprise. Линус вообще-то писал про это. LURK MORE! Для файлопомоек катит xfs, которая шустрее всех этих ващих ext. А хочешь скорости - юзай ext2
Автор: dmvn 6.12.2009, 22:54
Цитата(mariner @ 6.12.2009, 13:39)
ты сам себе ответил
скажем так, на этой твари всё остальное пашет без проблем. то ли у них LiveCD палёный, то ли что... в общем в итоге x64 я вздрючил, разве что это был netinst. он правда тоже при старте тупил долго (черный экран и курсор мигает, никаких признаков жизни/смерти), потом очухался. непривычно, ну да ладно, чай, и не такое ставили.
большой разницы в сборке PtokaX я не узрел. в общем в итоге образовался такой кулинарный рецепт:
1. ставим gcc:
Код
sudo yum install gcc-c++
распаковали птоху, попробовали собрать. сломались на tinyxml. качаем его с sourceforge: http://mydc.ru/r/?http://sourceforge.net/projects/tinyxml/ распаковываем. берем из него файлы
и пихаем их в папку PtokaX/tinyxml/src (она там уже есть). далее заходим в PtokaX/tinyxml и там говорим make. оно собирается. теперь ставим lua-шные пакеты и ещё хидеры для библиотеки zlib. если походить по инету, можно найти вот сюда http://mydc.ru/r/?http://rpm.pbone.net/index.php3/stat/2/simple/2 и по очереди скачать там вот такие пакеты (искать их соответственно по именам lua, lua-devel и zlib-devel):
разумеется, для 32-битной версии надо качать 32-битные.
после установки этих пакетов
Код
rpm -ihv lua*.rpm zlib-devel*.rpm
заходим в папку PtokaX и говорим Make. компиляция успешно завершается, на линковке всё ломается. нужно подправить Makefile и заменить в нем
Код
-llua5.1
на
Код
-llua-5.1
Дальше всё собирается без проблем и перед нами готовый бинарник.
Автор: mariner 7.12.2009, 0:02
ну ты бы ссылочки на пакеты добавил бы Я, собственно не искал пакеты, а просто сам собрал. Так что я не вру, что в стандарте в центосе хреновый lua %-)
Автор: dmvn 9.12.2009, 21:44
Цитата(mariner @ 7.12.2009, 0:02)
ну ты бы ссылочки на пакеты добавил бы Я, собственно не искал пакеты, а просто сам собрал. Так что я не вру, что в стандарте в центосе хреновый lua %-)
Добавим, не вопрос. заодно я напишу инструкции по сборке Lua из сырцов, точнее из srpm-ов. Хотя это уже гентовщина какая-то Я кстати на досуге проверил ещё одну вещь и понял, что в C5.4 не хватает нового gcc 4.4.2. Прога, собранная новым компилятором с идентичными опциями, обогнала свой аналог на старом гцц процентов примерно на 20. Причем ничего хитрее STL она не использует. А нового компилятора в центосе не будет, увы, ещё очень долго. потому что он скорее всего тупо не соберется на новом
Автор: mariner 9.12.2009, 22:10
Цитата
нового gcc 4.4.2
еще раз повторюсь - это тебе не федора, куда самое последнее пихают. Пока RedHat не решит, что он стабилен - его там не будет. DIXI
Автор: dmvn 10.12.2009, 9:55
Как и обещалось, инструкция "для настоящих пацанов" , которые всё собирают из исходников. А именно, env таков: OS=CentOS 5.4 Lua=из сырцов
Качаем сырцы Lua и растариваем их (а люди, которые не познали силу wget-а, ставят и его заодно):
Код
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz tar -xvf lua-5.1.4.tar.gz
Ставим два пакета, которых у меня на системе почему-то не оказалось:
Код
sudo yum install ncurses-devel readline-devel
Дальше заходим в образованную выше папочку Lua-5.1.4 и говорим там
Код
make linux sudo make install
Ура, теперь можно собирать птоху. Подхачиваем makefile и на этот раз убираем там в строке линковки (строка 42) упоминание линковки с -llua-5.1, а в строку 48 после tinyxml.a дописываем через пробел вот это: /usr/local/lib/liblua.a Ещё в строку линковки дописываем -ldl, а то потом будет ругаться на функциии dlclose, dlopen... Итого: diff -ub makefile.original makefile: см. приложение к посту: makefile.zip ( 648 байт )
: 16
После всего этого безобразия говорим make и получаем готовую птоху.