Installation (Linux)

From Project Skyfire
Revision as of 14:20, 29 January 2012 by Admin (talk | contribs) (Prerequisites)
Jump to navigation Jump to search

Introduction

This is a basic guide on how to install SkyFireEMU and SkyFireDB from scratch with small modifications though it can be applied to all Linux versions. **Please note this is a work in progress and only contains enough information to get most people a viable server in Linux.

Prerequisites

The compilation of SkyFireEMU and the setup of SkyFireDB will require certain packages to be installed. In Ubuntu use the following command:

sudo apt-get install build-essential autoconf libtool gcc g++ make cmake subversion git patch wget links zip unzip unrar openssl libssl-dev mysql-server mysql-client libmysqlclient15-dev libmysql++-dev libreadline5-dev zlib1g-dev libbz2-dev git-core libace-dev

In RedHat/Fedora based distributions use this command:

yum groupinstall "development tools" "development libraries"
yum install gcc-c++ git wget links zip unzip unrar mysql-server mysql-client mysql-devel openssl cmake

You may also want to install phpmyadmin and/or Apache. Do not forget the user and password for the Mysql root user.

Installing ACE

Start by downloading and unzipping the source

wget http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.0.tar.gz
tar xvzf ACE-6.0.0.tar.gz
cd ~/ACE_wrappers/

Here is where we compile ACE

