由于本人是linux小白,所以安装过程遇到一些命令,不明白就会查询记录下来。写了1~6步。您可以直接看7,8,9步。

1. deb是什么

deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb

dpkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu、Knoppix 等。

2. sudo tee是什么

通过 sudo tee 命令实现

Tee 命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的 stdin。简单的说就是把数据重定向到给定文件和屏幕上(下图来自互联网):

下面的命令中通过 sudo tee 把 ls 命令的输出写入文件:

$ sudo ls -al /root | sudo tee /root/test.txt > /dev/null

其中的 > /dev/null 阻止 tee 把内容输出到终端:

3. curl是啥

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

不带有任何参数时,curl 就是发出 GET 请求。


$ curl https://www.example.com

-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。


$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet

上面命令向www.example.com发出 GET 请求,服务器返回的内容会在命令行输出。

4. sudo apt-key add -

apt-key命令用于管理Debian Linux系统中的软件包密钥。每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。

apt-key list          #列出已保存在系统中key。
apt-key add keyname   #把下载的key添加到本地trusted数据库中。
apt-key del keyname   #从本地trusted数据库删除key。
apt-key update        #更新本地trusted数据库,删除过期没用的key。

5. sudo apt update

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

列出所有可更新的软件清单命令:sudo apt update

6. 基本概念

  • OCI -> CRI / CNI
  • buildah 镜像构建
  • skopeo 镜像管理
  • podman 容器管理

7.  ubuntu离线安装podman --- 先来下载deb及其依赖并打包。

基本上参考的https://blog.csdn.net/michaelwoshi/article/details/94185132 和https://podman.io/getting-started/installation

https://podman.io/getting-started/installation   官网

. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/testing/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:testing.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/testing/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt-get update -qq
sudo apt-get -qq -y install podman

这里不要自作主张的修改${VERSION_ID}为20.04!!! 就完全按照官网给的上面的命令执行就行。这里要注意,不要执行最后一条sudo apt-get -qq -y install podman命令,因为我不想直接在线安装。我是先通过前四条命令,联网把 Podman debian package repository添加到 apt里。

执行完echo, sudo tee那条,你会发现/etc/apt/sources.list.d下多了一个文件“devel:kubic:libcontainers:testing.list”,该文件指向podman的在线repository,就是那个链接https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/testing/xUbuntu_${VERSION_ID}, 在线安装的时候,linux会读取该文件去找repository,安装podman的包以及其依赖。但是离线安装的时候,如果你也是和我一样安装在同一台虚拟机(我是先联网下载打包,然后离线安装下载好的包。成功后,再去别的虚拟机安装下载好的包),那么你在准备离线安装前,一定要把这个文件“devel:kubic:libcontainers:testing.list” 先remove掉,否则它又会想联网安装。报错找不到包。

执行完curl | sudo apt-key add -以及sudo apt-get update,注意这里我把-qq去掉了,我们不需要联网安装,所以去掉-qq。 至此已经把podman package repository更新到了apt里。

然后

然后列出添加的podman源中软件包

