Difference between revisions of "Building MTASA Server on GNU Linux"

From Multi Theft Auto: Wiki
Jump to: navigation, search
(wget)
Line 1: Line 1:
{{Needs Checking|Debian 7 (Wheezy) is out, this release includes multiarch support. Update the Debian specific instructions to 7.}}
+
{{Needs Checking|Confirm steps work.}}
  
 
== Installing and Running MTASA server on Linux ==
 
== Installing and Running MTASA server on Linux ==
 
{{Note|This article is only for developers who changed the server code, if you are looking for the precompiled server (for normal server owners). Go to: [http://linux.mtasa.com/ linux.mtasa.com] and see [[Installing and Running MTASA Server on GNU_Linux]]}}
 
{{Note|This article is only for developers who changed the server code, if you are looking for the precompiled server (for normal server owners). Go to: [http://linux.mtasa.com/ linux.mtasa.com] and see [[Installing and Running MTASA Server on GNU_Linux]]}}
  
 +
<!--
 
== Compiling on a 64 bit Linux ==
 
== Compiling on a 64 bit Linux ==
{{Outdated|Everything is old and probably wrong now.}}
 
 
Additional steps for compiling a MTA server on 64 bit Linux:
 
Additional steps for compiling a MTA server on 64 bit Linux:
 
===Install 32 bit libs for your 64 bit distro===
 
===Install 32 bit libs for your 64 bit distro===
Line 13: Line 13:
  
 
===64 bit Troubleshooting===
 
===64 bit Troubleshooting===
{{Outdated|Everything is old and probably wrong now.}}
 
 
* If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 64 bit Debian Squeeze  by doing this:
 
* If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 64 bit Debian Squeeze  by doing this:
  
Line 27: Line 26:
  
 
  rpm2cpio libstdc++-4.3.0-8.i386.rpm | cpio -i --make-directories
 
  rpm2cpio libstdc++-4.3.0-8.i386.rpm | cpio -i --make-directories
 
+
-->
 
 
 
 
 
== Preparing your system ==
 
== Preparing your system ==
{{Outdated|Everything is old and probably wrong now.}}
 
  
 
In order to build the Multi Theft Auto dedicated server, you will have to set up your system with the correct libraries and tools. How these are installed depends on your distribution.
 
In order to build the Multi Theft Auto dedicated server, you will have to set up your system with the correct libraries and tools. How these are installed depends on your distribution.
  
Our network module (net.dll or net.so) is distributed as a precompiled binary library. The file for GNU/Linux can be found inside the lastest Linux nightly from [http://nightly.mtasa.com/ here]. Use the net.so from 1.4 if you are compiling from the trunk, or the net.so from 1.3.x if you are compiling the 1.3.x branch. Be sure the read the top of ''MTA10_Server/version.h'' as it contains directions on how to compile the different build types.
+
Our network module (net.dll or net.so) is distributed as a precompiled binary library. The file for GNU/Linux can be found inside the lastest Linux nightly from [http://nightly.mtasa.com/ here]. Use the net.so from {{Current Version|master}} if you are compiling from the trunk, or the net.so from {{Current Version|full}} if you are compiling the {{Current Version|full}} branch. Be sure the read the top of ''MTA10_Server/version.h'' as it contains directions on how to compile the different build types.
  
 
=== Debian Linux ===
 
=== Debian Linux ===
{{Outdated|Everything is old and probably wrong now.}}
+
 
 
Includes derivative distributions such as Ubuntu.
 
Includes derivative distributions such as Ubuntu.
  
Line 46: Line 42:
 
* '''automake:''' contains the automake tools
 
* '''automake:''' contains the automake tools
 
* '''libtool:''' contains the libtool software required to build libraries
 
* '''libtool:''' contains the libtool software required to build libraries
 +
<!--
 
* '''libcurl3-dev:''' contains the cURL library (version 3 without SSL support)
 
* '''libcurl3-dev:''' contains the cURL library (version 3 without SSL support)
 
* '''libpcre3-dev:''' contains the PCRE library (version 3)
 
* '''libpcre3-dev:''' contains the PCRE library (version 3)
 
* '''libsqlite3-dev:''' contains the SQLite library (version 3)
 
* '''libsqlite3-dev:''' contains the SQLite library (version 3)
 +
-->
 
* '''libreadline5-dev:''' contains the readline library (version 5)
 
* '''libreadline5-dev:''' contains the readline library (version 5)
* '''subversion:''' contains the SVN client used to check out our code repository
 
 
* '''libncurses5-dev:''' contains software for controlling writing to the console screen
 
* '''libncurses5-dev:''' contains software for controlling writing to the console screen
 
* '''libncursesw5-dev:''' contains support for wide characters
 
* '''libncursesw5-dev:''' contains support for wide characters
 +
<!--
 
* '''libsparsehash-dev:''' contains support for Google's hash-map '''(So you don't have to compile sparehash!)'''
 
* '''libsparsehash-dev:''' contains support for Google's hash-map '''(So you don't have to compile sparehash!)'''
 +
-->
 
* '''libmysqlclient-dev:''' contains the MySQL library
 
* '''libmysqlclient-dev:''' contains the MySQL library
 +
* '''git:''' contains the git client used to check out our code repository
 
To install these packages through apt, use the apt-get install <package list> command as in the following example (execute as root):
 
To install these packages through apt, use the apt-get install <package list> command as in the following example (execute as root):
  
  apt-get install build-essential automake libtool libcurl4-openssl-dev libpcre3-dev
+
  apt-get install build-essential automake libtool
  apt-get install libsqlite3-dev libreadline5-dev subversion libncurses5-dev
+
  apt-get install libreadline5-dev libncurses5-dev libncursesw5-dev
  apt-get install libncursesw5-dev libsparsehash-dev libmysqlclient-dev
+
  apt-get install libmysqlclient-dev git
  
 
=== Gentoo Linux ===
 
=== Gentoo Linux ===
{{Outdated|Everything is old and probably wrong now.}}
 
 
You will need the necessary build tools, headers and libraries. Because Gentoo’s portage system is designed to compile any packages on your own system, the necessary build tools will have already been installed. This only leaves you to install the necessary libraries:
 
You will need the necessary build tools, headers and libraries. Because Gentoo’s portage system is designed to compile any packages on your own system, the necessary build tools will have already been installed. This only leaves you to install the necessary libraries:
  
 +
<!--
 
* '''sqlite:''' contains the SQLite library
 
* '''sqlite:''' contains the SQLite library
* '''subversion:''' contains the SVN client used to check out our code repository
 
 
* '''curl:''' contains the cURL library; to compile with SSL support, apply the net-misc/curl ssl USE flag
 
* '''curl:''' contains the cURL library; to compile with SSL support, apply the net-misc/curl ssl USE flag
 +
-->
 +
* '''git:''' contains the git client used to check out our code repository
 
To compile and install these packages through emerge, use the emerge -v <package list> command. The -v option shows additional * * information and can be omitted. (If you want to use any USE flags, prepend emerge with USE="use flags here". You can also use the -pv option to verify that you’re using the correct flags.) Refer to the [http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1 Gentoo Handbook] or manual for more information on emerge.
 
To compile and install these packages through emerge, use the emerge -v <package list> command. The -v option shows additional * * information and can be omitted. (If you want to use any USE flags, prepend emerge with USE="use flags here". You can also use the -pv option to verify that you’re using the correct flags.) Refer to the [http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1 Gentoo Handbook] or manual for more information on emerge.
  
 
Example:
 
Example:
  
  emerge -v subversion sqlite
+
  emerge -v git sqlite
 
  USE=“net-misc/curl ssl” emerge -v curl
 
  USE=“net-misc/curl ssl” emerge -v curl
  
 
=== Fedora ===
 
=== Fedora ===
{{Outdated|Everything is old and probably wrong now.}}
 
  
  
 
You will need these packages to be able to successfully compile a MTA server on Fedora:  
 
You will need these packages to be able to successfully compile a MTA server on Fedora:  
 
* '''glibc-devel:'''
 
* '''glibc-devel:'''
 +
<!--
 
* '''curl-devel:''' contains the cURL library
 
* '''curl-devel:''' contains the cURL library
 
* '''pcre-devel:''' contains the PCRE library
 
* '''pcre-devel:''' contains the PCRE library
 
* '''sqlite3-devel:''' contains the SQLite library
 
* '''sqlite3-devel:''' contains the SQLite library
 +
-->
 
* '''readline-devel:''' contains the readline library
 
* '''readline-devel:''' contains the readline library
 +
<!--
 
* '''lua-devel:''' contains the Lua libraries
 
* '''lua-devel:''' contains the Lua libraries
* '''subversion:''' contains the SVN client to check out the source code
+
-->
 +
* '''git:''' contains the git client to check out the source code
 
To install these packages through yum, use the yum install <package list> command as in the following example (execute as root):
 
To install these packages through yum, use the yum install <package list> command as in the following example (execute as root):
  
  yum install glibc-devel curl-devel pcre-devel sqlite3-devel readline-devel lua-devel subversion
+
  yum install glibc-devel readline-devel git
 
 
 
 
== Compiling on 64-bit ==
 
The MTA:SA server currently cannot be properly compiled in 64-bit mode. Instead, you should compile it in 32-bit mode and run it using 32-bit compatibility mode (use the '''-m32''' flag as show below).
 
Also ensure you have cross compilers installed. On Debian this can be achieved with:
 
 
 
apt-get install gcc-multilib g++-multilib
 
  
 
+
== General instructions for {{Current Version|master}} ==
== General instructions for {{Current Version|full}} ==
 
{{Outdated|Everything is old and probably wrong now.}}
 
{{Outdated|Everything is old and probably wrong now.}}
 
  
 
'''Downloading the source.'''
 
'''Downloading the source.'''
  
First you need to download the source.
+
First you need to download the source. Either clone as show below or [https://github.com/multitheftauto/mtasa-blue/archive/master.zip download a zip snapshot]
  
  svn checkout <nowiki>http</nowiki>://mtasa-blue.googlecode.com/svn/branches/{{Current Version|full}}/ mtasa-blue
+
  git clone <nowiki>https</nowiki>://github.com/multitheftauto/mtasa-blue.git mtasa-blue
 
  cd mtasa-blue
 
  cd mtasa-blue
  
 
Then compile it thus:
 
Then compile it thus:
  
autoreconf -fiv
+
  ./initial-install.sh
export PKG_CONFIG_PATH=/usr/lib32/pkgconfig
+
 
  ./configure LDFLAGS="-m32" CPPFLAGS="-m32" CFLAGS="-m32" CXXFLAGS="-m32" $@
+
Then copy the built binaries and configuration files into MTA10_Server/output by running this command:
make
+
 
make -C MTA10_Server install
+
  ./mta-install.sh
  make -C Shared/XML install
 
  
 
Get the net.so like this:
 
Get the net.so like this:
  
  wget <nowiki>http</nowiki>://nightly.mtasa.com/?multitheftauto_linux-{{Current Version|full}}-rc-latest -O multitheftauto_linux-{{Current Version|full}}-latest.tar.gz
+
  wget <nowiki>http</nowiki>://nightly.mtasa.com/?multitheftauto_linux-{{Current Version|master}}-unstable-latest -O multitheftauto_linux-{{Current Version|master}}-latest.tar.gz
  tar -xzf multitheftauto_linux-{{Current Version|full}}-latest.tar.gz --transform 's:[^/]*:latest_nightly:'
+
  tar -xzf multitheftauto_linux-{{Current Version|master}}-latest.tar.gz --transform 's:[^/]*:latest_nightly:'
 
  mv latest_nightly/net.so MTA10_Server/output/
 
  mv latest_nightly/net.so MTA10_Server/output/
  rm -rf latest_nightly multitheftauto_linux-{{Current Version|full}}-latest.tar.gz
+
  rm -rf latest_nightly multitheftauto_linux-{{Current Version|master}}-latest.tar.gz
 
 
Copy config files:
 
 
 
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
 
  
 
Get resources:
 
Get resources:
  
  svn export <nowiki>http</nowiki>://mtasa-resources.googlecode.com/svn/trunk/ MTA10_Server/output/mods/deathmatch/resources
+
  wget <nowiki>https</nowiki>://github.com/multitheftauto/mtasa-resources/archive/master.tar.gz
 +
tar -xf master.tar.gz
 +
mv mtasa-resources-master MTA10_Server/output/mods/deathmatch/resources
  
 
And the server should be ready in MTA10_Server/output
 
And the server should be ready in MTA10_Server/output

Revision as of 23:58, 8 December 2015

Dialog-information.png This article needs checking.

Reason(s): Confirm steps work.

Installing and Running MTASA server on Linux

[[{{{image}}}|link=]] Note: This article is only for developers who changed the server code, if you are looking for the precompiled server (for normal server owners). Go to: linux.mtasa.com and see Installing and Running MTASA Server on GNU_Linux

Preparing your system

In order to build the Multi Theft Auto dedicated server, you will have to set up your system with the correct libraries and tools. How these are installed depends on your distribution.

Our network module (net.dll or net.so) is distributed as a precompiled binary library. The file for GNU/Linux can be found inside the lastest Linux nightly from here. Use the net.so from 1.5 if you are compiling from the trunk, or the net.so from 1.5.6 if you are compiling the 1.5.6 branch. Be sure the read the top of MTA10_Server/version.h as it contains directions on how to compile the different build types.

Debian Linux

Includes derivative distributions such as Ubuntu.

You will need the necessary build tools, headers and libraries, which are distributed through the following Debian packages (e.g. Debian Lenny):

  • build-essential: contains the necessary tools, headers and libraries to build applications
  • automake: contains the automake tools
  • libtool: contains the libtool software required to build libraries
  • libreadline5-dev: contains the readline library (version 5)
  • libncurses5-dev: contains software for controlling writing to the console screen
  • libncursesw5-dev: contains support for wide characters
  • libmysqlclient-dev: contains the MySQL library
  • git: contains the git client used to check out our code repository

To install these packages through apt, use the apt-get install <package list> command as in the following example (execute as root):

apt-get install build-essential automake libtool
apt-get install libreadline5-dev libncurses5-dev libncursesw5-dev
apt-get install libmysqlclient-dev git 

Gentoo Linux

You will need the necessary build tools, headers and libraries. Because Gentoo’s portage system is designed to compile any packages on your own system, the necessary build tools will have already been installed. This only leaves you to install the necessary libraries:

  • git: contains the git client used to check out our code repository

To compile and install these packages through emerge, use the emerge -v <package list> command. The -v option shows additional * * information and can be omitted. (If you want to use any USE flags, prepend emerge with USE="use flags here". You can also use the -pv option to verify that you’re using the correct flags.) Refer to the Gentoo Handbook or manual for more information on emerge.

Example:

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

Fedora

You will need these packages to be able to successfully compile a MTA server on Fedora:

  • glibc-devel:
  • readline-devel: contains the readline library
  • git: contains the git client to check out the source code

To install these packages through yum, use the yum install <package list> command as in the following example (execute as root):

yum install glibc-devel readline-devel git

General instructions for 1.5

Downloading the source.

First you need to download the source. Either clone as show below or download a zip snapshot

git clone https://github.com/multitheftauto/mtasa-blue.git mtasa-blue
cd mtasa-blue

Then compile it thus:

./initial-install.sh

Then copy the built binaries and configuration files into MTA10_Server/output by running this command:

./mta-install.sh

Get the net.so like this:

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

Get resources:

wget https://github.com/multitheftauto/mtasa-resources/archive/master.tar.gz
tar -xf master.tar.gz
mv mtasa-resources-master MTA10_Server/output/mods/deathmatch/resources

And the server should be ready in MTA10_Server/output

Troubleshooting

Any errors during the compilation of json-c can be solved by calling autoreconf -fi from the json-c directory.

If you’re getting any unexpected errors while compiling, please check our Bug tracker or our IRC channel