完整的报错如下:

1
2
3
4
5
# service zerotier restart
Generate secret - please wait...
Error relocating /usr/bin/zerotier-idtool: _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/bin/zerotier-idtool: _ZSt28__throw_bad_array_new_lengthv: symbol not found
Error relocating /usr/bin/zerotier-idtool: _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found

原因

这个报错通常是手动更新 ZeroTier 时出现的,如果你是手动安装的,那你应该在安装时会看到这样的信息:

1
2
3
4
Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest.
Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest.
Multiple packages (libpthread and libpthread) providing same name marked HOLD or PREFER. Using latest.
Multiple packages (libstdcpp6 and libstdcpp6) providing same name marked HOLD or PREFER. Using latest.

引发这个问题的原因就是依赖库没有更新,只需要简单的更新依赖库即可!

解决方法

通过 LuCI 安装

如图,分别安装三个软件包:libgcc1libpthread6libstdcpp6
安装完成后重新安装/更新 ZeroTier

通过 opkg 安装

使用任意方法(如 SSH)连接到设备,并进入 ash 命令解释器:

1
2
3
4
> ssh root@hydrogen.mbr
root@hydrogen.mbr's password:

BusyBox v1.33.2 (2021-12-31 08:05:40 UTC) built-in shell (ash)

输入下面的命令

1
2
3
4
opkg update
opkg install libgcc1
opkg install libpthread6
opkg install libstdcpp6