Jump to content
TrinityCore

How to install using pre-compiled packages


Thulium
 Share

Recommended Posts

@Thulium,

I found this guide and being a huge fan of debian, figured I would give it a go.  I didn't have any problems with initial setup, although I did find I had to bring in trinitycore-database3.3.5-en manually as it didn't seem to pull in when I installed trinitycore-server3.3.5-en.

I did notice it did a database update today when I pulled updates down with apt update, but it started generating errors on launch which appear to be caused by some database updates for spells which should've had accompanying source code changes -- is it safe to assume that this is just a matter of waiting for the trinitycore-server3.3.5-en update that coincides with the database updates? Thanks for all your hard work, I know what a task it can be to manage a repo server.

Link to comment
Share on other sites

Hey,

I (very) recently updated the repo to use https, if you have issues downloading the packages, make sure you have apt-transport-https installed.

When installing the server it does not automatically install the database packge, this allows you to use a different machine for the DB :-) (e.g. you already have a tuned DB server running). You can always install the DB package on the same host as the server package. It will pull in a mariadb-server as well.

Not sure about the DB errors... The only check you can do is see if all trinitycore-*3.3.5 packages are of the same day, I just did and it seems the DB package is about 12 days newer. I'll need to check my buildserver why it isn't building the others.

 

EDIT: found the issue, build was stuck on installing a dependency :-) just started it up again, expect new arrivals in ~2 hrs

Edited by Thulium
Found the issue
Link to comment
Share on other sites

@Thulium

Yes, thank you. I was able to figure out any issues I had during install.  It went fairly smoothly and I also installed phpmyadmin as a backend to manage the database.  I discovered the requirement of apt-transport-https pretty quickly.

You did a great job with this, it is pretty much flawless.  It does appear the worldserver.conf.dist and default worldserver.conf may be missing some options, but those are easy to fix on my end as well. I figured maybe your automated build script for the server had just hit a hiccup which is why it hadn't updated. I appreciate you taking the time to look into it, and I'll keep an eye out for the updated server code. The errors appear to be related to changes in the database, with accompanying source code changes. Here are the errors I am seeing: (note the server still runs)

Jun 28 08:23:58 wow worldserver[17983]: Script named 'npc_create_helper_cot' does not have a script name assigned in database.
Jun 28 08:23:58 wow worldserver[17983]: Script named 'npc_creditmarker_visit_with_ancestors' does not have a script name assigned in database.
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_pri_lightwell' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_stratholme_crusader_strike' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_icc_empowered_blood_3' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_icc_empowered_blood' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_teleport_leaders_blessing' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_generic_remove_empowered_blood' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_darkfallen_blood_mirror' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_roger_owens' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_martha_goslin' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_malcolm_moore' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_jena_anderson' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_hearthsinger_forresten_cot' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_darkfallen_noble' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_darkfallen_blood_knight' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_darkfallen_archmage' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_darkfallen_advisor' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_vampiric_fiend' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_chromie_start' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_bartleby_battson' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_chromie_middle' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_thalorien_dawnseeker' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_salramm_steal_flesh' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_darkfallen_tactician' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_icc_orb_controller' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_icc_siphon_essence' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_stratholme_rp_dummy' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_crate_helper_cot' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_arthas_stratholme' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_gen_teleporting' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'at_stratholme_inn_stairs_cot' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'npc_sergeant_morigan' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'go_empowering_blood_orb' exists in database, but no core script found!
Jun 28 08:23:58 wow worldserver[17983]: ScriptName 'spell_q11653_shortening_blaster' exists in database, but no core script found!

 

 

Link to comment
Share on other sites

It took me some time to set this up properly ;-) I'm glad it works  well :-)

About the missing config keys, that's correct, the config files are still the same (from the ones I created back then) and are not updated (as it requires me to reconfigure them each time a new key is added). Good thing for us is that the software doesn't care about missing keys and will assume a sane default value. The best/easiest solution would be to 'port' the configuration included in the packages to a fresh config file.

