Building MTASA Server on GNU Linux: Difference between revisions
No edit summary |
mNo edit summary |
||
(14 intermediate revisions by 11 users not shown) | |||
Line 2: | Line 2: | ||
== 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 | {{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]]}} | ||
<!-- | <!-- | ||
Line 47: | Line 47: | ||
* '''libsqlite3-dev:''' contains the SQLite library (version 3) | * '''libsqlite3-dev:''' contains the SQLite library (version 3) | ||
--> | --> | ||
* ''' | * '''libreadline-gplv2-dev:''' contains the readline library (version 5) | ||
* '''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 | ||
Line 53: | Line 53: | ||
* '''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 | * '''default-libmysqlclient-dev:''' contains the MySQL library | ||
* '''git:''' contains the git client used to check out our code repository | * '''git:''' contains the git client used to check out our code repository | ||
* '''unzip:''' contains archive unpacker | |||
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 | apt-get install build-essential automake libtool | ||
apt-get install | apt-get install libreadline-gplv2-dev libncurses5-dev libncursesw5-dev | ||
apt-get install libmysqlclient-dev git | apt-get install default-libmysqlclient-dev git unzip | ||
Note: On Debian 8 systems please use this: '''apt-get install build-essential automake libtool libreadline-gplv2-dev libncurses5-dev libncursesw5-dev libmysqlclient-dev git unzip''' | |||
=== Gentoo Linux === | === Gentoo Linux === | ||
Line 66: | Line 69: | ||
<!-- | <!-- | ||
* '''sqlite:''' contains the SQLite library | * '''sqlite:''' contains the SQLite library | ||
* '''curl:''' contains the cURL library; to compile with SSL support, apply the net-misc/curl | * '''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 | * '''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: | ||
Line 99: | Line 102: | ||
'''Downloading the source.''' | '''Downloading the source.''' | ||
First you need to download the source. Either clone as | First, you need to download the source. Either clone as shown below or [https://github.com/multitheftauto/mtasa-blue/archive/master.zip download a zip snapshot] | ||
git clone <nowiki>https</nowiki>://github.com/multitheftauto/mtasa-blue.git mtasa-blue | git clone <nowiki>https</nowiki>://github.com/multitheftauto/mtasa-blue.git mtasa-blue | ||
Line 106: | Line 109: | ||
Then compile it thus: | Then compile it thus: | ||
./ | ./linux-build.sh | ||
Then copy the configuration files, network module and resources into Bin/server by running this command: | Then copy the configuration files, network module and resources into '''Bin/server''' by running this command: | ||
./ | ./linux-install-data.sh | ||
And the | And the resources and stuff should be downloaded and stuff. As well as the net_d.dll file. | ||
=== '''Troubleshooting''' === | === '''Troubleshooting''' === | ||
If you’re getting any unexpected errors while compiling, please check our [ | If you’re getting any unexpected errors while compiling, please check our [https://github.com/multitheftauto/mtasa-blue/issues GitHub issues] or our [https://discord.com/invite/GNN6PRtTnu development-focused Discord server]. | ||
<ul> | |||
<li>If you get a message saying "Killed" when running premake5 gmake (linux-build.sh), that usually means you ran out of memory.<br /> | |||
You can confirm this by searching for kill logs by running <code>sudo dmesg | grep -i kill</code><br /> | |||
A possible solution for this might be to [https://opensource.com/article/18/9/swap-space-linux-systems turn on swap] or upgrade your system memory temporarily.<br /> | |||
1 GB is likely '''not''' enough of memory to complete the build. | |||
</li> | |||
</ul> | |||
[[ru:Building MTASA Server on GNU Linux]] | [[ru:Building MTASA Server on GNU Linux]] | ||
[[Category: Development]] | [[Category: Development]] |
Latest revision as of 22:18, 23 April 2022
This article needs checking. | |
Reason(s): Confirm steps work. |
Installing and Running MTASA server on 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.6 if you are compiling from the trunk, or the net.so from 1.6.0 if you are compiling the 1.6.0 branch. Be sure the read the top of 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
- libreadline-gplv2-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
- default-libmysqlclient-dev: contains the MySQL library
- git: contains the git client used to check out our code repository
- unzip: contains archive unpacker
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 libreadline-gplv2-dev libncurses5-dev libncursesw5-dev apt-get install default-libmysqlclient-dev git unzip
Note: On Debian 8 systems please use this: apt-get install build-essential automake libtool libreadline-gplv2-dev libncurses5-dev libncursesw5-dev libmysqlclient-dev git unzip
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.6
Downloading the source.
First, you need to download the source. Either clone as shown below or download a zip snapshot
git clone https://github.com/multitheftauto/mtasa-blue.git mtasa-blue cd mtasa-blue
Then compile it thus:
./linux-build.sh
Then copy the configuration files, network module and resources into Bin/server by running this command:
./linux-install-data.sh
And the resources and stuff should be downloaded and stuff. As well as the net_d.dll file.
Troubleshooting
If you’re getting any unexpected errors while compiling, please check our GitHub issues or our development-focused Discord server.
- If you get a message saying "Killed" when running premake5 gmake (linux-build.sh), that usually means you ran out of memory.
You can confirm this by searching for kill logs by runningsudo dmesg | grep -i kill
A possible solution for this might be to turn on swap or upgrade your system memory temporarily.
1 GB is likely not enough of memory to complete the build.