我正在尝试使用我在 Dockerfile 中指定的 centOs 上的 yum 下载 java。 拉取 centOs 镜像后,运行崩溃并抛出此错误!? 还要提一下,我的服务器实例是 AWS EC2!
Step 2/9 : RUN yum install java -y
---> Running in 39fc233aa965
CentOS Linux 8 - AppStream 184 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
The command '/bin/sh -c yum install java -y' returned a non-zero code: 1
尝试编辑你的dockerfile
FROM centos
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum -y install java
CMD /bin/bash
参考此代码
如果您还没有,您将需要 gpg 密钥:
wget 'http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm'
sudo rpm -i 'centos-gpg-keys-8-3.el8.noarch.rpm'
然后就像这样过渡一样简单:
dnf --disablerepo '*' --enablerepo=extras swap centos-linux-repos centos-stream-repos
别担心——它不会删除任何存储库,它只是暂时忽略您的所有存储库,并下载有关新镜像的信息。
此时您可能想要实际升级您的软件包:
sudo dnf distro-sync
您现在可以像往常一样使用“yum”。
前往
/etc/yum.repos.d/
cd /etc/yum.repos.d/
奔跑
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
sudo yum update -y
然后做你想做的事
我尝试将 CentOS 8 与 wsl 一起使用并得到相同的错误。解决问题的步骤(以 root 身份):
# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
# dnf distro-sync
# dnf -y install java
投票最高的答案对我不起作用(@Hashbrown)。 Dockerfile 的答案也不适合我的情况。
使用以下命令更新 AWS EC2 上的 centOS8.0:
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" \
-e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" \
/etc/yum.repos.d/CentOS-*
试试这个
来自centos
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum -y install java
CMD /bin/bash
请按照以下步骤操作:
进入/etc/yum.repos.d/目录。
cd /etc/yum.repos.d/
运行以下命令对所有 yum.repos.d 文件中的镜像列表进行哈希处理,然后将现有的 Baseurl 替换为 vault.centos.org
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
然后运行 yum update 或安装任何你想要的软件包
百胜更新-y
使用以下内容更新您的 docker 文件。应该可以。
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum update -y
我的答案必须是其他一些答案的混合体。我使用最新的(截至几天前)CentOS 和 Docker 默认映像。 (sudo失败,因为我已经在root)
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum install PACKAGE
无需更新 yum
转到
/etc/yum.repos.d/
目录。打开 .repo
文件并手动将镜像列表从 $releasever
编辑为 8-stream
。
例如:/etc/yum.repos.d/CentOS-Linux-BaseOS.repo
在 vi 中打开文件
sudo vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
评论
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#mirrorlist=http://......
在 vi 中,复制粘贴
mirrorlist=http://......
行
yy and p
取消注释并编辑复制的行,将 $releasever 替换为 8-stream
mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=$basearch&repo=BaseOS&infra=$infra
保存并退出vi
:wq
对其他 .repo 文件重复上述 5 个步骤。