Same goes for the warnings, the server will run just fine, but this is only because the DB is newer then the code, the other way around could be problematic, as you'd be referring to DB objects that don't exist for scripts that need 'm.

Link to comment
Share on other sites

Got it. I'll keep an eye out for the new server package. I already merged the missing config keys in.  Thanks again for all your hard work. The repo installation is fantastic and Rock solid in my experience. 

 

One other thing I noticed is on the setup database she'll script it asks for a password even though it calls to generate a random one. Maybe this was intended? 

I also run wow in windows so ended up copying the client to my server and manually exreacting the tools package to build the maps because it wouldn't install since dpkg was trying to overwrite the profile.d file that sets the path. It wouldn't install on my Linux box I use for media storage because I run buster but was easy enough to solve. 

 

 

Link to comment
Share on other sites

The password it asks is the one for the database server root, the generated password is for the TC databases, so you probably installed a DB server and secured that beforehand. Most default installations of MariaDB on Debian don't request a password if you are logged in as root on the system and run mysql commands.

Buster packages are coming up soon, just a few more days until it's (long awaited) release...... :-)

Link to comment
Share on other sites

Hi all,

It took me a whole lot some time to prepare my Debian 10 buildserver, but I finally got around to do so. Please find new packages up in the repo! I have updated the TS with the new paths.

Please note that builds for Trinitycore on Debian 9 have been broken for a month or 2 because some of the build dependencies changed to versions that are not available in Debian 9 (for example SSL).

Also, I'm winding down on my own server as I don't play WoW any more. I will keep compiling the packages for the forseeable future, but I will not port them to Debian 11 (slated for ~Q2 2021). Please find all the scripts and recipes in the TS to roll your own :-)

Link to comment
Share on other sites

  • 1 month later...

Hey,

 

Did you install the trinitycore-database3.3.5 package as well? It's supposed to be in /opt/trinitycore/bin and that is added to your PATH variable (hence why you don't need to type in the whole path).

The database package is not installed automatically, in case you want to run it on a different server.

Link to comment
Share on other sites

Thanks for getting back to me. Sorry for late response. I installed only the 3.3.5 package, as I assumed the master package is for legion? Or do I have to install both of them?

I'm going to try to do it again. Trying both solutions.

Thanks!

EDIT:

Just installed 3.3.5 package following the instructions. If I browse my /opt/trinitycore/bin directory there is only authserver and worldserver files in there. I also tried to install the master package after installing 3.3.5 and got "E: Unable to locate package trinitycore-server-master-en"

trinity_screen.png.5f0c9b3182e4964b2d6d7ec0fb354f4a.png

Edited by mdlsvensson
Link to comment
Share on other sites

  • 1 month later...

Hey @Thulium

First, thanks for this project, I'm running my first build of the server now (it still takes forever!)

Second, I'm trying to get a docker image of TrinityCore going, and it would be a huge step forward if I could get a reliable package build of all the TrinityCore binaries. Unfortunately, the builds I'm getting from your package repo seem to rely on systemd to work, so I cannot run them inside a Docker container. So, now I'm trying to figure out how to build this project without systemd. The build tool you're using is new to me, and I can't find anything obvious in the build config in the trinitycore-recipes repo that includes systemd, other than the daemon restart command in postinst. Do you have any suggestions for how to remove systemd from the build?

Thanks again

Link to comment
Share on other sites

You can still use it without systemd, the package places some stuff in /etc/systemd/system, which only does stuff as long as systemd is in your docker images :-)

So you can do one of 3 things (the third is only for completeness sake, you should pick 1 or 2):

