Debian bookworm:apt-get 更新失败,成员“control.tar”:lzma 错误:无法分配内存

Debian bookworm:apt-get 更新失败,成员“control.tar”:lzma 错误:无法分配内存

当我在 docker 容器内运行 apt-get update 时,它​​失败并显示member 'control.tar': lzma error: Cannot allocate memory.

脚步:
启动 Debian (bookworm) docker (slim) 容器。
将本地构建的 deb 包文件集复制到正在运行的容器。
根据本地复制的文件创建本地 deb 存储库

cd /tmp/local && dpkg-scanpackages -m . > Packages
echo 'deb [trusted=yes] file:/tmp/local /' > /etc/apt/sources.list.d/00_local.list
apt-get --yes update

上述命令失败并显示

dpkg-deb (subprocess): decompressing archive './xyz_amd64.deb' (size=12723480) member 'control.tar': lzma error: Cannot allocate memory
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
dpkg-deb: error: tar subprocess returned error exit status 2
dpkg-scanpackages: error: couldn't parse control information from ./xyz_amd64.deb

并非所有机器都出现此问题。在 100 多台机器中,它出现在其中两台上。似乎有大量可用内存。

编辑1:三台不同的机器报告了相同的问题

  1. 6.1.21.1-微软标准-WSL2+
  2. 5.4.8-1.el7.elrepo.x86_64(Centos 7)
  3. 5.15.0-76-通用(Ubuntu 20.04)

答案1

问题在于 Docker 20.10.8 和 20.10.9 中的 clone3 系统调用兼容性。解决方案是迁移到20.10.10版本或更高版本2010 年 10 月 20 日发行说明。如果没有,您可能不得不求助于黑客 W/A

242   clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7fac716e4990, parent_tid=0x7fac716e4990, exit_signal=0, stack=0x7fac70ee4000, stack_size=0x7fff80, tls=0x7fac716e46c0} <unfinished ...>
243   brk(NULL <unfinished ...>
242   <... clone3 resumed>, 88)         = -1 EPERM (Operation not permitted)

相关内容