BUG现象:2026年3月12日将飞牛从1.1.8升级至最新版本1.1.23,升级后备份飞牛出错。其他都正常,看电影也正常,备份手机ok,备份飞牛就不行,显示加载失败
本人已自行修复,问题和修复过程详细总结在这里(见附件PDF),请求官方查看并修复bug。
附件:Trim 备份服务(backup_service)修复文档.pdf*
希望官方看到后能给与回复并尽快完成修复,以免后续升级重复出现此问题。
# Trim 备份服务(backup_service)修复文档
# 飞牛(Trim)备份服务`backup_service`加载失败问题修复文档
## 一、问题发生原因总结
本次飞牛备份服务(部署在Wyse 3030瘦客户机,Debian 12系统)启动失败(提示“加载失败”、`systemctl status`显示`exit code 127`),核心是**多层依赖链断裂+路径配置缺失**,具体原因如下:
1. **系统库断链**:飞牛系统升级后误删`samba-libs`/`libsmbclient`的核心文件,导致软链接失效(如`libsmbclient.so.0`指向的`libsmbclient.so.0.7.0`、`libsamba-util.so.0`指向的`libsamba-util.so.0.0.1`缺失);
2. **私有库路径缺失**:飞牛定制私有框架库`libframework.so.2.9`(路径`/usr/trim/lib`)未加入程序的运行时库搜索路径(RPATH),程序无法识别;
3. **包状态异常**:`samba-libs`包处于半安装(`hi`)状态,依赖的子库未正确配置,触发连锁依赖缺失;
4. **库缓存未更新**:修复后的库文件未被系统缓存识别,导致程序仍无法加载。
## 二、完整修复操作说明
### 2.1 环境说明
- 设备:Wyse 3030瘦客户机
- 系统:Debian 12(x86_64)
- 核心故障程序:`/usr/trim/bin/backup_service`
- 故障现象:程序启动报“cannot open shared object file”,服务状态`activating (auto-restart) (Result: exit-code)`
### 2.2 前置准备(权限+目录)
`Bash
# 切换到root用户(必须)
sudo -i
# 创建临时修复目录(统一存放包和解压文件)
mkdir -p /tmp/samba_fix /tmp/samba_extract /tmp/samba_extract_samba_libs
cd /tmp/samba_fix
2.3 步骤1:下载缺失的系统库包(匹配版本)
下载Debian 12归档源的 samba-libs和 libsmbclient包(适配版本 4.17.12+dfsg-0+deb12u1):
# 下载samba-libs包(含libsamba-util等子依赖)
wget http://snapshot.debian.org/archive/debian/20240101T000000Z/pool/main/s/samba/samba-libs_4.17.12+dfsg-0+deb12u1_amd64.deb
# 下载libsmbclient包(含libsmbclient.so.0.7.0)
wget http://snapshot.debian.org/archive/debian/20240101T000000Z/pool/main/s/samba/libsmbclient_4.17.12+dfsg-0+deb12u1_amd64.deb
# 验证下载结果(有.deb文件则成功)
ls -l /tmp/samba_fix/*.deb
若wget下载失败:手动在浏览器打开上述链接下载包,通过U盘传到 /tmp/samba_fix目录。
2.4 步骤2:修复libsmbclient断链(核心系统库)
# 解压libsmbclient包(提取缺失的libsmbclient.so.0.7.0)
dpkg-deb -x /tmp/samba_fix/libsmbclient_4.17.12+dfsg-0+deb12u1_amd64.deb /tmp/samba_extract
# 复制目标文件到系统库目录(补全断链)
cp /tmp/samba_extract/usr/lib/x86_64-linux-gnu/libsmbclient.so.0.7.0 /usr/lib/x86_64-linux-gnu/
# 修复文件权限(与系统库一致)
chmod 644 /usr/lib/x86_64-linux-gnu/libsmbclient.so.0.7.0
chown root:root /usr/lib/x86_64-linux-gnu/libsmbclient.so.0.7.0
# 验证修复结果(软链接指向有效文件)
ls -l /usr/lib/x86_64-linux-gnu/libsmbclient.so.0*
正常输出示例:
lrwxrwxrwx 1 root root 21 Oct 10 2023 libsmbclient.so.0 -> libsmbclient.so.0.7.0
-rw-r--r-- 1 root root 189568 Mar 13 00:40 libsmbclient.so.0.7.0
2.5 步骤3:修复samba-libs子依赖断链(libsamba-util)
# 解压samba-libs包(提取libsamba-util.so.0.0.1)
dpkg-deb -x /tmp/samba_fix/samba-libs_4.17.12+dfsg-0+deb12u1_amd64.deb /tmp/samba_extract_samba_libs
# 复制缺失的libsamba-util.so.0.0.1到系统目录
cp /tmp/samba_extract_samba_libs/usr/lib/x86_64-linux-gnu/libsamba-util.so.0.0.1 /usr/lib/x86_64-linux-gnu/
# 修复权限+更新系统库缓存(关键)
chmod 644 /usr/lib/x86_64-linux-gnu/libsamba-util.so.0.0.1
chown root:root /usr/lib/x86_64-linux-gnu/libsamba-util.so.0.0.1
ldconfig
# 验证修复结果
ls -l /usr/lib/x86_64-linux-gnu/libsamba-util.so.0*
2.6 步骤4:配置程序RPATH(补全所有库路径)
通过 patchelf给 backup_service添加系统库+飞牛私有库路径(解决路径缺失):
# 安装patchelf(已安装则跳过)
apt install -y patchelf
# 设置永久RPATH(包含系统库+飞牛私有库)
patchelf --set-rpath /lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/trim/lib /usr/trim/bin/backup_service
# 验证RPATH配置(必须包含3个路径)
patchelf --print-rpath /usr/trim/bin/backup_service
正常输出:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/trim/lib
2.7 步骤5:验证程序独立启动(核心验证)
# 直接运行程序,无报错则依赖全部修复
/usr/trim/bin/backup_service
正常输出:SPDLOG: create spdlog success!(程序后台启动成功,无库缺失报错)
2.8 步骤6:重启备份服务并验证状态
# 清除之前的失败状态+重启服务
systemctl reset-failed backup_service
systemctl stop backup_service
systemctl start backup_service
# 查看最终服务状态
systemctl status backup_service
正常输出(服务常驻运行):
● backup_service.service - Basic Backup Service(V0.1.0)
Loaded: loaded (/etc/systemd/system/backup_service.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-03-13 01:30:00 CST; 10s ago
Main PID: 10001 (backup_service)
Tasks: 10 (limit: 1900)
Memory: 50.1M
CPU: 4.0s
CGroup: /system.slice/backup_service.service
**─10001 /usr/trim/bin/backup_service
2.9 步骤7:功能验收(飞牛备份功能验证)
-
重启Wyse 3030设备:reboot;
-
登录飞牛Web管理面板(地址:http://[设备IP]:5666);
-
进入「备份」模块:
- 新建备份任务(如备份到U盘/局域网共享盘);
- 执行任务,确认能正常加载、运行、完成备份;
- 查看备份日志,无报错即功能完全恢复。
三、兜底方案(服务仍无法启动时)
若上述步骤仍无法启动服务,直接通过命令手动备份飞牛数据(核心需求兜底):
# 1. 挂载U盘(替换/dev/sda1为实际U盘设备名,用lsblk查看)
mount /dev/sda1 /mnt/usb
# 2. 完整复制飞牛数据到U盘
cp -r /fnnas/data/* /mnt/usb/
# 3. 验证备份结果
ls /mnt/usb/
# 4. 安全卸载U盘
umount /mnt/usb
四、后续建议
-
关闭自动更新:登录飞牛Web面板→系统设置,关闭「自动系统更新」,避免升级再次删除库文件/破坏软链接;
-
定期检查:每月执行以下命令检查库文件状态,提前发现断链:
ls -l /usr/lib/x86_64-linux-gnu/libsmbclient.so.0*
ls -l /usr/lib/x86_64-linux-gnu/libsamba-util.so.0*
-
兜底备份:每季度通过U盘/局域网共享手动备份一次飞牛数据,避免服务故障导致数据风险;
-
官方适配:联系飞牛官方获取「Wyse 3030专属备份服务修复包」,从底层解决程序与系统的兼容问题。
五、关键修复要点回顾
- 核心是补全系统库断链文件(
libsmbclient.so.0.7.0、libsamba-util.so.0.0.1);
- 必须给程序添加飞牛私有库路径(
/usr/trim/lib)到RPATH;
ldconfig更新系统库缓存是修复后生效的关键;
- 程序独立启动输出
SPDLOG: create spdlog success!是依赖修复完成的核心标志。
(注:文档部分内容可能由 AI 生成)