RU/Building MTASA Server on GNU Linux

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
[[{{{image}}}|link=|]] Note: Эта статья предназначена только для тех владельцев, кто внес изменения в код сервера. Если вам нужен прекомпилированный сервер (для обычных владельцев серверов), перейдите на linux.mtasa.com

Подготовка системы

Чтобы собрать выделенный сервер Multi Theft Auto, вам понадобится снабдить свою систему определенными библиотеками и инструментами. Как их устанавливать, зависит от вашего дистрибутива.

Наш сетевой модуль (net.dll или net.so) поставляется как прекомпилированная двоичная библиотека. Файл для GNU/Linux можно получить из новейшего nightly-билда для Linux, то есть отсюда. Используйте net.so от 1.4, если компилируете из trunk, или net.so от 1.3.x, если компилируете ветвь 1.3.x. Удостоверьтесь, что вы прочитали верхнюю часть MTA10_Server/version.h, так как там содержатся указания по компилированию билдов разного типа.


Debian Linux


Включает производные дистрибутивы типа Ubuntu.

Вам понадобятся необходимые инструменты для сборки, заголовки и библиотеки, поставляемые через соответствующие пакеты Debian (напр. Debian Lenny):

  • build-essential: содержит необходимые инструменты, заголовки и библиотеки для сборки приложений
  • automake: содержит инструменты automake (автосборка)
  • libtool: содержит программное обеспечение libtool, нужное для сборки библиотек
  • libcurl3-dev: содержит библиотеку cURL (версия 3 без поддержки SSL)
  • libpcre3-dev: содержит библиотеку PCRE (версия 3)
  • libsqlite3-dev: содержит библиотеку SQLite (версия 3)
  • libreadline5-dev: содержит библиотеку readline (версия 5)
  • subversion: содержит SVN-клиент, используемый для checkout'а нашего репозитория
  • libncurses5-dev: содержит программное обеспечение для контроля над записью в окне консоли
  • libncursesw5-dev: содержит поддержку для широких символов
  • libsparsehash-dev: содержит поддержку для Google hash-map (Так что вам не придется компилировать sparehash!)
  • libmysqlclient-dev: содержит библиотеку MySQL

Чтобы установить эти пакеты через apt, используйте команду apt-get install <package list>, как в следующем образце (выполнять от root):

apt-get install build-essential automake libtool libcurl4-openssl-dev libpcre3-dev libsqlite3-dev libreadline5-dev subversion libncurses5-dev libncursesw5-dev libsparsehash-dev libmysqlclient-dev



Gentoo Linux


Вам понадобятся необходимые инструменты для сборки, заголовки и библиотеки. Но так как система портирования Gentoo сделана так, что компиляция любых пакетов происходит внтури самой системы, необходимые инструменты для сборки будут итак предустановелены. Все, что остается - установить необходимые библиотеки:

  • sqlite: содержит библиотеку SQLite
  • subversion: содержит SVN-клиент, используемый для checkout'а нашего репозитория
  • curl: содержит библиотеку cURL; чтобы скомпилировать с поддержкой SSL, примените флаг net-misc/curl ssl USE

Чтобы скомпилировать и установить эти пакеты через emerge, используйте команду emerge -v <package list>. Опция -v показывает дополнительную * * информацию и может быть опущена. (Если вы хотите задействовать какие-либо флаги USE, пре-запустите emerge с USE="здесь пишите флаги". Вы также можете использовать опцию -pv для проверки на предмет использования правильных флагов.) Ссылайтесь на Gentoo Handbook или руководство для получения более подробной информации по emerge.

Образец:

emerge -v subversion sqlite
USE=“net-misc/curl ssl” emerge -v curl



Fedora


Для успешной компиляции MTA сервера на Fedora вам понадобятся следующие пакеты:

  • glibc-devel:
  • curl-devel: содержит библиотеку cURL
  • pcre-devel: содержит библиотеку PCRE
  • sqlite3-devel: содержит библиотеку SQLite
  • readline-devel: содержит библиотеку readline
  • lua-devel: содержит Lua-библиотеки
  • subversion: содержит SVN-клиент, используемый для checkout'а нашего репозитория

Чтобы установить эти пакеты через yum, воспользуйтесь командой yum install <package list>, как в следующем образце (выполнять от root):

yum install glibc-devel curl-devel pcre-devel sqlite3-devel readline-devel lua-devel subversion


Замечание для x64


На данный момент сервер MTA:SA не может быть корректно скомпилирован в 64-битном режиме. Вместо этого, скомпилируйте его в 32-битном режиме и запустите в режиме 32-битной совместимости (используйте флаг -m32).

