Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Технические вопросы по RusHub'у _ Установка rushub на ubuntu 12.04

Автор: hjet 19.10.2012, 11:43

Коммунист-оптимист каждый день носит фрукты в Мавзолей

Краткий пересказ текста ниже, для тех, кто не любит читать и помогать: в интырнетах нет информации, как и откуда установить последнюю версию русхаба для простых смертных, "не посвященных" или не-гуру-хакеров-программистов. Вся информация морально устарела или не соответствует реальности. Дальнейший рассказ о том, как я пытался установить русхаб на юбунтю и что у меня это в итоге не получилось.

Введение
или как старый дед молодость вспоминал

Будучи злостным пенсионером и юзером виндовса, я уже как год присматриваюсь к юбунтю, как операционной системе для своего маленького домашнего сервера. Собственна сервер стоит на балконе, а по проводам уже общается с комнатами в доме, с коровником по вайфаю и по выделёнке с интырнетами. Собственна стоит у меня на сервере виндовс седьмой и русхаб на нем, чтоб с соседскими бабками пообщаться да сплетни послушать, какие все кругом простиОЙгосподи! Собственна я в свои пенсионные годы изучаю новые технологии, в меру годов и сил, так что за год присмотров да подглядований за юбунтю я научился открывать терминал и писать туда sudo и apt-get update!

Взяв себя в руки я решил, как в молодости, опрометчиво броситься в бой и гоогле попросил найти мне статью или публикацию в газете, как же просто и легко установить и запустить ваш прекрасный хаб, да так просто, чтоб даже домохозяйки и пенсионеры как я, по пунктам смогли все сделать не будучи Склифосовскими. Гоогле мне ответил, дескать - информация есть, мало конечно, но есть. Ой спасибо, начинаю смотреть и вижу публикации, которые еще помнят как я под стол пешком ходил - вот это да! Хотел спросить у них не помнят ли они царя, но не нашел как это сделать. Видимо установка русхаба на юбунтю настолько проста, что даже легче установки на виндовз АГА.

Часть 1
или как старый дед водил рукой над клавиатурой и это была не магия

На глаз определив самую свежую из пожелтевших от времени http://mydc.ru/r/?http://forum.ubuntu.ru/index.php?topic=144102.0 я приступил к установке (трубы и барабаны на фоне играют все громче и громче)...

В статья я увидел знакомые мне команды в терминале, ага! Все сейчас установлю и пойду пить чай с молоком и с пирогом... Открываю терминал и печатаю:
Код
sudo apt-get install build-essential liblua5.1-dev
Мельтешение и шелест каких то букв... пока ставил чайник оказалось, что надо было подождать и нажать буквы Д что бы с чем-то согласиться, ну ничяво... Дальше всё новое, пугающее, ну авось!
Код
cd ~
ох уж и долго же я водил рукой над клавиатурой в поисках этой закорючки...
Код
svn co https://rushub.svn.sourceforge.net/svnroot/rushub/trunk/ rushub
вот тут терминал как-то очень быстро мне написал, что не ведает где эта даль svn, в которую я его послал (а я культурный дедушка - я никого не посылаю). Я три дня мучал гооглея, пытая его куда я послал терминал и как мне найти этот неведомый мир грез и фантазий svn, но оказалось, что его надо к себе поставить и вообще это какой то код из интырнетов, а не далекая нефтяная страна, куда еще не принесли свою демократию американцы.
Код
sudo apt-get install subversion
Потом пишу, то, что уже писал выше:
Код
svn co https://rushub.svn.sourceforge.net/svnroot/rushub/trunk/ rushub
кстати, я увидел в этой строке ссылку на какой-то сайт, скопировал и зашел туда, там было много каких-то синих ссылок, но в отличии от других статей и советов как установить русхаб на юбунтю, в этой статье ссылка работала - так я и взял её за основу своих приключений. Далее меня посылают в какую-то директорию
Код
cd ~/rushub/trunk/rushub/src/tinyxml
Ага, значит cd это посыл... запишу в тетрадку, а то возраст... Такой директории нету. БА! Как нету, а почему нету? А что это за rushub/trunk/rushub/src/tinyxmlxml ? Начинаю крутить колесо на мыше в терминале... я ведь точно помню много таких записей было, но пролетели перед глазами очень быстро... и нахожу, сразу после команды
Код
svn co https://rushub.svn.sourceforge.net/svnroot/rushub/trunk/ rushub
много много таких же строк... хотя... нет, не таких же! совершенно не таких! строки выглядят так /rushub/rushub/src/tinyxml без всяких trunk - удаляю этого трюнка, пишу команду
Код
cd ~/rushub/rushub/src/tinyxml
УРА! Меня не посылают и не ругаются! Я совершил революцию и в своих собственных глазах помолодел лет на 30, а на душе все поет и танцует... Я все ближе к своей мечте... Напевая в усы мотив старой песни я пишу
Код
make
вижу, что что-то происходит и крехтя, иду на кухню пирога нарезать.

