Issue about the compilation

Issue #1 resolved
Quentin pierrot created an issue

Hi,

You can found the same issue HERE

But i don't know if you visit often the forum, so i post here my issue :

**Hi,

im trying to install your "mapper" on my server, but i met problems... My little story :

I followed the "COMPILE" steps (https://bitbucket.org/s_l_teichmann/mts ... COMPILE.md) :

So, libleveldb-dev is correctly installed, but the error line seems to be a libleveldb-dev problem...

My server is on "Debian GNU/Linux 7.7 (wheezy)", can you help me please ?

Your Mapper seems to be awesome...**

Thank you for your help !

Comments (17)

  1. Sascha L. Teichmann repo owner

    The COMPILE instructions says:

    On Debian Wheezy you have to install the LevelDB dev from Backports.


    The leveldb from plain Wheezy is too old.

    Add deb http://http.debian.net/debian wheezy-backports main to your /etc/apt/sources.list and then apt-get update apt-get install -t wheezy-backports libleveldb-dev

    I know this for sure because we run MTSatellite on an amd64 Debian Wheezy and it works like a breeze. :-)

    Does this help?

  2. Quentin pierrot reporter

    Ok, thank you for your quick answer ! :)

    Like you say here : https://bitbucket.org/s_l_teichmann/mtsatellite/src/default/SETUP.md - I need to edit my world.mt, i did it (i've the default settings for mtsatellite) :

    so, my world.mt

    gameid = minetestforfun_game
    backend = redis
    redis_hash = IGNORED
    redis_address = localhost
    

    and the crash report :

    Food Mod - Version 2.3
    02:27:59: ERROR[main]: ERROR: An unhandled exception occurred: Unknown map backend
    
    In thread 7f382bab7740:
    /home/quentinbd/minetest/src/main.cpp:1955: int main(int, char**): Assertion '0' failed.
    Debug stacks:
    DEBUG STACK FOR THREAD 7f382bab7740:
    #0  int main(int, char**)
    (Leftover data: #1  Dedicated server branch)
    (Leftover data: #2  void Server::fillMediaCache())
    

    Very strange, i don't understand why my map is now Unknown...

  3. Sascha L. Teichmann repo owner

    Have you re-build your Mintest server with Redis support like the SETUP say?

    On a Debian machine this would look something like this:

    apt-get install libhiredis-dev

    Check out a fresh clone or clear your cmake cache. Aftwards:

    $ cmake . -DENABLE_REDIS=1 -DRUN_RUN_IN_PLACE=1

    (+ the other options you gave it the last time you build mt)

    A 'make' later you will have Redis support and the server should not crash.

  4. Quentin pierrot reporter

    Ok...

    So i've rebuild my server after "apt-get install libhiredis-dev"

    cmake . -DENABLE_REDIS=1 -DRUN_RUN_IN_PLACE=1 -DENABLE_GETTEXT=1 -DENABLE_FREETYPE=1
    make -j$(grep -c processor /proc/cpuinfo)
    

    Recompilation : Ok

    But when i restart my server after that, it doesn't found the world directory and prefer to create and new world in ~/.minetest/worlds/xxx

    World 'minetestforfun' not available. Available worlds:
    WARNING: system-wide share not found at "/usr/local/share/minetest"
    WARNING: system-wide share not found at "/home/quentinbd/minetest/bin/../share/minetest"
    WARNING: system-wide share found at "/home/quentinbd/minetest/bin/.."
    

    Indeed, if Minetest search for a world in /.minetest/worlds/xxx, it can't find it...

    For fix this issue i moved my ~/minetest/worlds/minetestforfun/ directory to ~/.minetest/worlds/ and it works well,

    after, i changed the "map.db" path to " ~/.minetest/worlds/minetestforfun/map.db

    after all, it works, but... Is it a normal funtionnality ?

  5. Sascha L. Teichmann repo owner

    First of all I'm happy that it finally works. :-)

    I don't know if I understand your question correctly so let me explain the mechanism behind the scenes.

    If you run the Minetest server with a Redis backend (mtredisalize is essentially a Redis backend) then the concrete path to the LevelDB database file becomes unimportant for the Minetest server. The MT server only communicates via TCP to the backend.

    The mtredisalize server needs to know where the map.db database file is located. So you have to pass the path to it as a command line argument. mtredisalize _does not: have any specific clue about the typical directory of minetest worlds it's only interested in the path to the map.db.

    Hope that helps?

  6. Quentin pierrot reporter

    For the moment the server starts but clients can't connect to it... :/

    (i've edited my previous post)

    i think you don't understand my "tree view folder", i've put map.db in my worls folder because it's better for me (for backups, and everything for the world is in this folder)

    So, i need to open a TCP port for Minetest instead of UDP port before, if i understand well what you says ?


    Have you an idea for the folder of the server ? i don't want my world in /.minetest/worlds/minetestforfun/ but in /minetest/worlds/minetestforfun/ ...

    For the moment, when i start my server it find my worls in /.minetest/, this wasn't the case before :/

  7. Sascha L. Teichmann repo owner

    This is strange because after you set it all up correctly starting the MT server does not differ from starting it as usual. Clients should connect as usual. Does the port mismatch?

    Just to make sure: The mtredisalize server is running, too? What's the output of the mtredisalize server when you afterwards start the minetest server?

    How do you start your minetest server? Something like.

    $ bin/minetestserver --world worlds/minetestforfun

  8. Quentin pierrot reporter

    i start my server with a small shell script :

    #!/bin/sh
    while true; do
    /home/quentinbd/minetest/bin/minetestserver --worldname minetestforfun --gameid minetestforfun_game
    done
    

    and it works well before Redis :(

    The mtredisalize server is started :

    quentinbd@Minetest:~/gopath/bin$ ./mtredisalize                               \
    >   -host=localhost                          \
    >   -interleaved=true                        \
    >   -change-url=http://localhost:8808/update \
    >   -change-duration=10s                     \
    >   /home/quentinbd/minetest/worlds/minetestforfun/map.db
    2014/11/14 17:03:28 Server started at 127.0.0.1:6379
    2014/11/14 17:03:28 Doing garbage collection every: 24h0m0s
    2014/11/14 17:03:45 Client accepted from: 127.0.0.1:53169
    2014/11/14 17:03:45 Client accepted from: 127.0.0.1:53170
    2014/11/14 17:03:45 Client accepted from: 127.0.0.1:53171
    2014/11/14 17:14:46 client disconnected
    2014/11/14 17:14:46 client disconnected
    2014/11/14 17:14:46 client disconnected
    2014/11/14 17:28:01 Client accepted from: 127.0.0.1:53172
    2014/11/14 17:28:14 client disconnected
    

    I think the line Client accepted is good and mtredisalize works well...

  9. Sascha L. Teichmann repo owner

    Would you mind to try to start the server with the --world=/path/to/world/minetestforfun instead of the --worldname minetestforfun ?

    You maybe have found a bug in the minetest server.

    The output of mtredisalize looks pretty good ... So it's a minetest thing only.

  10. Quentin pierrot reporter

    err...

    17:39:20: ERROR[main]: Unknown command-line parameter "--world=/home/quentinbd/minetest/worlds/minetestforfun/"
    
    17:39:20: ERROR[main]: Unknown command-line parameter "--world=/home/quentinbd/minetest/worlds/minetestforfun"
    
  11. Sascha L. Teichmann repo owner

    Sorry ... --world seems to be an option not supported by your server version. I've to look into the source of minetest to see what is happening here and why this all fails.

    A bit frustrating, but I'm determined to find out what's wrong there. ;-)

    Would you mind to post your world.mt file? Maybe you've configured more than one backend? Just blind guessings.

  12. Sascha L. Teichmann repo owner

    --world=/home/quentinbd/minetest/worlds/minetestforfun/ should read --world /home/quentinbd/minetest/worlds/minetestforfun/

    without the '='

    minetestserver --help

  13. Quentin pierrot reporter

    Ok, thank you for the good syntax :)

    The server is started, but clients still can't conenct to it...

    You say before, about the TCP port, client now connect to my server with the TCP port because of redis/leveldb ? so i need to open my tcp port and close my udp port on 30001 ?

  14. Sascha L. Teichmann repo owner

    The clients talk to the minetest server via udp. This stays the same as ever. No need to open tcp instead.

    The minetest server talks to the redis backend (mtredisalize) via tcp ... which works in your setup. The output of mtredisalize proofs this.This has nothing to do with the clients.

    What does "netstat -uln" say? Is udp port 30001 open? If not you may try to add "--port 30001" to the start arguments of the minetest server.

  15. Quentin pierrot reporter

    it's not a port problem, it works now, !!!

    So :

    With redis and the latest build from minetest, i don't know why, but we need to define the port when we start the server.

    Before, i don't define it and it takes the 30 001 instead of the 30 000... Now i define the 30 001 port and it works :)

    Thank you for your help, i hope my players enjoy MTSatellite :D

  16. Sascha L. Teichmann repo owner

    Hurray! \o/

    BTW: Looking at your map I see that you don't use the cool transparency feature, which allows water, glass and so to have a transparent look. My bad ... I've forgotten to document it but I will add a description to the SETUP instructions.

    Basically you need to add the option --transparent=true in the calls of mtseeder and mtwebmapper and add a forth component value < 255 to the respective entries in colors.txt

  17. Log in to comment