Компиляция SkyFire на Linux

Я уже писал о том как собрать эмулятор SkyFire на Windows платформах. Пришло время установить этот же эмулятор на Linux платформе. Тут есть и более простые и более сложные моменты в сборке, о каждом я попытаюсь описать в данной статье. В отличии от мануала для Windows, который я делал, основываясь на данных, взятых из интернета, тут я делал всё лично сам и пересказываю лично свой опыт. Заранее хочу извинится перед задротами продвинутыми людьми в сфере линуксов за неправильное название программ, утилит и их предназначения.

Начнем пожалуй как всегда со списка необходимого:

  1. Средства для компиляции сервера — это утилиты : g++ , gcc , make
  2. Утилита для создания файла для компилятора : cmake
  3. Mysql сервер, библитека и клиент: libmysql , mysql , libmysqlclient15-dev , mysql-client
  4. SSL библитеки : openssl , libssl
  5. Утилита для скачивания исходников сервера : git , subversion, mercurial (для SkyFire подойдет и гит только, но кто знает откуда вы будите брать исходники).
  6. И кое-что еще, что я не могу объяснить :). В это число входит:  zlib-dev , libtool, patch (хотя мы патчить ничего не собираемся, но нормальный сервер без патчей не собрать) , build-essential , bzip2 (для извлечения архивов).

Возможно некоторые «программы» у вас уже установлены и повторно их ставить ненужно. Также с некоторыми мы уже познакомились в статье для Windows

Осталась еще одна библиотека, которую я не включил в общий список — это чертова библиотека ACE.

Почему я о ней такого мнения? Потому что:

  1. Она крайне долго собирается
  2. Ниодного толкового мануала (даже на пиндосском английском) нет.
  3. Непривычный способ подхода
  4. Нежелание ставится туда куда «посылают»
  5. Версия для Тринити неподходит

Теперь подробней о каждом пункте:

  1. Она действительно долго у меня собиралась, как новые, так и старые версии. Для примера: полная версия (ACE +  TAO + CIAO (хоть нам и нужна только ACE)) собиралась у меня более 3х часов, только ACE последней версии собиралась полтора часа.
  2. Все, что я нашел в сети — это о том, как собирать ACE 5.8 и соседние версии. Но сейчас ACE собирается по другому. Вложенный INSTALL файл в дистрибутив написан каким-то калекой 🙂 , который описал кучу способов «вокруг и около», но ниодного толкового примера.
  3. Да, дистрибутив неимеет ни makefile , ни configure, ни cmake файлов. Очень быстро у новичка (такого как я) возникает вопрос : «что блядь делать с этой кучей говна».
  4. Посыл ACE6 в usr был отклонен, пришлось ставить в папку пользователя.
  5. Для тринити (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.

  1. Скачиваем сервер SkyFire, распаковываем
  2. Переходим в папку с сервером и создаем папку build (коммандой mkdir build )
  3. Переходим в эту папку (cd build)
  4. Начинаем «смакать». Вводим комманду(пример): 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
  5. Объясню некоторые параметры :  -DPREFIX — место, куда установится готовый сервер ,  -DACE_LIBRARY — место куда уставливали ACE (переменная  INSTALL_PREFIX для ACE,  -DACE_INCLUDE_DIR — папка инклюдов ACE — находится где-то рядом.
  6. Теперь осталось сделать 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 на момент статьи) : ссылка

База данных : ссылка

3 Комментарии

  1. ThomassPa

    Подтверждаю. И я с этим тсолкнулся. Можем пообщаться на эту тему. Здесь или в PM.

    :):)

  2. ThomassPa

    Буду знать, большое спасибо за объяснение.

    :):)

    1. LeXuS

      пожалуйста)

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *