myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Сборка PtokaX в Fedora Linux, openSUSE, Краткий HOW-TO

dmvn
сообщение 6.12.2009, 22:54
Сообщение #1


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Цитата(mariner @ 6.12.2009, 13:39) *
ты сам себе ответил big_smile.gif

скажем так, на этой твари всё остальное пашет без проблем. то ли у них LiveCD палёный, то ли что... в общем в итоге x64 я вздрючил, разве что это был netinst.
он правда тоже при старте тупил долго (черный экран и курсор мигает, никаких признаков жизни/смерти), потом очухался. непривычно, ну да ладно, чай, и не такое ставили.

большой разницы в сборке PtokaX я не узрел.
в общем в итоге образовался такой кулинарный рецепт:

1. ставим gcc:
Код
sudo yum install gcc-c++


распаковали птоху, попробовали собрать. сломались на tinyxml.
качаем его с sourceforge: http://sourceforge.net/projects/tinyxml/
распаковываем.
берем из него файлы
Код
tinyxml.{cpp,h} tinystr.{cpp,h} tinyxmlparser.cpp tinyxmlerror.cpp

и пихаем их в папку PtokaX/tinyxml/src (она там уже есть).
далее заходим в PtokaX/tinyxml и там говорим make.
оно собирается.
теперь ставим lua-шные пакеты и ещё хидеры для библиотеки zlib.
если походить по инету, можно найти вот сюда
http://rpm.pbone.net/index.php3/stat/2/simple/2
и по очереди скачать там вот такие пакеты (искать их соответственно по именам
lua, lua-devel и zlib-devel):
Код
lua-5.1.2-1.el5.kb.x86_64.rpm  lua-devel-5.1.2-1.el5.kb.x86_64.rpm  zlib-devel-1.2.3-3.x86_64.rpm

разумеется, для 32-битной версии надо качать 32-битные.

после установки этих пакетов
Код
rpm -ihv lua*.rpm zlib-devel*.rpm

заходим в папку PtokaX и говорим Make.
компиляция успешно завершается, на линковке всё ломается.
нужно подправить Makefile и заменить в нем
Код
-llua5.1

на
Код
-llua-5.1

Дальше всё собирается без проблем и перед нами готовый бинарник.
Go to the top of the page
+Quote Post
 
Начать новую тему
Ответов
dmvn
сообщение 5.12.2009, 14:49
Сообщение #2


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Я смотрю, редхатовские изделия не особо популярны среди хабостроителей.
Вашему вниманию предлагается 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:
Код
--- makefile.original    2009-12-05 14:14:15.953003363 +0300
+++ makefile    2009-12-05 14:14:38.150502577 +0300
@@ -39,13 +39,12 @@
    $(CURDIR)/obj/LuaRegManLib.o $(CURDIR)/obj/LuaScript.o $(CURDIR)/obj/LuaScriptManager.o $(CURDIR)/obj/LuaScriptManLib.o $(CURDIR)/obj/LuaSetManLib.o $(CURDIR)/obj/LuaTmrManLib.o $(CURDIR)/obj/LuaUDPDbgLib.o $(CURDIR)/obj/ProfileManager.o \
    $(CURDIR)/obj/PtokaX.o $(CURDIR)/obj/pxstring.o $(CURDIR)/obj/RegThread.o $(CURDIR)/obj/ResNickManager.o $(CURDIR)/obj/ServerManager.o $(CURDIR)/obj/ServerThread.o $(CURDIR)/obj/serviceLoop.o $(CURDIR)/obj/SettingManager.o \
    $(CURDIR)/obj/TextFileManager.o $(CURDIR)/obj/UdpDebug.o $(CURDIR)/obj/UDPThread.o $(CURDIR)/obj/User.o $(CURDIR)/obj/utility.o $(CURDIR)/obj/ZlibUtility.o
-    $(CXX) -lpthread -lz -llua5.1 -lrt -o PtokaX \
+    $(CXX) -lpthread -lz -llua-5.1 -ltinyxml -lrt -o PtokaX \
          $(CURDIR)/obj/ClientTagManager.o $(CURDIR)/obj/colUsers.o $(CURDIR)/obj/DcCommands.o $(CURDIR)/obj/DeFlood.o $(CURDIR)/obj/eventqueue.o $(CURDIR)/obj/globalQueue.o $(CURDIR)/obj/hashBanManager.o $(CURDIR)/obj/hashUsrManager.o \
          $(CURDIR)/obj/hashRegManager.o $(CURDIR)/obj/HubCommands.o $(CURDIR)/obj/IP2Country.o $(CURDIR)/obj/LanguageManager.o $(CURDIR)/obj/LuaBanManLib.o $(CURDIR)/obj/LuaCoreLib.o $(CURDIR)/obj/LuaIP2CountryLib.o \
          $(CURDIR)/obj/LuaProfManLib.o $(CURDIR)/obj/LuaRegManLib.o $(CURDIR)/obj/LuaScript.o $(CURDIR)/obj/LuaScriptManager.o $(CURDIR)/obj/LuaScriptManLib.o $(CURDIR)/obj/LuaSetManLib.o $(CURDIR)/obj/LuaTmrManLib.o \
          $(CURDIR)/obj/LuaUDPDbgLib.o $(CURDIR)/obj/ProfileManager.o $(CURDIR)/obj/PtokaX.o $(CURDIR)/obj/pxstring.o $(CURDIR)/obj/RegThread.o $(CURDIR)/obj/ResNickManager.o $(CURDIR)/obj/ServerManager.o $(CURDIR)/obj/ServerThread.o \