mkdir build
cd build
../configure --prefix=/home/`echo $USER`/.sys/
make -j(#cores+1)
make install
The reason I state (#cores+1) in the make statement, is because of multi-core processors. 
In the event one has a 4-core processor, you would use "make -j5", minus quotations.
Note: There is NO SPACE inbetween j and 5. It's all a single stroke.

Installing OpenSSL - You should check if "0.9.8o" is the latest version

The entire procedure here is for people that do believe they need the latest revision - normally the version that comes with your distribution is sufficient enough.

32-bit Debian-based distributions (These no longer exist at the below locations but you can apt-get them if they dont come preinstalled with you openssl install from above)

wget ftp://ftp.debian.org/debian/pool/main/o/openssl/libssl-dev_0.9.8o-5_i386.deb
wget ftp://ftp.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8o-5_i386.deb
wget ftp://ftp.debian.org/debian/pool/main/o/openssl/openssl_0.9.8o-5_i386.deb
sudo dpkg -i libssl0.9.8_0.9.8o-5_i386.deb
sudo dpkg -i openssl_0.9.8o-5_i386.deb
sudo dpkg -i libssl-dev_0.9.8o-5_i386.deb

Debian-based distributions (These no longer exist at the below locations but you can apt-get them if they dont come preinstalled with you openssl install from above)

wget ftp://ftp.debian.org/debian/pool/main/o/openssl/libssl-dev_0.9.8o-1_amd64.deb
wget ftp://ftp.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8o-1_amd64.deb
wget ftp://ftp.debian.org/debian/pool/main/o/openssl/openssl_0.9.8o-1_amd64.deb
sudo dpkg -i libssl0.9.8_0.9.8o-1_amd64.deb
sudo dpkg -i openssl_0.9.8o-1_amd64.deb
sudo dpkg -i libssl-dev_0.9.8o-1_amd64.deb

Other distributions

For cases where you want to run an even newer release of OpenSSL than mentioned here, or your distribution not supplying a version that isn't of recent date, please check your distributions repositories or documentation. You can also retrieve it as sourcecode at http://openssl.org/source (feel free to use newer packages if you really feel like it). To build it from sourcecode, here's a primer :

wget http://openssl.org/source/openssl-0.9.8o.tar.gz
tar -xvf openssl-0.9.8o.tar.gz
cd openssl-0.9.8o
mkdir build
cd build

Alternative 1 : Local installation

../config --prefix=/home/`echo $USER`/.sys shared
make
make install

Alternative 2 : Systemwide installation

../config shared
make
sudo make install

Please note that any old revision of the OpenSSL package installed by the distribution may/will interfere with the new version. See your distribution documentation for information on how to remove it to be able to use the new one.

Compiling and Installing the SkyFireEMU

Grab the latest version of SkyFireEMU using git:

git clone git://github.com/ProjectSkyfire/SkyFireEMU.git

or if you prefer 4.2.0 use

git clone git://github.com/ProjectSkyfire/SkyFireEMU_420.git

This should create a directory called SkyFireEMU that will contain all the files necessary to compile the server and it's tools. Change to the directory, configure, and build.

cd SkyFireEMU
mkdir build
cd build
cmake ../ -DPREFIX=/home/`echo $USER`/skyfire -DTOOLS=1
make -j(#cores+1)
make install

Parameter explanations

-DACE_LIBRARY=<path to ACE library>                      (full path to your libACE.so file INCLUDING the filename - do not use if you have ACE installed systemwide)
-DACE_INCLUDE_DIR=<path to ACE includes/headers>         (path to the libACE include directory - do not use if you have ACE installed systemwide)
-DOPENSSL_LIBRARIES=<path to OpenSSL library>            (path to your OpenSSL library - do not use if you have OpenSSL installed systemwide)
-DOPENSSL_INCLUDE_DIR=<path to OpenSSL includes>         (path to your OpenSSL includes directory - do not use if you have OpenSSL installed systemwide)

-DSERVERS             Build worldserver and authserver
-DSCRIPTS             Build core with scripts included
-DTOOLS               Build map/vmap extraction/assembler tools
-DUSE_SCRIPTPCH       Use precompiled headers when compiling scripts
-DUSE_COREPCH         Use precompiled headers when compiling servers
-DUSE_SFMT            Use SFMT as random numbergenerator
-DWITH_WARNINGS       Show all warnings during compile
-DWITH_COREDEBUG      Include additional debug-code in core
-DWITH_SQL            Copy SQL files during installation
-DPREFIX              Set installation directory
-DCONF_DIR            Set configuration directory
-DLIBSDIR             Set library directory
-DCMAKE_C_FLAGS       Set C_FLAGS for compile (advanced users only)
-DCMAKE_CXX_FLAGS     Set CXX_FLAGS for compile (advanced users only)

Installing SkyFireDB

Now, install the DB framework for which SkyFireDB will be installed to:

mysql -u <mysql_root> -p<password> < ~/SkyFireEMU/sql/create/create_mysql.sql
mysql -u <mysql_root> -p<password> auth < ~/SkyFireEMU/sql/base/auth/auth.sql 
mysql -u <mysql_root> -p<password> characters < ~/SkyFireEMU/sql/base/character/character.sql
Replace the parts in <> to the correct administrative username, and associated password.
Usually administrative user is root, however if you set up mysql correctly, it will be a uname
associated with SkyFire.

Grab the latest version of SkyFireDB using the git command:

git clone git://github.com/ProjectSkyfire/SkyFireDB.git

This will create a directory called SkyFireDB that will contain the "World" database that the server will need. Edit the database installer and then install the World database:

Edit "mysql_user", "mysql_pass", and "new_world".

 can be done with nano, gedit, scite, etc. Command is (most easily):
nano ~/SkyFireDB/linux_installer.sh
Now run the installer to install the world database:
sh ~/SkyFireDB/linux_installer.sh

Press "i" to install a new World database

(If this fails comment out line #104 by placeing a # at the begging. For some reason the script is jacked up but after commenting that out it works fine.)

(If you are doing this for more than local use you will also need to change a database entry using this mysql command.)

update auth.realmlist set adress = "YOUR IP HERE" where id = 1;

Configuration

Now move and edit the configuration files to run the server.

mv ~/skyfire/etc/worldserver.conf.dist ~/skyfire/etc/worldserver.conf
mv  ~/skyfire/etc/authserver.conf.dist  ~/skyfire/etc/authserver.conf

Edit both of these files to the correct Mysql user name, password, and your DataDir.

nano ~/skyfire/etc/(correctserver).conf

Extractor and VMAPs

If you need a Windows compiled copy of the DBC Extractor and the tools for the VMAP
Extraction and assembly you can get a copy of them using your GIT client and download
them from: https://github.com/ProjectSkyfire/SkyFire-Community-Tools


Before doing any of these commands, follow the guide at

http://appdb.winehq.org/objectManager.php?sClass=version&iId=20549

to obtain a working installation of the latest WoW 4.0.X client, then proceed:

The last and final step of setting up SkyFireEMU is to obtain a proper set of maps for use in the server. Change to the WoW directory and run some commands:

cd "Wow Directory"
~/skyfire/bin/extractor
~/skyfire/bin/vmap3extractor
mv dbc ~/skyfire/bin/dbc
mv maps ~/skyfire/bin/maps
mkdir vmaps 
~/skyfire/bin/vmap3assembler
mv vmaps ~/skyfire/bin/

SkyFire Patcher

The client will need to be patched before it can properly connect to the server. Acquire the patcher in the Community Tools repository.

git clone git://github.com/ProjectSkyfire/SkyFire-Community-Tools.git

Install Mono in Wine or Crossover Office and run the patcher to modify your WoW.exe file.

to install Mono simply, and correctly configured, please view:

http://wiki.winehq.org/winetricks

to obtain specific versions/running hackery in your Wine bottle.

References

http://www.trinitycore.org/w/How-to:Linux

http://wiki.cactusemu.com/index.php?title=Installation_%28Linux%29

http://wiki.winehq.org/winetricks

http://appdb.winehq.org/objectManager.php?sClass=version&iId=20549