This bug is not only a problem in version 0.15.3-4, but also in 0.13.1-
2, the version currently in stable, and possibly other versions. I
found a complete solution for 0.13.1-2, and part of a solution for the
version currently in 0.15.3-4.

In the .service-file of the gnunet service (normally
/usr/lib/systemd/system/gnunet.service) variable substitution is used
in the "User="-directive, which is not allowed in systemd
(https://github.com/systemd/systemd/issues/5501#issuecomment-283362610
). If you hardcode the gnunet user in this directive like I did here...

[Unit]
Description=A framework for secure peer-to-peer networking

[Service]
User=gnunet
Type=forking
ExecStart=/usr/bin/gnunet-arm -s -c /etc/gnunet.conf
ExecStop=/usr/bin/gnunet-arm -e -c /etc/gnunet.conf

[Install]
WantedBy=multi-user.target

...the systemd part works fine.

Unfortunately, there is another problem with the underlying gnunet-arm
command, which is used to start the peer. In my version the problem is
that it searches for the binary in the wrong place, which can be fixed
by specifying its location in the gnunet.conf file like this:

[path]
GNUNET_HOME = /var/lib/gnunet/
GNUNET_DATA_HOME = /var/lib/gnunet/data/
GNUNET_RUNTIME_DIR = /var/run/gnunet/

[arm]
START_SYSTEM_SERVICES = YES
START_USER_SERVICES = NO
BINARY = /usr/lib/x86_64-linux-gnu/gnunet/libexec/gnunet-service-arm 

In 0.15.3-4, gnunet-arm doesn't find the log file, which is a problem I
wasn't able to find a solution for yet.

I hope that these errors can be fixed as fast as possible, especially
regarding that these seem to be merely configuration issues.

Best regards,
Levin Engel

Reply via email to