-        $(CURDIR)/obj/serviceLoop.o $(CURDIR)/obj/SettingManager.o $(CURDIR)/obj/TextFileManager.o $(CURDIR)/obj/UdpDebug.o $(CURDIR)/obj/UDPThread.o $(CURDIR)/obj/User.o $(CURDIR)/obj/utility.o $(CURDIR)/obj/ZlibUtility.o \
-        $(CURDIR)/tinyxml/tinyxml.a
+        $(CURDIR)/obj/serviceLoop.o $(CURDIR)/obj/SettingManager.o $(CURDIR)/obj/TextFileManager.o $(CURDIR)/obj/UdpDebug.o $(CURDIR)/obj/UDPThread.o $(CURDIR)/obj/User.o $(CURDIR)/obj/utility.o $(CURDIR)/obj/ZlibUtility.o
  
  #*******************************************************************************
  # Files to compile


Итого: diff -ub src/stdinc.h.original src/stdinc.h:
Код
--- src/stdinc.h.original    2009-12-05 14:17:56.804386438 +0300
+++ src/stdinc.h    2009-12-05 14:18:28.409772369 +0300
@@ -81,7 +81,6 @@
      #include <syslog.h>
  #endif
  #include <tinyxml.h>
-#include <tinystr.h>
  #ifdef _WIN32
      #include <psapi.h>
      #include <io.h>


Последние два патча в приложении.
Прикрепленный файл  ptokax_src_patches.zip ( 896 байт ) Кол-во скачиваний: 32
Причина редактирования: про центос - ложь и провокация :)


Спасибо сказали:
Go to the top of the page
+Quote Post
mariner
сообщение 5.12.2009, 15:31
Сообщение #3


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 219 раз




Цитата
на 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
Go to the top of the page
+Quote Post
dmvn
сообщение 5.12.2009, 18:50
Сообщение #4


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Цитата(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 тоже можно, просто у меня его сейчас нет под рукой.

главное, чтобы народ не качал неизвстно откуда хрен знает какие бинарники...
Go to the top of the page
+Quote Post
mariner
сообщение 5.12.2009, 20:27
Сообщение #5


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 219 раз




Цитата
2) Ждать пока RH разродится новой версией CentOS, обычные пользователи не будут, и мой опыт говорит что FC работает не сильно хуже супер-стабильных энтерпрайзов, которые по сути просто не развиваются.

К сожалению имею список "историй неудач", связанных с федориной, собственно поэтому и корыто оно тестовое.

Цитата
современные ОС

читаем возможности RHEL последнего =). Чего тебе в центосе на хватает то? Мне просто интересно.

Цитата
адаптировать ее для CentOS тоже можно, просто у меня его сейчас нет под рукой.

нету под рукой - не говори про то, что подходит. Не подходит она. Мне сейчас пришлось пересобирать луа, чтобы все взлетело. Несложно кстати, даже rpm-ки получились, правда под powerpc

Цитата
главное, чтобы народ не качал неизвстно откуда хрен знает какие бинарники...

а вот тут да, поддерживаю
Go to the top of the page
+Quote Post
dmvn
сообщение 6.12.2009, 12:46
Сообщение #6


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




1. Чего не хватает? хотя бы того что в 2.6.18, на котором живет RHEl 5.4, ещё нету поддержки EXT4 (только experimental, сколь я помню) и ещё массы других вещей, которые давно уже стабилизированы для практического применения большинством юзверей.
2. насчет неудач - ну хз, может быть готовили плохо, повар не выспался и тд big_smile.gif ? У федор есть удачные релизы, есть не очень. Но те, на которые уже накатились все апдейты, уж в серверном-то исполнении работают более чем прилично.
3. центос 5.4 уже скачал, щас поставлю и напишу FAQ для него.
заодно узнаем, что там нужно собирать а что нет...
UPD: 64-битный под вм-тварью просто не завелся (чего не скажешь о других 64-битных линухах), пробуем i386...
Go to the top of the page
+Quote Post
mariner
сообщение 6.12.2009, 13:39
Сообщение #7


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 219 раз




Цитата
вм-тварью

ты сам себе ответил big_smile.gif

Цитата
хотя бы того что в 2.6.18

enterprise же!
ну и да - ext4 там уже вообще то есть, однако у ext4 есть проблемы определенные, по которым его, как и btrfs не будет в enterprise. Линус вообще-то писал про это. LURK MORE! Для файлопомоек катит xfs, которая шустрее всех этих ващих ext. А хочешь скорости - юзай ext2
Go to the top of the page
+Quote Post
mariner
сообщение 7.12.2009, 0:02
Сообщение #8


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 219 раз




