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!!

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值