【问题标题】:Why I cannot run `apt update` inside a fresh ubuntu:22.04?为什么我不能在新的 ubuntu:22.04 中运行“apt update”?
【发布时间】:2022-09-30 15:41:08
【问题描述】:

我目前无法在新的ubuntu:22.04(代号jammy)中运行apt update

协议

$ docker --version
Docker version 20.10.2, build 2291f61

$ docker run --init --rm -it ubuntu:22.04
root@123456789:/# apt update

观察到的

$ docker run --init --rm -it ubuntu:22.04
root@6444bf2cb8b4:/# apt update
Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [90.7 kB]            
Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [90.7 kB] 
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [90.7 kB]             
Get:5 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]       
Get:7 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]           
Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]             
Fetched 20.2 MB in 1s (17.6 MB/s)                                                           
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke \'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\'
E: Sub-process returned an error code
root@6444bf2cb8b4:/# 

预期的

apt updateubuntu:20.04 基本图像一样传递...

注意:与apt-get install 相同的问题...

参考:https://hub.docker.com/_/ubuntu

  • 您需要安装最新的docker。在我的情况下,安装版本 20.10.14 有帮助。它不适用于20.10.8
  • 很好,这对我有帮助。更新 docker-ce 对我有用。

标签: docker ubuntu


【解决方案1】:

似乎这与Glibc >= 2.34 使用系统调用clone3 有关...

所以你需要Docker >= 20.10.9 来修复它。

参考:https://github.com/moby/moby/pull/42681
参考:https://pascalroeleven.nl/2021/09/09/ubuntu-21-10-and-fedora-35-in-docker/

【讨论】:

  • v20.10.9 不工作,更新版本解决了问题
【解决方案2】:

我遇到了同样的问题。这是我的战术解决方法。

对于上下文...

我正在一个 Gitpod 实例中工作。

$ docker --version
Docker version 20.10.12, build e91ed57
$ docker pull ubuntu:22.04
$ docker run --rm -it ubuntu:22.04 /bin/bash

root@2fcf92fb7c84:/# apt update
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [90.7 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [90.7 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [90.7 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
Fetched 20.2 MB in 2s (11.1 MB/s)
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
E: Sub-process returned an error code

快速纳米安装...

尽管出现上述错误消息,但更新足以安装nano。我忽略了nano 安装末尾的误导性错误消息。

root@3958950e9c57:/# apt install nano
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
  :
E: Problem executing scripts DPkg::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
E: Sub-process returned an error code

我的修复...

我使用 nano 编辑 /etc/apt/apt.conf.d/docker-clean,注释掉第二行 (APT::...)。我随后在第 1 行遇到了类似的错误消息 (DPkg::...);所以,它也被注释掉了。

一起删除docker-clean 可能没问题;但是现在,我已经留下了一条线。

'//' 和 '#' 都可以用来注释行。

root@3958950e9c57:/# nano /etc/apt/apt.conf.d/docker-clean

  .. nano session not shown ..

root@3958950e9c57:/# cat /etc/apt/apt.conf.d/docker-clean
# 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 "";

结果 ...

由现在注释掉的行产生的令人困惑的消息消失了。

root@beab61fbde20:/# apt update
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done

需要改进...

更好的解决方案是修复我已注释掉的行。我无法找到正确的编辑;所以,只是把这行注释掉了。

在码头工人...

我使用sed 代替nano

FROM ubuntu:22.04
USER root

RUN sed -i -e 's/^APT/# APT/' -e 's/^DPkg/# DPkg/' \
      /etc/apt/apt.conf.d/docker-clean

然后,标记调整后的 Ubuntu 映像以供本地使用。

docker build -t fixed-ubuntu:22.04 -f Dockerfile .

【讨论】:

  • 我使用 docker v20.10.17 build 100c70180f 遇到了这个问题。我在 macOS 12.4 上。这个答案帮助我解决了这个问题,但我仍然想知道为什么会这样。
  • 我使用与@user1052313 相同的规格但使用macos 10.13.6 High Sierra 遇到了这个问题。仍然无法修复它。我什至尝试删除 docker-clean 但没有用
【解决方案3】:

我将 docker 引擎升级到版本 20.10.14 并解决了问题。

【讨论】:

    【解决方案4】:

    我有 docker 20.10.18(最新的写作时间)没有工作,20.10.14 它开始工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      相关资源
      最近更新 更多