skinlayers
07-02-10, 08:01 AM
Hey all.
Just two days after I found this forum via TRM's Repack, I'm writing consolidated instructions for compiling evo-X-core.
Figures. Note: I built mine on a debian lenny 64-bit system. The instructions should be the same for 32-bit. Ubuntu will have a couple of extra dependencies they need to install. Also note that I'm doing this from pure command line. If you are using a GUI then gedit is going to be a much faster way to edit the text files.
The first part is lifted from the mangos wiki. Ubuntu requires a few different packages, so I'll post both apt-get lines here. If anyone can help me clean this up, I'd appreciate it! They list two different sets of packages for Ubuntu, so I've mixed them together. Let me know if I'm missing anything!
http://getmangos.com/wiki/Compile_MaNGOS_On_Linux
UPDATE 8: Renamed evoxlinux.patch to evox-core-sd2linux.patch.
UPDATE 9: Updated for evo-X-core 490. Added link to patches folder.
UPDATE 10: Added work around for Core 491/Branch 59 by rolling back to Branch 58.
UPDATE 11: Created my own repo based off evo-X Core 492 with linux fixes applied.
Getting started...
Open a Terminal window
sudo apt-get update
Debian:
sudo apt-get install gcc g++ automake autoconf make patch libmysql++-dev libtool libssl-dev subversion zlibc libc6 git git-core mysql-server pkg-config unrar-free
Ubuntu:
sudo apt-get install build-essential gcc g++ cpp automake autoconf make patch libmysql++-dev libtool libcurl4-openssl-dev libssl-dev grep binutils subversion zlibc libc6 nano git-core mysql-server pkg-config unrar-free
Note: I've upgraded mysql-server to 5.1 by adding the dotdeb.org line for it to my repos.
When I tested this on my Ubuntu install, mysql-server already installs 5.1 by default.
More details later.
Note: When mysql-server installs you should be prompted for a root password.
IT IS VERY IMPORTANT THAT YOU REMEMBER THIS PASSWORD! You'll need it later...
Install OpenSSL 0.8.9k:
From the mangos wiki-
"As of right now, the libopenssl that Ubuntu/Debian supplied was 0.9.8g and realmd requires 0.9.8k..."
For 32-bit
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8k-8_i386.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl-dev_0.9.8k-8_i386.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_0.9.8k-8_i386.deb
sudo dpkg -i libssl0.9.8_0.9.8k-8_i386.deb libssl-dev_0.9.8k-8_i386.deb openssl_0.9.8k-8_i386.deb
For 64-bit
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8k-8_amd64.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl-dev_0.9.8k-8_amd64.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_0.9.8k-8_amd64.deb
sudo dpkg -i libssl0.9.8_0.9.8k-8_amd64.deb libssl-dev_0.9.8k-8_amd64.deb openssl_0.9.8k-8_amd64.deb
Pull down the current source via git, and patch source code for linux compile.
git clone git://github.com/skinlayers/evo-X-Core.git
cd evo-X-Core
Or for evo-X Branch
git clone git://github.com/skinlayers/evo-X-Branch.git
cd evo-X-Branch/evo-X-Core-3.3.2
Custom patches
I've build a couple of common patches against evo-X Core 491, and linked them here for convenience.
I can't promise they'll stay up to date, but they work as of evo-X Core 491: AHbot, playerbot,
and throw patches are in here as well as the SD2 patch above.
http://skinlayers.net/evoxpatches/
Configure and compile source, then install the compiled binaries and related files
Run autoreconf against the source,
create a working directory for your compiled binaries, and
then configure the source with your install options:
autoreconf --install --force
mkdir objdir
cd objdir
../configure --prefix=/opt/evox --sysconfdir=/opt/evox/etc --enable-cli --enable-ra --datadir=/opt/evox
Note: you can replace /opt/evox with whatever path you want evo-x-core to be installed to.
Compile the source:
make (single proc/core)
or
make -j # (multi-proc/core)
Replace # with number of processors/cores you have.
From the mangos wiki-
"If you have a quad core CPU then "-j 4" is what you would use, dual core "-j 2".
With experience compiling source, for each core, add about 375MB of ram usage,
at 4 cores, compiling uses up to 1.5GB of RAM, if your server runs out of ram during
the compile process make WILL fail, be aware of this."
Install your binaries and related files, clean out objdir directory,
and copy default realmd and mangosd config files into place:
sudo make install
make clean
cd ..
rm -r objdir
sudo cp /opt/evox/etc/mangosd.conf.dist /opt/evox/etc/mangosd.conf
sudo cp /opt/evox/etc/realmd.conf.dist /opt/evox/etc/realmd.conf
Acquire sql dumps. Create, install, and update databases
Create folder for database files:
mkdir db_files
cd db_files
wget https://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid/trunk/wotlk/3.0.3/3.0.3_acid.sql --no-check-certificate
wget http://europe-wow.eu/evo-X-Downloads/evo-X%20Database/evo-X%20Titan%20Database%20(0.0.9)%20for%20evo-X%20Core%20rev.%20425%20+%20with%20SD2%20SQL%20for %20rev.%201573.rar
Note: If you've donated and have access to the 0.1.0 Gold database
(as I do), then use that instead!
Unrar the database files. Normally this would be unrar-free e evo-X*.rar,
but it fails for me so I decompressed it under windows and then moved it back.
I'm guessing it would work with the non-free version of unrar for Ubuntu/Debian
Next, setup your mysql databases, load the structures, and import the evo-x, SD2, and SD2-ACID databases.
While the names of the databases don't really matter, I believe the script to install the
mysql database updates expects the mangos naming scheme. You can always use your own names
but you'll have to apply each update manually.
Note: You'll be prompted for your mysql root password.
This is the one you picked when you installed mysql-server:
mysql -u root -p < /opt/evox/mangos/sql/create_mysql.sql
mysql -u root -p < /opt/evox/scriptdev2/sql/scriptdev2_create_database.sql
mysql -u root -p scriptdev2 < /opt/evox/scriptdev2/sql/scriptdev2_create_structure_mysql.sql
mysql -u root -p mangos < /opt/evox/mangos/sql/mangos.sql
mysql -u root -p characters < /opt/evox/mangos/sql/characters.sql
mysql -u root -p realmd < /opt/evox/mangos/sql/realmd.sql
mysql -u root -p scriptdev2 < /opt/evox/scriptdev2/sql/scriptdev2_script_full.sql
mysql -u root -p mangos < ./evo-X\ Titan\ Database\ \(0.0.9\)\ for\ evo-X\ Core\ rev.\ 425\ +\ with\ SD2\ SQL\ for\ rev.\ 1573.rar.sql
or for 0.1.0 Gold
mysql -u root -p mangos < ./evo-X\ Gold\ Database\ \(0.1.0\)\ for\ evo-X\ Core\ rev.\ 459\ +\ with\ SD2\ SQL\ for\ rev.\ 1573.rar.sql
mysql -u root -p mangos < ./3.0.3_acid.sql
mysql -u root -p mangos < /opt/evox/scriptdev2/sql/mangos_scriptname_full.sql
Connect to mysql realmd database and setup your realm.
Note: Replace RealmName and Hostname_or_IP with your settings.
Be sure to leave the single quotes ( ' ) around them:
mysql -u root -p
use realmd;
UPDATE realmlist SET name = 'RealmName' WHERE id = 1;
UPDATE realmlist SET address = 'Hostname_or_IP' WHERE id = 1;
exit
Finishing touches
Go back to your db_files folder. Copy the dbc, maps, or vmaps you extracted from
a Windows WoW install to here. You can also get dbc and maps from
http://evo-x-project.com/evo-X-Downloads/evo-X%20Tools/Maps-Vmaps-DBCs/:
Note: vmaps take a while to generate and are optional, but HIGHLY recommended.
sudo mv dbc /opt/evox/bin/
sudo mv maps /opt/evox/bin/
sudo mv vmaps /opt/evox/bin/
Edit your config files.
Again, you can use different database names here.
They just have to match the ones you created and populated earlier:
sudo nano /opt/evox/etc/realmd.conf
Find:
LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd"
Change the first mangos after root to your mysql root password
Find:
BindIP = "0.0.0.0"
Replace 0.0.0.0 with your IP or hostname
Save & exit
sudo nano /opt/evox/etc/mangosd.conf
Find:
LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd"
WorldDatabaseInfo = "127.0.0.1;3306;root;mangos;mangos"
CharacterDatabaseInfo = "127.0.0.1;3306;root;mangos;characters"
Change the first mangos after root to your mysql root password
Find:
BindIP = "0.0.0.0"
Replace 0.0.0.0 with your IP or hostname
Save & exit
Run mangos-realmd & mangos-worldd in seperate screens in the background
Also learn how to attach to the screen to issue commands or bring the servers down
cd /opt/evox/bin
screen -mS evox
./mangos-realmd
ctrl-a followed by c to create a new screen
./mangos-worldd
ctrl-a followed by d
will detach you from the screen, leaving mangos-realmd and mangos-worldd running in the background.
To quit evo-X-core, first, if you're not already at the mangos> prompt, attach the to screen with:
screen -r
Then:
ctrl-c (to stop mangos-worldd)
exit (this will take you back to mangos-realmd)
ctrl-c (to stop mangod-realmd)
exit
Create an account and set account access:
Again, if you are not at the mangos> prompt type:
screen -r
To create an account enter:
account create USERNAME PASSWORD
Replace USERNAME and PASSWORD with the desired cridentials.
Set number of authorized expansions:
account set addon USERNAME #
Replace # with 0=None, 1=TBC, 2=WotlK
Optional- Set GM Level (if you want to give them GM privs):
account set gmlevel USERNAME #
Replace # with 0, 1, 2, or 3
I'll add more detail later.
Thank you:
Atomic, Salja, notagain, Viste, TRM, Chemmyone, 3raZar3, and all the other devs!
skinlayers
Just two days after I found this forum via TRM's Repack, I'm writing consolidated instructions for compiling evo-X-core.
Figures. Note: I built mine on a debian lenny 64-bit system. The instructions should be the same for 32-bit. Ubuntu will have a couple of extra dependencies they need to install. Also note that I'm doing this from pure command line. If you are using a GUI then gedit is going to be a much faster way to edit the text files.
The first part is lifted from the mangos wiki. Ubuntu requires a few different packages, so I'll post both apt-get lines here. If anyone can help me clean this up, I'd appreciate it! They list two different sets of packages for Ubuntu, so I've mixed them together. Let me know if I'm missing anything!
http://getmangos.com/wiki/Compile_MaNGOS_On_Linux
UPDATE 8: Renamed evoxlinux.patch to evox-core-sd2linux.patch.
UPDATE 9: Updated for evo-X-core 490. Added link to patches folder.
UPDATE 10: Added work around for Core 491/Branch 59 by rolling back to Branch 58.
UPDATE 11: Created my own repo based off evo-X Core 492 with linux fixes applied.
Getting started...
Open a Terminal window
sudo apt-get update
Debian:
sudo apt-get install gcc g++ automake autoconf make patch libmysql++-dev libtool libssl-dev subversion zlibc libc6 git git-core mysql-server pkg-config unrar-free
Ubuntu:
sudo apt-get install build-essential gcc g++ cpp automake autoconf make patch libmysql++-dev libtool libcurl4-openssl-dev libssl-dev grep binutils subversion zlibc libc6 nano git-core mysql-server pkg-config unrar-free
Note: I've upgraded mysql-server to 5.1 by adding the dotdeb.org line for it to my repos.
When I tested this on my Ubuntu install, mysql-server already installs 5.1 by default.
More details later.
Note: When mysql-server installs you should be prompted for a root password.
IT IS VERY IMPORTANT THAT YOU REMEMBER THIS PASSWORD! You'll need it later...
Install OpenSSL 0.8.9k:
From the mangos wiki-
"As of right now, the libopenssl that Ubuntu/Debian supplied was 0.9.8g and realmd requires 0.9.8k..."
For 32-bit
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8k-8_i386.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl-dev_0.9.8k-8_i386.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_0.9.8k-8_i386.deb
sudo dpkg -i libssl0.9.8_0.9.8k-8_i386.deb libssl-dev_0.9.8k-8_i386.deb openssl_0.9.8k-8_i386.deb
For 64-bit
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8k-8_amd64.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/libssl-dev_0.9.8k-8_amd64.deb http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_0.9.8k-8_amd64.deb
sudo dpkg -i libssl0.9.8_0.9.8k-8_amd64.deb libssl-dev_0.9.8k-8_amd64.deb openssl_0.9.8k-8_amd64.deb
Pull down the current source via git, and patch source code for linux compile.
git clone git://github.com/skinlayers/evo-X-Core.git
cd evo-X-Core
Or for evo-X Branch
git clone git://github.com/skinlayers/evo-X-Branch.git
cd evo-X-Branch/evo-X-Core-3.3.2
Custom patches
I've build a couple of common patches against evo-X Core 491, and linked them here for convenience.
I can't promise they'll stay up to date, but they work as of evo-X Core 491: AHbot, playerbot,
and throw patches are in here as well as the SD2 patch above.
http://skinlayers.net/evoxpatches/
Configure and compile source, then install the compiled binaries and related files
Run autoreconf against the source,
create a working directory for your compiled binaries, and
then configure the source with your install options:
autoreconf --install --force
mkdir objdir
cd objdir
../configure --prefix=/opt/evox --sysconfdir=/opt/evox/etc --enable-cli --enable-ra --datadir=/opt/evox
Note: you can replace /opt/evox with whatever path you want evo-x-core to be installed to.
Compile the source:
make (single proc/core)
or
make -j # (multi-proc/core)
Replace # with number of processors/cores you have.
From the mangos wiki-
"If you have a quad core CPU then "-j 4" is what you would use, dual core "-j 2".
With experience compiling source, for each core, add about 375MB of ram usage,
at 4 cores, compiling uses up to 1.5GB of RAM, if your server runs out of ram during
the compile process make WILL fail, be aware of this."
Install your binaries and related files, clean out objdir directory,
and copy default realmd and mangosd config files into place:
sudo make install
make clean
cd ..
rm -r objdir
sudo cp /opt/evox/etc/mangosd.conf.dist /opt/evox/etc/mangosd.conf
sudo cp /opt/evox/etc/realmd.conf.dist /opt/evox/etc/realmd.conf
Acquire sql dumps. Create, install, and update databases
Create folder for database files:
mkdir db_files
cd db_files
wget https://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid/trunk/wotlk/3.0.3/3.0.3_acid.sql --no-check-certificate
wget http://europe-wow.eu/evo-X-Downloads/evo-X%20Database/evo-X%20Titan%20Database%20(0.0.9)%20for%20evo-X%20Core%20rev.%20425%20+%20with%20SD2%20SQL%20for %20rev.%201573.rar
Note: If you've donated and have access to the 0.1.0 Gold database
(as I do), then use that instead!
Unrar the database files. Normally this would be unrar-free e evo-X*.rar,
but it fails for me so I decompressed it under windows and then moved it back.
I'm guessing it would work with the non-free version of unrar for Ubuntu/Debian
Next, setup your mysql databases, load the structures, and import the evo-x, SD2, and SD2-ACID databases.
While the names of the databases don't really matter, I believe the script to install the
mysql database updates expects the mangos naming scheme. You can always use your own names
but you'll have to apply each update manually.
Note: You'll be prompted for your mysql root password.
This is the one you picked when you installed mysql-server:
mysql -u root -p < /opt/evox/mangos/sql/create_mysql.sql
mysql -u root -p < /opt/evox/scriptdev2/sql/scriptdev2_create_database.sql
mysql -u root -p scriptdev2 < /opt/evox/scriptdev2/sql/scriptdev2_create_structure_mysql.sql
mysql -u root -p mangos < /opt/evox/mangos/sql/mangos.sql
mysql -u root -p characters < /opt/evox/mangos/sql/characters.sql
mysql -u root -p realmd < /opt/evox/mangos/sql/realmd.sql
mysql -u root -p scriptdev2 < /opt/evox/scriptdev2/sql/scriptdev2_script_full.sql
mysql -u root -p mangos < ./evo-X\ Titan\ Database\ \(0.0.9\)\ for\ evo-X\ Core\ rev.\ 425\ +\ with\ SD2\ SQL\ for\ rev.\ 1573.rar.sql
or for 0.1.0 Gold
mysql -u root -p mangos < ./evo-X\ Gold\ Database\ \(0.1.0\)\ for\ evo-X\ Core\ rev.\ 459\ +\ with\ SD2\ SQL\ for\ rev.\ 1573.rar.sql
mysql -u root -p mangos < ./3.0.3_acid.sql
mysql -u root -p mangos < /opt/evox/scriptdev2/sql/mangos_scriptname_full.sql
Connect to mysql realmd database and setup your realm.
Note: Replace RealmName and Hostname_or_IP with your settings.
Be sure to leave the single quotes ( ' ) around them:
mysql -u root -p
use realmd;
UPDATE realmlist SET name = 'RealmName' WHERE id = 1;
UPDATE realmlist SET address = 'Hostname_or_IP' WHERE id = 1;
exit
Finishing touches
Go back to your db_files folder. Copy the dbc, maps, or vmaps you extracted from
a Windows WoW install to here. You can also get dbc and maps from
http://evo-x-project.com/evo-X-Downloads/evo-X%20Tools/Maps-Vmaps-DBCs/:
Note: vmaps take a while to generate and are optional, but HIGHLY recommended.
sudo mv dbc /opt/evox/bin/
sudo mv maps /opt/evox/bin/
sudo mv vmaps /opt/evox/bin/
Edit your config files.
Again, you can use different database names here.
They just have to match the ones you created and populated earlier:
sudo nano /opt/evox/etc/realmd.conf
Find:
LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd"
Change the first mangos after root to your mysql root password
Find:
BindIP = "0.0.0.0"
Replace 0.0.0.0 with your IP or hostname
Save & exit
sudo nano /opt/evox/etc/mangosd.conf
Find:
LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd"
WorldDatabaseInfo = "127.0.0.1;3306;root;mangos;mangos"
CharacterDatabaseInfo = "127.0.0.1;3306;root;mangos;characters"
Change the first mangos after root to your mysql root password
Find:
BindIP = "0.0.0.0"
Replace 0.0.0.0 with your IP or hostname
Save & exit
Run mangos-realmd & mangos-worldd in seperate screens in the background
Also learn how to attach to the screen to issue commands or bring the servers down
cd /opt/evox/bin
screen -mS evox
./mangos-realmd
ctrl-a followed by c to create a new screen
./mangos-worldd
ctrl-a followed by d
will detach you from the screen, leaving mangos-realmd and mangos-worldd running in the background.
To quit evo-X-core, first, if you're not already at the mangos> prompt, attach the to screen with:
screen -r
Then:
ctrl-c (to stop mangos-worldd)
exit (this will take you back to mangos-realmd)
ctrl-c (to stop mangod-realmd)
exit
Create an account and set account access:
Again, if you are not at the mangos> prompt type:
screen -r
To create an account enter:
account create USERNAME PASSWORD
Replace USERNAME and PASSWORD with the desired cridentials.
Set number of authorized expansions:
account set addon USERNAME #
Replace # with 0=None, 1=TBC, 2=WotlK
Optional- Set GM Level (if you want to give them GM privs):
account set gmlevel USERNAME #
Replace # with 0, 1, 2, or 3
I'll add more detail later.
Thank you:
Atomic, Salja, notagain, Viste, TRM, Chemmyone, 3raZar3, and all the other devs!
skinlayers