![在 18.04 docker 镜像中添加 PPA 引用“lunar”](https://linux22.com/image/1190927/%E5%9C%A8%2018.04%20docker%20%E9%95%9C%E5%83%8F%E4%B8%AD%E6%B7%BB%E5%8A%A0%20PPA%20%E5%BC%95%E7%94%A8%E2%80%9Clunar%E2%80%9D.png)
我需要gcc-10
在一个非常具体的非常旧的 18.04 docker 镜像中安装。
发生的情况是gcc-10
apt 根本找不到该包。
当使用涉及的标准程序时add-apt-repository ppa:ubuntu-toolchain-r/test
,有问题的 docker build 中的输出显示如下:
#11 [builder 8/58] RUN add-apt-repository ppa:ubuntu-toolchain-r/test
#11 sha256:986838b1775ab762834c16c4e7b70e341339109cd31b0b06b587dd05202f0842
#11 0.809 Toolchain test builds; see https://wiki.ubuntu.com/ToolChain
#11 0.809
#11 0.809 More info: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
#11 3.106 Hit:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
#11 3.106 Hit:2 http://archive.ubuntu.com/ubuntu bionic InRelease
#11 3.107 Hit:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
#11 3.108 Hit:4 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease
#11 3.109 Hit:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
#11 3.228 Get:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu lunar InRelease [23.8 kB]
#11 3.697 Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu lunar/main amd64 Packages [9892 B]
#11 3.710 Fetched 33.7 kB in 1s (52.6 kB/s)
#11 3.710 Reading package lists...
#11 DONE 4.4s
在该映像的上部基础映像和 vanilla 18.04 映像上进行干净测试运行后,该部分的相应输出(继续查找结果gcc-10
正常)为:
#10 [6/8] RUN add-apt-repository ppa:ubuntu-toolchain-r/test
#10 sha256:0712dfeb0955c88daac2c4b7efbb1f9f17f0d5e32eb738745e2506a8e5284504
#10 0.941 Toolchain test builds; see https://wiki.ubuntu.com/ToolChain
#10 0.941
#10 0.941 More info: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
#10 1.733 Hit:1 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease
#10 1.775 Hit:2 http://archive.ubuntu.com/ubuntu bionic InRelease
#10 1.785 Hit:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
#10 1.794 Hit:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
#10 1.837 Hit:5 http://security.ubuntu.com/ubuntu bionic-security InRelease
#10 1.838 Get:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease [20.8 kB]
#10 2.316 Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main amd64 Packages [50.4 kB]
#10 2.483 Fetched 71.1 kB in 1s (88.5 kB/s)
#10 2.483 Reading package lists...
#10 DONE 3.2s
如您所见,有问题的行为与提及有关,lunar
但无错误。
我很好奇是什么原因造成的,作为一个apt
文盲,我希望得到一些建议,告诉我可以做些什么来强制它获取它,bionic
因为我觉得如果我能改变这一点,我就能解决安装的问题gcc-10
。当然,这个特定的docker镜像的日子屈指可数,所以我不需要一个超级强大的解决方案。
同时,我可以做其他的事情,比如在多阶段 docker 方法中使用 gcc-10,在单独的 vanilla docker 镜像中获取并使用它,然后引入工件,但我认为这里可能有一个简单的与 apt 相关的解决方案。
答案1
通过建议解决这里(dockerfile 片段,测试,可能不会让每个命令成为自己的层)
RUN add-apt-repository ppa:ubuntu-toolchain-r/test
RUN ls -la /etc/apt/sources.list.d/
RUN cat /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-lunar.list
RUN sed 's/lunar/bionic/' /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-lunar.list > /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list
RUN cat /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list
RUN apt-get update