You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora 39 LXC容器中pdns-backend-mysql安装后文件缺失问题

LXC容器中pdns-backend-mysql包SQL文件缺失问题解决

问题现象

在Fedora 39 LXC容器内安装pdns-backend-mysql包后,/usr/share/doc/pdns目录下的SQL文件(如schema.mysql.sql)完全缺失。执行检查命令:

ll -a /usr/share/doc/pdns/schema.mysql.sql

返回错误:

ls: cannot access '/usr/share/doc/pdns/schema.mysql.sql': No such file or directory

但在普通Fedora 39物理/虚拟机上安装同版本包时,文件正常存在。

调试信息

启用RPM调试模式重新执行安装:

dnf install pdns-backend-mysql --rpmverbosity=debug

日志中关键异常行显示所有目标SQL文件被标记为skipnstate:

D: skipnstate 100644  1 (   0,   0)  3139 /usr/share/doc/pdns/schema.mysql.sql

该标记表示RPM判定这些文件已处于预期状态,因此跳过安装,但实际文件并未存在。

可能原因

  1. LXC容器的RPM数据库存在状态不一致,导致包状态校验错误
  2. 容器内/usr/share/doc目录被特殊挂载(如tmpfs),文件未被持久化
  3. OverlayFS等容器文件系统的状态异常,导致RPM无法正确识别文件实际存在性

解决方案

1. 强制重新安装包

直接强制覆盖安装,绕过RPM的状态校验:

dnf reinstall pdns-backend-mysql

若仍无效,使用RPM命令强制安装:

# 先下载包到临时目录
dnf download --resolve --destdir=/tmp pdns-backend-mysql
# 强制安装下载的包
rpm -ivh --force /tmp/pdns-backend-mysql-*.rpm

2. 检查并修复文件系统挂载

确认/usr/share/doc是否被临时挂载:

mount | grep /usr/share/doc

如果输出显示该目录被挂载为tmpfs,需要在容器配置中禁用该挂载(例如修改LXC配置文件中的lxc.mount.entry相关规则),然后重启容器后重新安装。

3. 重建RPM数据库

修复可能损坏的RPM状态数据库:

rpm --rebuilddb

完成后重新执行dnf reinstall pdns-backend-mysql。

4. 手动创建目标目录后重新安装

如果RPM因目录不存在误判状态,先手动创建目录:

mkdir -p /usr/share/doc/pdns
chmod 755 /usr/share/doc/pdns
dnf reinstall pdns-backend-mysql

内容的提问来源于stack exchange,提问作者JanPl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:22:17