保姆级教程:在Ubuntu 20.04上离线搞定Podman,附依赖包完整打包与避坑清单

张开发
2026/4/20 8:04:27 15 分钟阅读
保姆级教程:在Ubuntu 20.04上离线搞定Podman,附依赖包完整打包与避坑清单
保姆级教程在Ubuntu 20.04上离线搞定Podman附依赖包完整打包与避坑清单当企业内网环境或安全隔离区需要部署容器化应用时离线安装Podman成为刚需。本文将手把手带你完成从依赖分析、本地仓库构建到最终安装的全流程特别针对Ubuntu 20.04环境设计。不同于简单的命令罗列我们会深入每个环节的技术原理并提供可复用的通用方法论。1. 环境准备与依赖分析在开始之前确保你有一台能联网的Ubuntu 20.04机器作为打包机以及目标离线机器。两台机器的系统版本必须严格一致这是避免依赖地狱的关键前提。1.1 配置临时软件源首先在联网机器上添加Podman官方仓库. /etc/os-release echo deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/testing/xUbuntu_${VERSION_ID}/ / | sudo tee /etc/apt/sources.list.d/podman.list curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/testing/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add - sudo apt update注意不要修改${VERSION_ID}变量系统会自动识别为20.04。这是避免版本不匹配的第一道防线。1.2 深度依赖分析使用apt-cache depends进行递归依赖分析apt-cache depends --recurse \ --no-recommends \ --no-suggests \ --no-conflicts \ --no-breaks \ --no-replaces \ --no-enhances \ podman | grep -v i386 | grep ^\w | sort -u关键参数解析--recurse递归分析所有层级依赖--no-recommends忽略非必须的推荐包-v i386排除32位架构包sort -u去除重复依赖2. 依赖包下载与本地仓库构建2.1 批量下载依赖包创建专用目录并下载所有依赖sudo mkdir -p /opt/podman-offline cd /opt/podman-offline sudo apt-get download $(apt-cache depends ...上述完整命令...)验证下载完整性ls -l | grep -c .deb # 检查.deb包数量 du -sh . # 查看总大小正常应在50-100MB范围2.2 构建本地APT仓库安装必要工具并创建仓库索引sudo apt install -y dpkg-dev dpkg-scanpackages . | gzip -9c Packages.gz目录结构应包含/opt/podman-offline/ ├── Packages.gz ├── podman_3.0.0~0.rc1_amd64.deb ├── containernetworking-plugins_0.9.1-1_amd64.deb └── ...其他依赖包3. 离线环境部署实战3.1 准备离线安装包将整个目录打包并传输到离线机器tar -zcf podman-offline.tar.gz /opt/podman-offline # 使用U盘或内部文件服务器传输到目标机器在离线机器上解压到临时目录sudo mkdir -p /tmp/podman-offline sudo tar -zxf podman-offline.tar.gz -C /tmp/podman-offline --strip-components13.2 配置本地软件源备份原有源配置并设置本地源sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak echo deb [trustedyes] file:///tmp/podman-offline ./ | sudo tee /etc/apt/sources.list sudo rm -f /etc/apt/sources.list.d/* # 清除所有额外源更新软件包缓存sudo apt clean all sudo apt update3.3 执行离线安装安装Podman及其依赖sudo apt install -y --allow-downgrades podman验证安装podman --version podman info # 检查运行时配置4. 常见问题排查与优化4.1 依赖缺失问题处理若安装时报依赖缺失可通过以下方式诊断sudo dpkg -I /tmp/podman-offline/*.deb | grep Depends # 检查包依赖声明 sudo apt-cache showpkg podman # 查看包元数据解决方案返回联网机器使用apt-get download补下载缺失包重新运行dpkg-scanpackages将新包追加到离线目录4.2 系统服务配置Podman默认无需后台服务但需要配置# 创建用户级存储 podman system migrate # 配置镜像加速如有内部仓库 mkdir -p ~/.config/containers echo unqualified-search-registries [internal.registry] ~/.config/containers/registries.conf4.3 空间优化技巧精简离线包方法删除调试符号包*-dbgsym移除文档包*-doc使用dpkg --remove --force-remove-reinstreq清理残留配置5. 进阶构建通用离线部署方案将上述流程抽象为可重用脚本#!/bin/bash # save_as offline-pkg.sh PKG_NAME$1 DEST_DIR/opt/offline-$PKG_NAME mkdir -p $DEST_DIR cd $DEST_DIR || exit apt-get download $(apt-cache depends --recurse \ --no-recommends --no-suggests \ --no-conflicts --no-breaks \ --no-replaces --no-enhances \ $PKG_NAME | grep -v i386 | grep ^\w | sort -u) dpkg-scanpackages . | gzip -9c Packages.gz使用方法./offline-pkg.sh podman ./offline-pkg.sh nginx # 通用化支持在离线环境中同样的安装流程可以适用于任何通过APT管理的软件包。这套方法论特别适合需要批量部署的安全敏感环境如金融行业的生产服务器或政府机构的隔离网络。

更多文章