![gammu 1.42,gammu-smsd 服务错误,未找到 LD_LIBRARY_PATH](https://linux22.com/image/759095/gammu%201.42%EF%BC%8Cgammu-smsd%20%E6%9C%8D%E5%8A%A1%E9%94%99%E8%AF%AF%EF%BC%8C%E6%9C%AA%E6%89%BE%E5%88%B0%20LD_LIBRARY_PATH.png)
我正在尝试安装 Gammu 1.42 来在 Centos 8 上提供我的 SMS 网关。
制作、进行测试、进行安装工作正常。
LD_LIBRARY_PATH 在 /etc/profile 中配置为:
......
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:.:/usr/local/lib64
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL LD_LIBRARY_PATH
......
我通过 printenv 打印环境,找到 LD_LIBRARY_PATH。/etc/gammu-smsdrc 配置为:
......
[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
我尝试在终端中启动 gammu 命令行,它运行正常。但是当我尝试使用 systemctl 启动系统服务时,它失败了。
错误查询结果为:
[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]#
我试图找出为什么 Centos 8 系统服务加载器不使用配置的系统环境变量?并且不提供命令行 LD lib 路径参数。
我遗漏了什么?请指教!
答案1
/etc/profile
由 bash 等 shell 使用;它不用于设置 systemd 服务的环境。
要向 systemd 服务提供环境变量,请使用环境=` 在 systemd 单元文件中,例如:
Environment="LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64"
请注意,我省略了$LD_LIBRARY_PATH
并.
与您在的内容进行了比较/etc/profile
:
- 该变量将通常默认情况下为空,并且为了清晰和明确的期望,systemd 单元文件中对于如此重要的变量的任何定义都应该完全明确。
.
有点不寻常;在 systemd 单元的上下文中,它将是工作目录您可能已经知道/应该知道,在这种情况下,您可以再次明确地扩展它,以获得清晰度和明确的期望。
答案2
还有另一种方法可以解决此问题:
在 /etc/ld.so.conf.d 下添加一个新文件 gammu-smsd-1.42.0-x86_64.conf,其中只有一行:
/usr/本地/lib64
然后以root用户运行ldconfig。
重试从 systemctl 完成启动 gammu-smsd。