Общее руководство для 1.6.0

Получение исходного кода.

Для начала вам понадобится скачать исходный код.

svn checkout http://mtasa-blue.googlecode.com/svn/branches/1.6.0/ mtasa-blue
cd mtasa-blue

Затем вот так его скомпилировать:

autoreconf -fiv
export PKG_CONFIG_PATH=/usr/lib32/pkgconfig
./configure LDFLAGS="-m32" CPPFLAGS="-m32" CFLAGS="-m32" CXXFLAGS="-m32" $@
make
make -C MTA10_Server install
make -C Shared/XML install

Получить net.so так:

wget http://nightly.mtasa.com/?multitheftauto_linux-1.6.0-rc-latest -O multitheftauto_linux-1.6.0-latest.tar.gz
tar -xzf multitheftauto_linux-1.6.0-latest.tar.gz --transform 's:[^/]*:latest_nightly:'
mv latest_nightly/net.so MTA10_Server/output/
rm -rf latest_nightly multitheftauto_linux-1.6.0-latest.tar.gz

Скопировать конфигурационные файлы:

cp MTA10_Server/mods/deathmatch/acl.xml MTA10_Server/output/mods/deathmatch/acl.xml
cp MTA10_Server/mods/deathmatch/mtaserver.conf MTA10_Server/output/mods/deathmatch/mtaserver.conf

Получить ресурсы:

svn export http://mtasa-resources.googlecode.com/svn/trunk/ MTA10_Server/output/mods/deathmatch/resources

И готовый сервер будет лежать по адресу MTA10_Server/output

Поиск и устранение неисправностей

Любые ошибки в процессе компиляции json-c могут быть разрешены через вызов autoreconf -fi из директории json-c.

Если вы получили какие-либо неожиданные ошибки в процессе компиляции, пожалуйста, посетите наш багтрекер или Discord


Вылеты сервера

Если ваш Linux-сервер вылетает, получите backtrace и опубликуйте отчет на нашем багтрекере

Как получить backtrace:

Есть ли у вас файл дампа ядра (core dump) в директории с MTA сервером?

Обычно он называется 'core', его размер свыше 100МБ, сам он выглядит примерно так:

Core.png

Если да, то:

  • Установите gdb. Для установки gdb на Debian, воспользуйтесь командой:
apt-get install gdb
  • И из директории, в которую установлена MTA, выполните команду

gdb mta-server -c core

  • Когда gdb запустится, введите следующую команду для получения backtrace:
bt full
  • Сохраните полученную информацию
  • (Чтобы выйти из gdb, используйте команду quit)

Если нет, то:

  • Установите gdb. Для установки gdb на Debian, воспользуйтесь командой:
apt-get install gdb
  • Из директории MTA сервера запустите mta-server примерно таким образом:
gdb mta-server --eval-command run
  • Теперь дождитесь вылета. (пока что игнорируйте странную информацию, выводимую на экран)
  • Когда вылет произойдет, выполните следующую команду для получения backtrace:
bt full
  • Сохраните полученную информацию
  • (Чтобы выйти из gdb, используйте команду quit)


Зависания сервера

Если ваш Linux-сервер зависает, получите backtrace с thread-информацией и опубликуйте отчет на нашем багтрекере

Как получить backtrace с thread-информацией:

  • Установите gdb. Для установки gdb на Debian, воспользуйтесь командой:
apt-get install gdb
  • Из директории MTA сервера, запустите mta-server примерно таким образом:
gdb mta-server --eval-command run
  • Теперь дождитесь зависания. (пока что игнорируйте странную информацию, выводимую на экран)
  • Когда зависание произойдет, нажмите ctrl-c для запуска gdb
  • Затем выполните следующую команду для получения backtrace:
bt full
  • Сохраните полученную информацию
  • Затем выполните следующую команду для получения thread-информации:
info threads
  • Сохраните полученную информацию
  • (Чтобы выйти из gdb, используйте команду quit)


Запуск на 64-битном Linux

  • Установите 32-битные библиотеки для вашего дистрибутива

Если вы получаете ошибку типа "libreadline.so.5: cannot open shared object file: No such file or directory.", то на Debian она может быть разрешена следующим способом:

wget http://ftp.uk.debian.org/debian/pool/main/r/readline5/libreadline5_5.2-7_i386.deb
dpkg -X libreadline5_5.2-7_i386.deb temp
cp -d temp/lib/libreadline.so.5* /usr/lib32/