Ubuntu 20.04 离线安装podman
由于本人是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相关推荐
- Ubuntu 20.04上安装Git方法
Git是世界上最受欢迎的分布式版本控制系统,被许多开源和商业项目使用.它使您可以与其他开发人员在项目上进行协作,跟踪代码更改,还原到上一阶段,创建分支等. Git最初是由Linux内核的创建者Linu ...
- ubuntu使用fail2ban_如何在Ubuntu 20.04上安装和配置Fail2ban
暴露给Internet的任何服务都有遭受恶意软件攻击的风险. 例如,如果您在可公开访问的网络上运行服务,则攻击者可以使用暴力手段尝试登录您的帐户. Fail2ban是一种工具,可通过监视服务日志中的恶 ...
- ubuntu19 安装git_如何在Ubuntu 20.04上安装Git
Git是世界上最受欢迎的分布式版本控制系统,被许多开源和商业项目使用.它使您可以与其他开发人员在项目上进行协作,跟踪代码更改,还原到上一阶段,创建分支等. Git最初是由Linux内核的创建者Linu ...
- linux :YOLO5配置(ubuntu 20.04 下安装运行yolov5)
ubuntu 20.04 下安装运行yolov5 新建文件夹,安装python 安装 python-pip: 克隆YOLOv5Git code 配置YOLO环境 安装yolov5: ubuntu 20 ...
- ubuntu linux安装控制面板,在Ubuntu 20.04上安装Ajenti控制面板的方法
本文介绍在Ubuntu 20.04服务器上安装Ajenti控制面板的方法,下面介绍的安装方法最大的好处是它完全自动化的. 一.更新Ubuntu 20.04系统 确保您正在全新安装Ubuntu 20.0 ...
- go 写文件_如何在 Ubuntu 20.04 上安装 Go
本文最先发布在: 如何在 Ubuntu 20.04 上安装 Gowww.itcoder.tech Go,通常被称为 golang,它是一门由 Google 创建的现代化的开源编程语言,它允许你构建实 ...
- ubuntu安装ftp_如何在 Ubuntu 20.04 上安装 Webmin
本文最先发布在: 如何在 Ubuntu 20.04 上安装 Webminwww.itcoder.tech Webmin 是一个开源控制面板,它允许你通过简单易用的 Web 界面,就可以管理你的 Li ...
- 如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)
本文最先发布在: https://www.itcoder.tech/posts/how-to-install-xrdp-on-ubuntu-20-04/ Xrdp 是一个微软远程桌面协议(RDP)的开 ...
- 如何在 Ubuntu 20.04 上安装 Java
本文最先发布地址 如何在 Ubuntu 20.04 上安装 Java 在这个指南中,我们将会描述如何在 Ubuntu 20.04 上安装 Java. Java 是世界上最流行的编程语言之一,被用来构建 ...
最新文章
- H.264 基础及 RTP 封包详解
- Crash+Kdump 分析内核崩溃内存转储文件之环境搭建
- lvds接口屏线安装图解_液晶屏LVDS线类型图文讲解
- 我的HTML学习记录(七)
- 【MM模块】MRP Running — Lot Size 批量大小
- java session丢失_跨域造成session丢失
- rust(72)-match匹配
- 程序员每天少吃 能活120岁
- 谈谈如何在面试中发掘程序猿的核心竞争力 什么是程序员的核心竞争力?
- css float属性
- 家居风水大全[ZT:http://sssyyyccc.blog.hexun.com/2641355_d.html]
- Macbook pro如何设置触控栏
- 玩转华为数据中心交换机系列 | 汇总
- hive sql 分组随机取数
- 安装nltk库及nltk_data数据包
- R语言 trim=0.1 tirm=0.2 什么意思呢?
- 微型计算机最早出现在第三代计算机中对吗,3月计算机一级试题及答案(2)
- 计算机教学训练的有效性,提高对口单招计算机专业技能训练的有效性.doc
- python调用微信客户端_python模拟微信客户端打开链接Python Logging 模块研究
- mysql mm,将MySQL时间从HH:MM:SS转换为HH:MM
热门文章
- echarts城市地图加标注
- gis 六边形网格_ArcGIS中实现指定面积蜂窝(正六边形)方法
- 计算机四屏故障维修,液晶显示器有哪些常见故障 液晶显示器常见故障及维修方法...
- 性能测试基础——内存
- MiKTeX手动更新宏包超详细,东北大学编译原理第三次作业
- pytorch中tf.nn.functional.softmax(x,dim = -1)对参数dim的理解
- 腾讯收购Foxmail的意图
- win10安装linux虚拟机并配置shell工具连接
- the storage of information of web app
- canvas制作印章