Estou tentando instalar o Gammu 1.42 para servir meu gateway SMS no Centos 8.
make, make test, make install funciona bem.
LD_LIBRARY_PATH configurado em /etc/profile como:
......
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:.:/usr/local/lib64
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL LD_LIBRARY_PATH
......
Eu imprimo env por printenv, LD_LIBRARY_PATH encontrado. /etc/gammu-smsdrc configurado como:
......
[gammu]
device = /dev/ttyUSB0
model = E3131
connection = at115200
[smsd]
service = sql
driver = native_pgsql
logFIle = /var/log/gammu/smsd.log
logFormat = errorsdate
Host = xx.0.1.xx:xxxx
user = xxxx
password = xxxxx
database = xxxxx
debuglevel = 2
StatusFrequency = 60
LoopSleep = 60
DeliveryReport = sms
PhoneID = ozssc-smsd
SMSC = +614xxxxxxxx
BackendRetries = 60
Eu tentei iniciar a linha de comando gammu no terminal, funciona bem. Mas quando tentei iniciar o serviço do sistema usando systemctl, ele falhou.
resultado da consulta de erro como:
[root@Centos8Gateway etc]# systemctl status gammu-smsd.service
● gammu-smsd.service - SMS daemon for Gammu
Loaded: loaded (/usr/lib/systemd/system/gammu-smsd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2020-10-25 12:13:42 AEDT; 19s ago
Docs: man:gammu-smsd(1)
Process: 23247 ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid (code=exited, status=0/SUCCESS)
Process: 23245 ExecStart=/usr/local/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon (code=exited, status=127)
Oct 25 12:13:42 Centos8Gateway systemd[1]: Starting SMS daemon for Gammu...
Oct 25 12:13:42 Centos8Gateway gammu-smsd[23245]: /usr/local/bin/gammu-smsd: error while loading shared libraries: libgsmsd.so.8: cannot open shared object file: No such file or directory
Oct 25 12:13:42 Centos8Gateway systemd[1]: gammu-smsd.service: Control process exited, code=exited status=127
Oct 25 12:13:42 Centos8Gateway systemd[1]: gammu-smsd.service: Failed with result 'exit-code'.
Oct 25 12:13:42 Centos8Gateway systemd[1]: Failed to start SMS daemon for Gammu.
[root@Centos8Gateway etc]#
Estou tentando descobrir por que o carregador de serviço do sistema Centos 8 não usa a variável de ambiente do sistema configurada? e não fornecer parâmetros de caminho de biblioteca LD de linha de comando também.
O que eu perdi? Por favor informar!
/etc/profile
é usado por shells como o bash; ele não é usado para configurar o ambiente para serviços systemd.Para fornecer uma variável de ambiente para um serviço systemd, use Environment= ` no arquivo de unidade systemd, por exemplo:
Observe que omiti
$LD_LIBRARY_PATH
e.
comparei com o que você tem em/etc/profile
:.
é um pouco incomum; no contexto de uma unidade systemd, será o valor de WorkingDirectory que você já pode saber/deveria saber, caso em que você pode expandi-lo explicitamente, novamente, para maior clareza e expectativas claras.Existe uma outra maneira de corrigir esse problema:
Adicione um novo arquivo como gammu-smsd-1.42.0-x86_64.conf em /etc/ld.so.conf.d apenas uma linha como:
/usr/local/lib64
Em seguida, execute ldconfig pelo usuário root.
tente novamente iniciar o gammu-smsd do systemctl feito.