我在 docker 上运行 ubuntu:16.04(Docker 版本 18.09.7,build 2d0083d
):
docker run -it ubuntu:16.04
我正在运行 apt -o APT::Keep-Downloaded-Packages=true install curl
应该安装 curl,而不是从 /var/cache/apt/archives
中删除 deb,但这并没有发生。软件包已安装,但 deb 未保存在缓存中(或者更确切地说,保存然后删除)。
我在我的主机上试过了:
lsb_release -a
LSB Version: core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:printing-9.20160110ubuntu0.2-amd64:printing-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
然后它按预期工作(即包已保存)。
检查了容器和主机中的 apt 版本。两者运行相同的 apt - apt 1.2.32 (amd64)
导致忽略 APT 选项
的主机和容器之间有什么不同?
最佳答案
感谢@David Maze 的评论让我来到这里。
区别就在于此。我安装的 docker 容器在 /etc/apt/apt.conf.d
中有一个名为 docker-clean
的配置文件,其中包含 3 行:
DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; }; │
APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; }; │
Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";
这个选项似乎已经覆盖了我的 APT::Keep-Downloaded-Packages=true
。然而,在删除前两行并重新使用 APT::Keep-Downloaded-Packages=true
之后,deb 被保存在文件目录中
关于docker - apt -o APT::Keep-Downloaded-Packages=true install <pkg> 不会将 debs 保留在 docker 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59284740/