ll  /var/lib/apt/lists/*kubic*

然后执行 apt-cache madison podman 或者 apt-cache policy podman 来 将列出所有来源的版本

然后找到podman依赖的包:找到依赖的包用apt-cache depends podman来获取

虽然用这个命令可以找到少量依赖包,但是没法download,会报错。

还是得用https://blog.csdn.net/michaelwoshi/article/details/94185132 提到的命令。

所以接下来是 sudo mkdir -p /root/podmanDeps

然后su切换到root账户下

然后cd root

然后cd podmanDeps

然后执行 apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances podman=3.0.0~0.rc1 | grep -v i386| grep "^\w" | sort -u)

然后ll 查看podmanDeps下是否有了已经下载的依赖包

然后执行dpkg-scanpackages . | gzip -9c > Packages.gz 结果报错需要按照dpkg-dev

然后我又执行了apt install dpkg-dev

然后又执行了dpkg-scanpackages . | gzip -9c > Packages.gz,然后执行ll查看一下是否生成了Packages.gz

然后回到root目录,然后执行压缩命令tar -zcf podmanDeps.tar.gz podmanDeps,把目录podmanDeps下所有文件整个打包。然后执行ll查看下是否压缩成功

以上已经完成安装包及依赖的打包。下面将尝试把自己机器断网,然后安装该包到虚拟机

8.  ubuntu离线安装podman --- 断网,离线安装刚才的包。

现在开始断网。然后在同一台虚拟机ubuntu上离线安装上面打好的podman包。

先切换到root目录下,看到打好的包podmanDeps.tar.gz, 然后把包解压到/tmp下,注意:不能解压在/root 目录下,否则会报没有读取权限!

然后去看/tmp下是否有了这个包

然后执行cp /etc/apt/sources.list    /etc/apt/sources.list.bak 去备份 /etc/apt/sources.list

然后执行echo  >  /etc/apt/sources.list ,我看执行这个是要清空现有的 /etc/apt/sources.list

然后执行vi   /etc/apt/sources.list  添加如下语句

#########################################

deb [trusted=yes] file:///tmp/podmanDeps/    ./

#########################################

然后执行apt-get clean all

然后执行apt-get update,执行完这条命令,报错如下:

我发现它居然还想联网去下载,我猜想是我没删除/etc/apt/sources.list.d的文件“devel:kubic:libcontainers:testing.list”,所以默认它还是去读了这个文件,尝试联网方式更新。所以我就remove了该文件。重新执行apt-get clean all, 以及apt-get update,这次成功了。看到下面的图片,说明你也成功了

然后开始安装,执行命令apt -y install podman

安装完成,执行 podman --version 检查是否安装成功

9. 清理工作

执行 cp  /etc/apt/sources.list.bak   /etc/apt/sources.list  ,还原仓库文件

执行 rm -rf /etc/apt/sources.list.bak ,删除临时备份文件

执行rm  -rf  /tmp/podmanDeps, 删除临时安装包。 记住/root目录下你还有一份压缩包呢。

恭喜恭喜,你完成了离线安装podman!!

Ubuntu 20.04 离线安装podman相关推荐

  1. Ubuntu 20.04上安装Git方法

    Git是世界上最受欢迎的分布式版本控制系统,被许多开源和商业项目使用.它使您可以与其他开发人员在项目上进行协作,跟踪代码更改,还原到上一阶段,创建分支等. Git最初是由Linux内核的创建者Linu ...

  2. ubuntu使用fail2ban_如何在Ubuntu 20.04上安装和配置Fail2ban

    暴露给Internet的任何服务都有遭受恶意软件攻击的风险. 例如,如果您在可公开访问的网络上运行服务,则攻击者可以使用暴力手段尝试登录您的帐户. Fail2ban是一种工具,可通过监视服务日志中的恶 ...

  3. ubuntu19 安装git_如何在Ubuntu 20.04上安装Git

    Git是世界上最受欢迎的分布式版本控制系统,被许多开源和商业项目使用.它使您可以与其他开发人员在项目上进行协作,跟踪代码更改,还原到上一阶段,创建分支等. Git最初是由Linux内核的创建者Linu ...

  4. linux :YOLO5配置(ubuntu 20.04 下安装运行yolov5)

    ubuntu 20.04 下安装运行yolov5 新建文件夹,安装python 安装 python-pip: 克隆YOLOv5Git code 配置YOLO环境 安装yolov5: ubuntu 20 ...

  5. ubuntu linux安装控制面板,在Ubuntu 20.04上安装Ajenti控制面板的方法

    本文介绍在Ubuntu 20.04服务器上安装Ajenti控制面板的方法,下面介绍的安装方法最大的好处是它完全自动化的. 一.更新Ubuntu 20.04系统 确保您正在全新安装Ubuntu 20.0 ...

  6. go 写文件_如何在 Ubuntu 20.04 上安装 Go

    本文最先发布在: 如何在 Ubuntu 20.04 上安装 Go​www.itcoder.tech Go,通常被称为 golang,它是一门由 Google 创建的现代化的开源编程语言,它允许你构建实 ...

  7. ubuntu安装ftp_如何在 Ubuntu 20.04 上安装 Webmin

    本文最先发布在: 如何在 Ubuntu 20.04 上安装 Webmin​www.itcoder.tech Webmin 是一个开源控制面板,它允许你通过简单易用的 Web 界面,就可以管理你的 Li ...

  8. 如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)

    本文最先发布在: https://www.itcoder.tech/posts/how-to-install-xrdp-on-ubuntu-20-04/ Xrdp 是一个微软远程桌面协议(RDP)的开 ...

  9. 如何在 Ubuntu 20.04 上安装 Java

    本文最先发布地址 如何在 Ubuntu 20.04 上安装 Java 在这个指南中,我们将会描述如何在 Ubuntu 20.04 上安装 Java. Java 是世界上最流行的编程语言之一,被用来构建 ...

最新文章

  1. H.264 基础及 RTP 封包详解
  2. Crash+Kdump 分析内核崩溃内存转储文件之环境搭建
  3. lvds接口屏线安装图解_液晶屏LVDS线类型图文讲解
  4. 我的HTML学习记录(七)
  5. 【MM模块】MRP Running — Lot Size 批量大小
  6. java session丢失_跨域造成session丢失
  7. rust(72)-match匹配
  8. 程序员每天少吃 能活120岁
  9. 谈谈如何在面试中发掘程序猿的核心竞争力 什么是程序员的核心竞争力?
  10. css float属性
  11. 家居风水大全[ZT:http://sssyyyccc.blog.hexun.com/2641355_d.html]
  12. Macbook pro如何设置触控栏
  13. 玩转华为数据中心交换机系列 | 汇总
  14. hive sql 分组随机取数
  15. 安装nltk库及nltk_data数据包
  16. R语言 trim=0.1 tirm=0.2 什么意思呢?
  17. 微型计算机最早出现在第三代计算机中对吗,3月计算机一级试题及答案(2)
  18. 计算机教学训练的有效性,提高对口单招计算机专业技能训练的有效性.doc
  19. python调用微信客户端_python模拟微信客户端打开链接Python Logging 模块研究
  20. mysql mm,将MySQL时间从HH:MM:SS转换为HH:MM

热门文章

  1. echarts城市地图加标注
  2. gis 六边形网格_ArcGIS中实现指定面积蜂窝(正六边形)方法
  3. 计算机四屏故障维修,液晶显示器有哪些常见故障 液晶显示器常见故障及维修方法...
  4. 性能测试基础——内存
  5. MiKTeX手动更新宏包超详细,东北大学编译原理第三次作业
  6. pytorch中tf.nn.functional.softmax(x,dim = -1)对参数dim的理解
  7. 腾讯收购Foxmail的意图
  8. win10安装linux虚拟机并配置shell工具连接
  9. the storage of information of web app
  10. canvas制作印章