C.C.Nemo
C.C.Nemo
发布于 2026-08-29 / 0 阅读
0
0

飞牛 OS (FnOS) 误执行 apt --fix-broken install 导致 Samba 损坏与 trim.so 丢失的修复记录

飞牛 OS (FnOS) 误执行 apt --fix-broken install 导致 Samba 损坏与 trim.so 丢失的修复记录

在使用 飞牛 OS (FnOS) 管理 NAS 时,如果通过终端手动安装或更新软件包,可能会遇到 APT 依赖报错。若直接执行 sudo apt --fix-broken install,极易导致系统内置的定制版 Samba 服务被意外卸载,进而引发网络共享瘫痪。


以下是本次故障的完整起因、分析、修复过程及最终结果,方便记录与复盘。


一、 问题现象与故障起因

1. 现象

  • SMB 网络共享突然无法连接,smbd 服务停运。

  • 查看 Samba 配置文件与日志,发现系统找不到指定的 VFS 插件:

    /usr/lib/x86_64-linux-gnu/samba/vfs/trim.so: No such file or directory

2. 根本原因

  • 源冲突与自动卸载: FnOS 的 Samba 是基于 Debian 12 编译的定制版本(如 4:4.22.8+dfsg-0+deb13u1~bpo12+trim.0...),其中打包了 FnOS 专用的 VFS 模块 trim.so

  • 依赖自动裁决机制: 当执行 apt --fix-broken install 时,APT 在尝试解决 Debian 官方源与 FnOS 定制源(repo.fnnas.com)之间的版本依赖冲突时,选择了删除包冲突源头——即直接卸载了 FnOS 的 samba 核心套件,并尝试用 ksmbd-tools 替代。

  • 文件清空: samba 被卸载后,/usr/lib/x86_64-linux-gnu/samba/vfs/trim.so 随之被物理删除。而 smb.conf 中依然保留有 vfs objects = ... trim 配置,导致 Samba 服务因缺少必要的 VFS 模块而彻底无法启动。

二、 解决过程

修复的核心思路是:清理残留的旧版 Debian 冲突包 → 重新拉取并强制安装 FnOS 仓库的定制 Samba 套件 → 恢复 trim.so 动态库 → 重新激活服务。


1.清理残留的旧版本冲突包:

在直接重新安装 Samba 时,系统提示 samba-ad-provision (2:4.17.12...) 与 FnOS 的 samba (4:4.22.8...) 发生版本互斥。需要先完全清除旧版依赖包:


Bash

sudo apt purge samba-ad-provision

2.重新安装 FnOS 官方 Samba 套件:

清除冲突包后,重新通过 APT 安装 Samba 及相关组件。此时 APT 会自动从 FnOS 官方源(repo.fnnas.com)拉取带有 +trim 标识的最新定制版本:


Bash

sudo apt install samba samba-vfs-modules samba-common-bin

3.确认 VFS 核心模块恢复:

检查 trim.so 文件是否已正常写回系统路径:


Bash

ls -l /usr/lib/x86_64-linux-gnu/samba/vfs/trim.so

输出结果显示文件已存在:-rw-r--r-- 1 root root ... trim.so


4.重启与验证 Samba 服务:

解除服务屏蔽,启动 smbd 并加载配置文件:


Bash

sudo systemctl unmask smbd
sudo systemctl enable --now smbd
sudo systemctl status smbd

使用 Samba 自带的语法检测工具验证配置:


Bash

testparm

5.系统环境善后清理:

  1. 自动清理多余的孤立依赖包:


Bash

sudo apt autoremove -y
  1. 修复 ldconfig 报出的 /usr/local/lib/libzmq.so.5 is not a symbolic link 警告(将非标准实体库文件修正为规范的软链接):


Bash

ln -sf /usr/local/lib/libzmq.so.5.2.6 /usr/local/lib/libzmq.so.5
ln -sf /usr/local/lib/libzmq.so.5.2.6 /usr/local/lib/libzmq.so
sudo ldconfig

三、 修复结果

  1. Samba 服务完全复原: systemctl status smbd 显示状态为 active (running),进程正常运行。

  2. VFS 模块正常加载: testparm 解析 smb.conf 成功,vfs objects = trim_perms full_audit trim 顺利通过校验,没有再报缺失文件错误。

  3. 系统依赖恢复干净: 卸载了无用的中间依赖,并修正了 /usr/local/lib 下动态链接库的软链接,ldconfig 刷新后无任何报错或警告。

四、 总结与经验

  • NAS 定制系统注意事项: FnOS 等类 NAS 系统为了实现特定的存储/文件系统功能,常会对内核及底层服务(如 Samba、ZFS、Docker 等)进行深度打补丁和二次编译。

  • 避坑建议: 切勿随意在 NAS 宿主机中直接运行全局 apt upgradeapt --fix-broken install。遇到依赖报错时,应仔细查看 APT 将要 REMOVE(卸载) 的软件包清单;若发现包含系统核心组件,需先单独清理导致冲突的第三方/旧版软件包,确保定制源的版本优先被正确安装。


评论