ну ты бы ссылочки на пакеты добавил бы big_smile.gif Я, собственно не искал пакеты, а просто сам собрал. Так что я не вру, что в стандарте в центосе хреновый lua %-)
Go to the top of the page
+Quote Post
dmvn
сообщение 9.12.2009, 21:44
Сообщение #9


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Цитата(mariner @ 7.12.2009, 0:02) *
ну ты бы ссылочки на пакеты добавил бы big_smile.gif Я, собственно не искал пакеты, а просто сам собрал. Так что я не вру, что в стандарте в центосе хреновый lua %-)

Добавим, не вопрос. заодно я напишу инструкции по сборке Lua из сырцов, точнее из srpm-ов. Хотя это уже гентовщина какая-то big_smile.gif
Я кстати на досуге проверил ещё одну вещь и понял, что в C5.4 не хватает нового gcc 4.4.2. Прога, собранная новым компилятором с идентичными опциями, обогнала свой аналог на старом гцц процентов примерно на 20. Причем ничего хитрее STL она не использует. А нового компилятора в центосе не будет, увы, ещё очень долго. потому что он скорее всего тупо не соберется на новом big_smile.gif
Go to the top of the page
+Quote Post
mariner
сообщение 9.12.2009, 22:10
Сообщение #10


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 219 раз




Цитата
нового gcc 4.4.2

еще раз повторюсь - это тебе не федора, куда самое последнее пихают. Пока RedHat не решит, что он стабилен - его там не будет. DIXI
Go to the top of the page
+Quote Post
dmvn
сообщение 10.12.2009, 9:55
Сообщение #11


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Как и обещалось, инструкция "для настоящих пацанов" ™, которые всё собирают из исходников.
А именно, 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 и получаем готовую птоху.


Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Ptokax, opendchub (DC++) - Сборка пакета для OpenWRT, LEDE 2017
Пакеты хабов для прошивки роутера
0 мамин_парень 659 29.8.2017, 7:00 Посл. сообщение: мамин_парень
No new Topic has attachmentsАнтиреклама для PtokaX
API1, API2 | Скрипт антирекламы для чата и лички
39 Damaks 27 496 9.8.2017, 14:26 Посл. сообщение: Ksan
No New Posts Установка Linux хаба DC++ в ANDROID
Теперь ты видел все ))
0 мамин_парень 370 5.8.2017, 9:49 Посл. сообщение: мамин_парень
No New Posts Topic has attachmentsУстановка хаба PtokaX 0.5.2.2 на роутер под прошивкой LEDE 2017
DC++ сервер в роутере
12 мамин_парень 1 373 17.5.2017, 4:34 Посл. сообщение: FreeRun_2013
No new Topic has attachmentsPtokaX 0.5.2.1 Mod
Модификация PtokaX от alex82
16 alex82 3 601 12.4.2017, 12:08 Посл. сообщение: Saymon21
No new ВАЖНО: Topic has attachmentsPtokaX
Описание. Публикация новых версий
94 Svyat 109 266 11.4.2017, 23:08 Посл. сообщение: Alexey
No new Topic has attachmentsPtokaX в OpenWrt (Linux)
Ребята как собрать под эту систему?
21 мамин_парень 10 513 10.4.2017, 15:19 Посл. сообщение: мамин_парень
No New Posts Linux хаб OpenDCHub под Android
Есть кто сможет передлать из программистов форума
7 Sezam 1 298 9.1.2017, 15:42 Посл. сообщение: Saymon21
No New Posts Автозапуск PtokaX на Rassberry Pi?
Не могу запустить
13 Sezam 1 845 7.11.2016, 9:14 Посл. сообщение: Saymon21
No New Posts Доска обьявлений для Ptokax 0.5.0.x
3 NightmareUA 2 411 11.8.2016, 16:22 Посл. сообщение: Ksan
No new ВАЖНО: Topic has attachmentsPtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
111 alex82 38 181 26.4.2016, 19:44 Посл. сообщение: Karumo
No New Posts FreeBSD 11.0 & PtokaX
Проблема подключения в клиенте PtokaX по имени
5 nsd7 1 362 22.4.2016, 3:47 Посл. сообщение: Saymon21
No New Posts От: PtokaX 0.5.2.1 Mod
От темы с ID: 5784
0 Alexey 796 21.4.2016, 18:16 Посл. сообщение: Alexey
No New Posts Перенос базы пользователей с RusHub на PtokaX
3 Angel_D 2 004 5.12.2015, 2:11 Посл. сообщение: Saymon21
No new ВАЖНО: Topic has attachmentsСборка Ptokax 0.4.1.1 В Debian & Ubuntu
Руководство по установке
248 mariner 119 956 16.5.2015, 18:39 Посл. сообщение: KT315

 



RSS Сейчас: 20.9.2017, 3:23