使用docker-img安装openEuler-20.03-LTS-SP1过程中发现yum无repo同时没有vim等编辑器应对方法

问题描述

由于先前使用ISO镜像文件在VMware中安装openEuler操作系统连不上网(本人目前还未解决20211119),所以准备使用docker镜像在Ubuntu20.04和Windows10上安装。
安装完成之后,当然是习惯性的yum update,但是发现报错

Error: There are no enabled repositories in “/etc/yum.repos.d”, “/etc/yum/repos.d”, “/etc/distro.repos.d”.
在这里插入图片描述

没有办法升级,于是上网找解决方案,发现都是说修改/etc/yum.repos.d/openEuler_x86_64.repo,然后输入vim /etc/yum.repos.d/openEuler_x86_64.repo,显示没有vim这个命令

bash: vim: command not found
在这里插入图片描述

这好像就陷入了一个矛盾:我需要vim编辑repo文件以使yum能够下载,但是yum又由于没有repo地址导致无法下载vim。这就比较难受了。


问题解决

我解决问题的方式比较粗暴:直接修改tar包镜像文件中的repo文件,使其原始就存在repo地址,这样就不需要后续人为修改了。
步骤:

  1. 解压官网下的openEuler-docker.x86_64.tar.xz,得到如下图的一系列文件
    在这里插入图片描述
    我们要改的文件/etc/yum.repos.d/openEuler_x86_64.repo就在那个.tar包里,再次解压.tar包,这时候要注意,解压到一个和那一串编码不一样名字的文件夹里,因为那个解压之后,会直接覆盖原始的那个文件夹,而两个文件夹内容不一样,这样是不对的。
    在这里插入图片描述
    得到
    在这里插入图片描述
  2. 进入etc/yum.repos.d/(注意不是 /etcetc),然后,从openEuler官网上下载对应版本的repo文件,这是超链接
    在这里插入图片描述
    然后拷贝到刚才进的etc/yum.repos.d/目录下,
    在这里插入图片描述
    这样就将openEuler中yum的repo设置好了。
  3. 重新打包新建的这个文件夹,我这里是aaaaa,文件名随便设一个。
    这里打包命令在aaaaa文件夹下执行,应该是tar -cvf ../aaaaa.tar ./
    在这里插入图片描述
    打包的命令是这个,上图是错的
    在这里插入图片描述

打包完之后,原来的那个tar文件就可以删了,保留刚刚生成这个就好。
在这里插入图片描述
4. 根据新生成的tar包的SHA256校验值重命名以及更新文件内容:

  • 查看SHA256校验值
    sha256sum aaaaa.tar
    在这里插入图片描述
  • 重命名tar文件、文件夹。这里,需要将刚才打包的tar文件、那一长串名字的文件夹重命名:
    在这里插入图片描述
  • 更新两个.json文件、那一长串文件夹中json文件:
    在这里插入图片描述
    “那一长串.json”中diff_ids后sha256后面那一串改成步骤4.1生成的SHA256; repositories中latest后面改为步骤4,1生成的SHA256校验码;(懒得重新截图了…不改repositories文件) manifest.json中Layers后面的文件名改为步骤4.1生成SHA256校验码.tar。
    然后删除重命名之前的tar文件和文件夹(openEuler-docker.x86_64.tar,aaaaa.tar和aaaaa文件夹); 那一长串名字的文件夹中的json文件中id后改为步骤4.1中SHA256校验值。
    在这里插入图片描述
    在这里插入图片描述
  1. 重新将整个文件夹打包成tar文件。然后这样就可以了,在docker中重新导入这个镜像。
    在这里插入图片描述
    然后创建这个镜像的容器并运行,发现yum update可以使用,大功告成!
    在这里插入图片描述

小结

  1. docker在导入tar镜像时,会校验SHA256,因此需要将镜像文件中与SHA256有关的参数重新设置一下;

  2. 要注意文件夹的层次关系,最后自己打包出来的镜像文件的目录结构应该类似于如下:(layer.tar这个链接应该也是要改的,但是我没有改,导入镜像的时候也没有报错)
    在这里插入图片描述

  3. 创建openEuler容器的时候使用命令:

    sudo docker run -itd --name openeuler-test --privileged=true openeuler-20.03-lts-sp1:latest /sbin/init

    执行容器使用:

    sudo docker exec -it openeuler-test /bin/bash

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A91A981E

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值