Часть 2
или как старый дед два дня копировал копировал, да не выкопировал

Ах ты мать-перемать, надо было опять Д нажать, всплескивая руками я укоризненно посмотрел в строну кухни на стол и крошки... Пишем выйти из директории, ага знаем, могём!
Код
cd
Чувствую себя настоящим программистом и повелителем компьютеров, я читаю, что-же мне делать дальше "Копируем cplugin.h (В более новых версиях этот файл назван как Plugin.h ) и папку tinyxml..." так, я хочу новое всё, значит будем копировать Plugin.h а как копировать?
...
Спустя два дня я освоил копирование cp -v "какой файл копируем" "куда копируем", спасибо гоогле, ты самый лучший друг мне, ну... после быка Матфея, с ним мы всяко дольше общаемся и привязанности больше у нас. Так, а куда это все добро копировать мне? "в дерикторию с исходниками Lua плагина" ой яж по линиям на руке гадаю где и у кого директории с исходниками Lua плагина лежат. Спасибо, что хоть ниже написали путь в команде
Код
cd ~/rushub/trunk/lua_plugin/src/
опять я удаляю трунка и пишу по своему (а то терминал ругается, что я не верно указал путь)
Код
cd ~/rushub/lua_plugin/src/
и копирую файл (упоминание где он лежит я нашел в терминале выше того, что сейчас пишу)
Код
cp -v ~/rushub/rushub/src/Plugin.h ~/rushub/lua_plugin/src/
mkdir ~/rushub/lua_plugin/src/tinyxml
cp -v ~/rushub/rushub/src/tinyxml/* ~/rushub/lua_plugin/src/tinyxml/
Все прожевало, ошибок не выдало, скопировало и отлично! Теперь пишу
Код
make
зажурчало, заклокотала и... тут понеслось.

Эпилог
или как старый дед совесть искал

Код
g++: ошибка: /root/rushub/lua_plugin/src/tinyxml/libtinyxml.a: Нет такого файла или каталога
make: *** [debian] Ошибка 1
Так я освоил команду find:
Код
find: `libtinyxml': Нет такого файла или каталога
Ну ничяво! Может версия настолько новая, что его там и не должно быть, как говорит молодежь ОКЕЙ! "Переходим в дерикторию с исходниками хаб" советует статья
Код
cd ~/rushub/rushub/src
и там опять этот загадочный
Код
make
что-то начало делать, мельтешить символами на экране и в конце написало опять
Код
g++: ошибка: /root/rushub/lua_plugin/src/tinyxml/libtinyxml.a: Нет такого файла или каталога
make: *** [debian] Ошибка 1
Все, ушел я пить валокордин и измерять давление.

Возможно найдется человек-программист, способный потратить 15 минут на написание пошаговой инструкции для полных пенсионеров и домохозяек, как же установить свежий русхаб на свежую юбунтю? Я вот полтора дня на написание этого "произведения" смог потратить.

P.S. Все мои мучения (многодневное написание кодов этих и полуторо-дневное написание этого "произведения") происходило под http://mydc.ru/r/?http://www.youtube.com/watch?v=lDQ7hXMLxGc.

Автор: Saymon21 19.10.2012, 11:53

Если сам tinyxml собрался ок, в makefile попробуй заменить libtinyxml.a на tinyxml.a.
Вот тут для хаба:

Код
RusHub: $(OBJS)
    $(CXX) -lrt -ldl -lz -o RusHub $(OBJS) $(CURDIR)/tinyxml/tinyxml.a

Для lua-плагина
Код
debian: $(OBJS)
    $(CXX) -llua5.1 -shared -fpic -lrt -o lua.so $(OBJS) $(CURDIR)/tinyxml/tinyxml.a


Ну и да, в 12.4 были там ещё другие не мение забавные убунтопроблемы. И не только с русхабом, а со всем остальным.
Насчёт их решения не скажу, ибо не вникал и не хочу. Может быть, маринер пробежит и скажет.

Автор: hjet 19.10.2012, 12:24

Цитата(Saymon21 @ 19.10.2012, 11:53) *
Если сам tinyxml собрался ок, в makefile попробуй заменить libtinyxml.a на tinyxml.a.
Вот тут для хаба:

Код
RusHub: $(OBJS)
    $(CXX) -lrt -ldl -lz -o RusHub $(OBJS) $(CURDIR)/tinyxml/tinyxml.a

Для lua-плагина
Код
debian: $(OBJS)
    $(CXX) -llua5.1 -shared -fpic -lrt -o lua.so $(OBJS) $(CURDIR)/tinyxml/tinyxml.a


Ну и да, в 12.4 были там ещё другие не мение забавные убунтопроблемы. И не только с русхабом, а со всем остальным.
Насчёт их решения не скажу, ибо не вникал и не хочу. Может быть, маринер пробежит и скажет.


пробую, но все равно ошибки какие-то

Код
g++ -llua5.1 -shared -fpic -lrt -o lua.so /root/rushub/lua_plugin/src/api.o /root/rushub/lua_plugin/src/Dir.o /root/rushub/lua_plugin/src/HubConfig.o /root/rushub/lua_plugin/src/LuaInterpreter.o /root/rushub/lua_plugin/src/LuaPlugin.o /root/rushub/lua_plugin/src/LuaUtils.o /root/rushub/lua_plugin/src/TaskList.o /root/rushub/lua_plugin/src/TimerList.o /root/rushub/lua_plugin/src/Uid.o /root/rushub/lua_plugin/src/tinyxml/tinyxml.a
/usr/bin/ld: /root/rushub/lua_plugin/src/api.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/root/rushub/lua_plugin/src/api.o: could not read symbols: Bad value
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [debian] Ошибка 1


Автор: mariner 19.10.2012, 15:38

Может и пробежит и может скажет. Честно говоря, сам не разбирался с фигнёй на убунте. Знаю из-за чего, но как поправить - не знаю, не было необходимости. Думаю как нибудь вечером, за кружкой пива/чая сяду да гляну. В общем ждите.

Автор: hjet 19.10.2012, 15:45

Цитата(mariner @ 19.10.2012, 15:38) *
Может и пробежит и может скажет. Честно говоря, сам не разбирался с фигнёй на убунте. Знаю из-за чего, но как поправить - не знаю, не было необходимости. Думаю как нибудь вечером, за кружкой пива/чая сяду да гляну. В общем ждите.


Спасибо, буду ждать, мне уже некуда торопиться =)

Автор: ShadoWx 19.10.2012, 15:52

надо в тему юмор определить big_smile.gif

Автор: Saymon21 19.2.2013, 20:40

Ну что, решили то траблу? Могу подкинуть решение.

Автор: CrazyKiller 19.2.2013, 20:51

Цитата(Saymon21 @ 19.2.2013, 20:40) *
Ну что, решили то траблу? Могу подкинуть решение.


Подкинь, у меня аналог проблемы были, система чистая была, кроме тех пакетов которые требует хаб big_smile.gif

Автор: Saymon21 19.2.2013, 20:55

Юзаем autotools, и на этапе ./configure указываем

Код
LIBS="-ldl -lpthread -lcap -lz"
.

Пол дня убил сегодня из-за убунто-проблем, а вечерком решил таки и с русхабом сие решение проверить. Взошло.

Автор: CrazyKiller 19.2.2013, 21:08

Цитата(Saymon21 @ 19.2.2013, 20:55) *
Юзаем autotools, и на этапе ./configure указываем
Код
LIBS="-ldl -lpthread -lcap -lz"
.

Пол дня убил сегодня из-за убунто-проблем, а вечерком решил таки и с русхабом сие решение проверить. Взошло.


чё за автотулс, нормально обьясни...

делая по мануалу который на вики, не хочет собирать на чистой системе, не думаю что это нормально, может стоит ещё дописать в мануал то что не хватает ?

Автор: Saymon21 19.2.2013, 21:27

А поюзать поиск не? Писали уже давно http://mydc.ru/topic5163.html
Для того, что на вики, надо чуть подпатчить Makefile

Код
--- Makefile.old    2013-01-13 21:34:50.000000000 +0400
+++ Makefile    2013-02-19 22:19:22.398620676 +0400
@@ -17,13 +17,13 @@
    $(CXX) -lrt -ldl -lsocket -lresolv -lz -o RusHub $(OBJS) $(CURDIR)/tinyxml/libtinyxml.a

RusHub_shared: $(OBJS)
-    $(CXX) -lrt -ldl -lcap -ltinyxml -lz -o RusHub $(OBJS)
+    $(CXX) -o RusHub $(OBJS) -lpthread -lrt -ldl -lcap -ltinyxml -lz

RusHub_caps: $(OBJS)
-    $(CXX) -lrt -ldl -lcap -lz -o RusHub $(OBJS) $(CURDIR)/tinyxml/libtinyxml.a
+    $(CXX) -o RusHub $(OBJS) $(CURDIR)/tinyxml/tinyxml.a -lpthread -lrt -ldl -lcap -lz

RusHub: $(OBJS)
-    $(CXX) -lrt -ldl -lz -o RusHub $(OBJS) $(CURDIR)/tinyxml/libtinyxml.a
+    $(CXX) -o RusHub $(OBJS) $(CURDIR)/tinyxml/tinyxml.a -lpthread -lrt -ldl -lz

$(CURDIR)/AdcParser.o: $(CURDIR)/AdcParser.cpp $(CURDIR)/stdinc.h $(CURDIR)/Obj.h $(CURDIR)/Protocol.h $(CURDIR)/Plugin.h $(CURDIR)/AdcParser.h $(CURDIR)/Times.h $(CURDIR)/UserBase.h $(CURDIR)/NmdcParser.h $(CURDIR)/stringutils.h $(CURDIR)/Any.h $(CURDIR)/Param.h $(CURDIR)/HashTable.h $(CURDIR)/HashMap.h $(CURDIR)/DcUser.h
    $(CXX) $(CXXFLAGS) $(INCLUDE) -c -o $@ $<


зы. Проверено на
# uname -a
Linux hws 3.2.0-37-generic-pae #58-Ubuntu SMP Thu Jan 24 15:51:02 UTC 2013 i686 i686 i386 GNU/Linux
# lsb_release -d
Description: Ubuntu 12.04.2 LTS
Система со всеми последними обновлениями.

Автор: CrazyKiller 19.2.2013, 23:00

Спасибо, щас попробую big_smile.gif

Подскажи, а какой из makefile нужна пропатчить ? )))

Автор: Saymon21 19.2.2013, 23:01

Если собирать через autotools патчить ничего не надо. А без него один makefile.

Автор: CrazyKiller 19.2.2013, 23:02

ZlibFilter.o: In function `utils::ZlibFilter::finish()':
/home/crazy/rushubb/rushub/src/ZlibFilter.cpp:41: undefined reference to `deflateEnd'
collect2: ld returned 1 exit status
make[2]: *** [RusHub] Error 1
make[2]: Leaving directory `/home/crazy/rushubb/rushub/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/crazy/rushubb/rushub/src'
make: *** [all-recursive] Error 1

Делаю по автотулс, ошибка (((

Плин поделись Бинарникам уже собранным плыз big_smile.gif

Автор: Saymon21 19.2.2013, 23:05

Как запускал configure?

Автор: CrazyKiller 19.2.2013, 23:08

Цитата(Saymon21 @ 19.2.2013, 23:05) *
Как запускал configure?



Смотри что делаю big_smile.gif

cd
svn co http://mydc.ru/r/?https://rushub.svn.sourceforge.net/svnroot/rushub/tags/last/ rushub
cd /home/crazy/rushubb/rushub
autoreconf -i
./configure --enable-caps
make

и тут шибки начались сыпатся (((

Автор: Saymon21 19.2.2013, 23:10

Код
./configure LIBS="-ldl -lpthread -lz -ltinyxml"

Ах, да, раз с капсом, то
Код
./configure LIBS="-ldl -lpthread -lcap -lz -ltinyxml" --enable-caps

Автор: CrazyKiller 19.2.2013, 23:19

Спасибо, капс потом сделаю )))
уже на Бинарнике ))

Автор: Saymon21 19.2.2013, 23:19

Если капс надо, так надо сразу с ним и собирать.

Автор: CrazyKiller 19.2.2013, 23:21

Цитата(Saymon21 @ 19.2.2013, 23:19) *
Если капс надо, так надо сразу с ним и собирать.


Да с капсом уже давно решил проблему http://mydc.ru/index.html?showtopic=4949&view=findpost&p=39923

Автор: Saymon21 19.2.2013, 23:23

Хаб давно сам умеет капабилитисы при правильной сборке.

Автор: CrazyKiller 19.2.2013, 23:35

Плин у меня чет криво собрался плагин луа (((
2013-02-19 22:34:28,483 ERROR [./plugins/lua.so] PluginLoader(93): Can't open file './plugins/lua.so' because:./plugins/lua.so: undefined symbol: lua_touserdata handle(0)
2013-02-19 22:34:28,484 WARN PluginList(139): Failure loading plugin: ./plugins/lua.so (./plugins/lua.so: undefined symbol: lua_touserdata)

подскажешь ?

Автор: Saymon21 19.2.2013, 23:47

Хехе. В makefile lua-плагина секцию debian измени на:

Код
debian: $(OBJS)
    $(CXX) -o lua.so $(OBJS) /usr/lib/libtinyxml.a -llua5.1 -shared -fpic -lrt

И пересобери.

Автор: CrazyKiller 19.2.2013, 23:48

Понял, а патч же тот применять который в той теме указан для Луа ?

Автор: Saymon21 20.2.2013, 0:06

Код
--- LuaPlugin.cpp.orig    2012-07-18 18:47:29.000000000 +0400
+++ LuaPlugin.cpp    2013-02-20 01:05:08.138722872 +0400
@@ -28,7 +28,7 @@
#if HAVE_TINYXML_H
   #include <tinyxml.h>
#else
-  #include "tinyxml/tinyxml.h"
+  #include "tinyxml.h"
#endif // HAVE_TINYXML_H

#ifdef _WIN32

Плюс то, что в 23-ем посте.

Автор: CrazyKiller 20.2.2013, 0:17

Да что за (((

Makefile:26: *** missing separator. Stop.

открыл файл rushubb/lua_plugin/src/makefile

изменил это
debian: $(OBJS)
$(CXX) -llua5.1 -shared -fpic -lrt -o lua.so $(OBJS) $(CURDIR)/tinyxml/libtinyxml.a
На это
debian: $(OBJS)
$(CXX) -o lua.so $(OBJS) /usr/lib/libtinyxml.a -llua5.1 -shared -fpic -lrt

После rushubb/lua_plugin/src/LuaPlugin.cpp
Изменил это
#include "tinyxml/tinyxml.h"
На Это
#include "tinyxml.h"

Автор: Saymon21 20.2.2013, 0:26

Ну накосячил с тами/пробелами. big_smile.gif
Так и быть. На патч на мейкфайл.

 patch.txt ( 505 байт ) : 14
 

Автор: CrazyKiller 20.2.2013, 0:29

та что за (((

Заменил все что было описанно (((
Не фига ((

2013-02-19 23:25:12,019 ERROR [./plugins/lua.so] PluginLoader(93): Can't open file './plugins/lua.so' because:./plugins/lua.so: undefined symbol: lua_touserdata handle(0)
2013-02-19 23:25:12,020 WARN PluginList(139): Failure loading plugin: ./plugins/lua.so (./plugins/lua.so: undefined symbol: lua_touserdata)

щас попробую ))

а вообщет илья исправил ))

#if HAVE_TINYXML_H
#include <tinyxml.h>
#else
#include "tinyxml/tinyxml.h"

Автор: Saymon21 20.2.2013, 0:30

Пересобрал? Старый луа-плагин заменил? У меня после этих изменений на виртуалке всё работает.

Автор: CrazyKiller 20.2.2013, 0:30

Теперь новая (((


2013-02-19 23:30:16,349 ERROR [./plugins/lua.so] PluginLoader(93): Can't open file './plugins/lua.so' because:./plugins/lua.so: undefined symbol: _ZN11TiXmlString8nullrep_E handle(0)
2013-02-19 23:30:16,350 WARN PluginList(139): Failure loading plugin: ./plugins/lua.so (./plugins/lua.so: undefined symbol: _ZN11TiXmlString8nullrep_E)

Автор: Saymon21 20.2.2013, 0:33

Наверно надо попробовать засесть и проделать всё занова. Я не знаю что сказать, да и у меня работает всё.
Хотя можно наверно попробовать добавить -ltinyxml после -lrt

Автор: CrazyKiller 20.2.2013, 0:34

Цитата(Saymon21 @ 20.2.2013, 0:33) *
Наверно надо попробовать засесть и проделать всё занова. Я не знаю что сказать, да и у меня работает всё.


Кинь Бинарник плыз и Луа плагин )))) ?

Автор: Saymon21 20.2.2013, 0:39

Может всё-же лучше самому собрать?

Автор: CrazyKiller 20.2.2013, 0:40

не получается ((( сам бинарник норм, а вот плагин чет не хочет норм собираться (((

Автор: Saymon21 20.2.2013, 0:43

Попробуй добавить -ltinyxml после -lrt.

Автор: CrazyKiller 20.2.2013, 0:46

$(CXX) -o lua.so $(OBJS) /usr/lib/libtinyxml.a -llua5.1 -shared -fpic -lrt -ltinyxml ?

Автор: Saymon21 20.2.2013, 0:50

Да.

Автор: CrazyKiller 20.2.2013, 0:52

013-02-19 23:51:44,223 ERROR [./plugins/lua.so] PluginLoader(93): Can't open file './plugins/lua.so' because:./plugins/lua.so: undefined symbol: _ZN11TiXmlString8nullrep_E handle(0)
2013-02-19 23:51:44,223 WARN PluginList(139): Failure loading plugin: ./plugins/lua.so (./plugins/lua.so: undefined symbol: _ZN11TiXmlString8nullrep_E)

Автор: Saymon21 20.2.2013, 0:53

Ээм. Хз тогда что ты там делаешь... Надо смотреть более сображающей головой.

Автор: CrazyKiller 20.2.2013, 1:03

я понял одно )))
2.3.9 рулит ))))

Автор: Saymon21 20.2.2013, 1:08

Кстати. Ещё идея. С каким tinyxml собирался хаб? Шаред или тем, что лежит в свн с русхабом? Может опробовать обновить libtinyxml-dev?

Автор: CrazyKiller 20.2.2013, 2:02

перед тем как собирать, я обновил все пакеты которые у шадова в теме (((
но не ребутал тазик, щас ребутну пересобиру попробую (((

ура)))

Дейстительно, нужна было ребут сделать )))
Гонево кароче, Саймон Биз СПС тебе )))

Автор: Saymon21 20.2.2013, 18:55

В свн обновили мейкфайлы. Теперь без правок должно всё работать.

Автор: kotuk 2.10.2014, 12:16

Цитата(hjet @ 19.10.2012, 11:24) *
/usr/bin/ld: /root/rushub/lua_plugin/src/api.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/root/rushub/lua_plugin/src/api.o: could not read symbols: Bad value
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [debian] Ошибка 1[/code]


такая же беда при сборке луаплагина (

В общем разобался:

В makefile tynyxml добавить:

LDFLAGS=-fPIC
CXXFLAGS = -O2 -Wall -Wextra -fPIC

собрать libtinyxml.a

В Makefile lua_plugin добавить:

CXXFLAGS = -O2 -Wall -Wextra -pipe -fPIC
LDFLAGS=-fPIC -lrt -shared

собралось)