Hi @Zdyan, and welcome to the forum!
You can ignore #3 and #4 for now. I believe you’ll need to take care of #2 eventually but we can focus on #6, which is specific to the enigma build.
Another observation: you should not need to run docker as root with sudo. If you can’t run docker as a regular user, there is probably something that can be tweaked in your configuration, which I suggest you investigate.
So let’s focus on the error related to “librocksdb.so.5.14…”. I bet you are seeing this error when you compiled
enigma-core in one run, then exited from the container, launched it again, and then tried run the tests. Some compiled shared libraries are put in a directory that is lost between runs. Here’s what happens:
For optimization reasons, there is a component (RocksDB) that is built separately at compile time as a shared library and put in the system library folder:
/usr/local/lib. That library needs to be accessible when you run the tests. If you do all your work from compile to test/run when you bring up the container, you should not have any problems. But if you plan to bring the container up and down a few times, then you have to save those shared libraries so that remain accessible between runs. Here’s one way:
- Bring up your container, cd into
~/enigma-core/enigma-core and run
make DEBUG=1 (the debug flag is so core will be more verbose should there be any errors)
- Create the following folder
~/enigma-core/lib that will be preserved between runs because it’s inside the folder that you add as a volume to the container.
cp /usr/local/lib/librocksdb* ~/enigma-core/lib (there should be 4 different files: one real file and 3 softlinks)
- And then run `export LD_LIBRARY_PATH="$LD_LIBRARY_PATH;~/enigma-core/lib" so that we tell the system to look in this folder for shared libraries.
This last step should be valid for the session the container is up. You will need to execute it every time you bring up the container (or add it to the container .bashrc file but that is more involved at this point because you are using an already built image, and you would need build your own image first). I say stick to the first solution as we will soon provide a developer environment that will address issues like this.