1. Add the package as-is to your docker, ignore the systemd config (it has no dependencies on systemd, so you can install it in an image without systemd)
2. Make your own build, be sure to copy the repo and remove the systemd stuff from trinity-server3.3.5.files/B_DEBIAN (this is the 'control' directory for dpkg). You can also see the things I do to start the server.
3. Run the containers privileged, systemd is weird that way... (don't actually do this)

Link to comment
Share on other sites

On 6/2/2020 at 11:19 AM, mdlsvensson said:

Thanks for getting back to me. Sorry for late response. I installed only the 3.3.5 package, as I assumed the master package is for legion? Or do I have to install both of them?

I'm going to try to do it again. Trying both solutions.

Thanks!

EDIT:

Just installed 3.3.5 package following the instructions. If I browse my /opt/trinitycore/bin directory there is only authserver and worldserver files in there. I also tried to install the master package after installing 3.3.5 and got "E: Unable to locate package trinitycore-server-master-en"

trinity_screen.png.5f0c9b3182e4964b2d6d7ec0fb354f4a.png

 

The setup_database.sh script is in _trinitycore-database3.3.5_ only, as the script relies on the SQL files also distributed using that package. But the database package is _not_ installed automatically, due to the fact that you might want to use a dedicated database server.

Link to comment
Share on other sites

@Thulium

I got 2) to work, in a slightly roundabout way. I built my own, but the install failed just like it failed with yours because dpkg couldn't find systemd. At least when I try to install it, if systemd is not present the install will outright fail, I don't know how to tell dpkg to ignore the post-setup. Docker containers by design don't allow systemd at all, I think there are ways to force it in but this is not how containers should work.

BUT, I realized I could unpack a deb file, strip out the systemd config contents, repack, and install, and voila, it works. Next step is to try this with your builds so I don't have to run my own :)

When I ran TC it failed with some missing dependencies (mariadb-dev for ex), and also there were no sql files in the package so the server couldn't self-scaffold. I'm guessing the scope of your builld is just the executables? I managed to fix these and ...

I got my dockerized TC to work! Your build script was essential for me to figure out how to get here, I'm going to write up a guide and put it on github. My plan is to explain how to setup a server from scratch on a linux cloud box, I'd love to base it on the builds you're doing, so it's one less thing for people to have to do. I don't suppose these's a convenient 3.3.5 data dump out there that I can also point to so people don't have to extract? :)

Link to comment
Share on other sites

There is, check trinityserver-database3.3.5, it also has a small script that will setup a db server :-)

I split that off on purpose, so it's possible to run multiple trinitycore instances sharing the same DB without lugging around multiple copies of the database. The build script does some magic to copy all the SQL files out of the github source of TC.

Nice work! It's actually quite well suited to run in docker, all of the dependencies can be just folded in one neat little container, and (not sure if you can) should you statically link the binaries, you can probably even cut out most of the surrounding Debian OS.

Oh, one last thing, the dependencies section in the build files is only build-time dependencies, you can't compile something that is an SQL client without the required header files ;-) runtime dependencies are in the DPKG definition at the bottom.

Do note BTW that I will not port the packages to Debian 11 next year, as I no longer play WoW nor run a server myself!

Link to comment
Share on other sites

@Thulium

Ah ok, that's what the database build script is for. I need to put more time into running the rest of your stuff, as it will likely take care of even more things I need. Thanks for the tips - explains the missing runtimes.

I'm not sure how much energy/time I have for this either, I get the feeling there's a bit of a shortage of build people on TC. Fortunately this project overlaps nicely with my day job, so I just treat it as educational. 

Yes, hopefully with get around to size-optimizing the container, maybe even automating building it.

Link to comment
Share on other sites

Sounds familiar, I made these packages to get 'a feel' for making software packages in general (I know, they probably are not good enough to be included in Debian or any other OS, but they have been good enough for my personal stuff and at work).

Build automation should be easy once you built the first docker image. You might want to check out Drone (https://drone.io) for a Docker integrated CI/CD solution. I use it to build some Docker images for my own personal systems.

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...