Компиляция SkyFire на Linux
Я уже писал о том как собрать эмулятор SkyFire на Windows платформах. Пришло время установить этот же эмулятор на Linux платформе. Тут есть и более простые и более сложные моменты в сборке, о каждом я попытаюсь описать в данной статье. В отличии от мануала для Windows, который я делал, основываясь на данных, взятых из интернета, тут я делал всё лично сам и пересказываю лично свой опыт. Заранее хочу извинится перед задротами продвинутыми людьми в сфере линуксов за неправильное название программ, утилит и их предназначения.
Начнем пожалуй как всегда со списка необходимого:
- Средства для компиляции сервера - это утилиты : g++ , gcc , make
- Утилита для создания файла для компилятора : cmake
- Mysql сервер, библитека и клиент: libmysql , mysql , libmysqlclient15-dev , mysql-client
- SSL библитеки : openssl , libssl
- Утилита для скачивания исходников сервера : git , subversion, mercurial (для SkyFire подойдет и гит только, но кто знает откуда вы будите брать исходники).
- И кое-что еще, что я не могу объяснить
. В это число входит: zlib-dev , libtool, patch (хотя мы патчить ничего не собираемся, но нормальный сервер без патчей не собрать) , build-essential , bzip2 (для извлечения архивов).
Возможно некоторые "программы" у вас уже установлены и повторно их ставить ненужно. Также с некоторыми мы уже познакомились в статье для Windows
Осталась еще одна библиотека, которую я не включил в общий список - это чертова библиотека ACE.
Почему я о ней такого мнения? Потому что:
- Она крайне долго собирается
- Ниодного толкового мануала (даже на
пиндосскоманглийском) нет. - Непривычный способ подхода
- Нежелание ставится туда куда "посылают"
- Версия для Тринити неподходит
Теперь подробней о каждом пункте:
- Она действительно долго у меня собиралась, как новые, так и старые версии. Для примера: полная версия (ACE + TAO + CIAO (хоть нам и нужна только ACE)) собиралась у меня более 3х часов, только ACE последней версии собиралась полтора часа.
- Все, что я нашел в сети - это о том, как собирать ACE 5.8 и соседние версии. Но сейчас ACE собирается по другому. Вложенный INSTALL файл в дистрибутив написан каким-то калекой
, который описал кучу способов "вокруг и около", но ниодного толкового примера. - Да, дистрибутив неимеет ни makefile , ни configure, ни cmake файлов. Очень быстро у новичка (такого как я) возникает вопрос : "что блядь делать с этой кучей говна".
- Посыл ACE6 в usr был отклонен, пришлось ставить в папку пользователя.
- Для тринити (TrinityCore) нужна была именно 5.8.1 версия, иные просто посылали тебя. SkyFire требует как я понял версию 6.0.1 и выше, иначе в очередной раз вам придется использовать кучу мата и идти собирать другую версию
Всевозможные причины могут являться криворукостью автора, так что не стоит печалиться сразу.
Сборка ACE
Итак, теперь по пунктам, как собрать этот самый ACE.
1.Во первых нам понадобится Perl. Необходимо скачать и установить его
2.После установки перла начинаем прописывать...переменные. Они нужны для сбоки ACE (он же слепой, кривой, ...)
ACE_ROOT=/home/пользователь/ACE_wrappers; export ACE_ROOT (если вы ставите из папки пользователя)
INSTALL_PREFIX=/usr/local/libace; export INSTALL_PREFIX (место куда будим ставить уже готовый ACE. Вариант 2 - указать путь /home/пользователь/libace (если ACE незахочет ставится куда "послали" вначале))
LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH (папка какой-то библиотеки, менять ненужно)
Во всем этом есть 2 проблемы:
- Если вы укажите какой-нибудь путь неверно - вам придется начинать всё с 0. Т.е. с п.2
- Если вы выйдите(вылетите) из SSH во время работы пути могут потерется и вам придется начинать заново.
3.Далее начинаем создавать GNUmakefile. Для этого переходим в папку ACE_wrappers и вводим команду perl bin/mwc.pl -type gnuace ACE.mwc . Если в нижнем левом углу появился мигающий симвом - значит процесс пошел.
4.Теперь остались мелочи - собрать. Вводим make и идем пить чай (раз 20 подряд) , пока всё соберется.
5.make install и наша работа завершена.
Сборка сервера
Фу, с одним захончили. Теперь переходим к сборке самого сервера. Тут ничего не изменилось от установки TrinityCore.
- Скачиваем сервер SkyFire, распаковываем
- Переходим в папку с сервером и создаем папку build (коммандой mkdir build )
- Переходим в эту папку (cd build)
- Начинаем "смакать". Вводим комманду(пример): cmake ../ -DCMAKE_C_FLAGS="-O3 -pipe" -DCMAKE_CXX_FLAGS="${CMAKE_C_FLAGS}" -DDO_RA=1 -DLARGE_CELL=1 -DPREFIX=/home/wow/server -DACE_LIBRARY=/home/wow/libace/lib/libACE.so -DACE_INCLUDE_DIR=/home/wow/libace/include
- Объясню некоторые параметры : -DPREFIX - место, куда установится готовый сервер , -DACE_LIBRARY - место куда уставливали ACE (переменная INSTALL_PREFIX для ACE, -DACE_INCLUDE_DIR - папка инклюдов ACE - находится где-то рядом.
- Теперь осталось сделать make и make install
Впринципе это всё. Наша работа завершена. Осталось настроить конфиги (папка сервера/etc) и закинуть карты и dbc в папку с сервером.
Тестовая конфигурация
Тестовая конфигурация компьютера на котором производилась устновка сервера и библиотек. (чтобы можно было рассчитать примерное необходимое время сборки)
Процессор: Intel Celeron: 2400Ghz , Память 512Mb DIMM , видео нет, OS : Ubuntu Server 9.10 (консоль only), ACE 6.0.6 (последняя)
Совет
Один маленький совет. База данных мира, которую вы будите заливать к себе скорей всего огромных размеров (100мб и более). Для быстрой и удобной заливки воспользуйтесь той же консолью. Вам поможет комманда: mysql --user=юзерБД --password=парольБД --host=localhost --database=база < SQLфайл.sql
Полезные ссылки:
В этот раз я решил расположить ссылки в конце статьи. Итак:
Библиотека ACE : ссылка
Сервер SkyFire (версия 4.0.6 на момент статьи) : ссылка
База данных : ссылка


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