提测失败, unable to create the private pkgRedirects


报错信息:
failed to run cmake
cmake failed,CMake Error: Unable to (re)create the private pkgRedirects directory:,/home/miniob/miniob_test/players/build/CMakeFiles/pkgRedirects,

  1. 已经尝试过先前通过的commit, 同样执行失败,报错相同。
  2. git链接也试过,是正常的,没有过期。
2 个赞

了解了解

1 个赞

1.清理重新构建一下,可能有损坏
2.检查一下目录权限问题

1 个赞
  不是代码问题,是 CI 的 build 目录被污染了。 证据是之前能过的 commit 现在也挂,代码没变、环境变了。

CMake 要重建 build/CMakeFiles/pkgRedirects 目录,但旧构建残留的脏文件无法覆盖 —— 典型的环境状态泄漏。
可以在 cmake 步骤前强制清 build 目录:
rm -rf /home/miniob/miniob_test/players/build
mkdir -p /home/miniob/miniob_test/players/build
cd /home/miniob/miniob_test/players/build
cmake … && make
如果改不了 CI 脚本(评测平台),就找管理员清理构建缓存或重新触发构建。
可能某次构建中途崩溃,留下了清不掉的残留物,后续所有构建都受影响。 就是说在构建命令开头加 rm -rf build && mkdir build 就能差不多行

1 个赞

需要更多日志。

1 个赞

pkgRedirects目录是CMake在构建过程中用来存放包重定向信息的临时目录。无法创建这个目录,通常意味着:

测试环境的磁盘空间已满——这是最可能的原因,因为连CMake的临时目录都写不进去了

文件系统权限被更改——测试账号的写入权限可能出了异常

inode耗尽——小文件太多,占满了文件系统的inode

为什么之前的Commit也会失败
5100104和fbb7e0d3的区别在于:

fbb7e0d3:之前跑通过,说明代码本身没问题

5100104:最新提交,执行失败

如果连通过的老Commit重新提测都失败,说明不是你的代码变更导致的,而是底层的测试环境已经出现了故障。

解决方案
方案一:在提测页面尝试强制重置(推荐先试)
有些训练营的提测页面有一个"重置环境"或"清理缓存"的按钮/选项。如果没有,可以尝试:

在提测表单里,把分支名和Commit ID都留空,然后提交

这会触发平台从你的仓库默认分支重新拉取,并从头构建一个全新的工作目录

确认不是你的代码问题
你提到"先前通过的老commit重新提测失败"——这已经是最好的证据了。但如果你还想从自己这边做最后的确认,可以在自己的开发机上执行一次完整的构建流程:

bash
mkdir -p /tmp/miniob_test
cd /tmp/miniob_test
git clone <你的仓库地址>
cd miniob
bash build.sh
如果能正常构建完成,那就100%确认是测试环境的问题,不用再纠结代码侧的原因了

1 个赞