Ubuntu 22.04 离线安装教程(本地 APT 仓库 offline-repo)

Ubuntu 22.04 离线安装教程(本地 APT 仓库 offline-repo)

1. 目标

无网络的 Ubuntu 22.04 机器上,离线安装以下常用工具包:

bash 复制代码
vim git net-tools iproute2 iputils-ping dnsutils traceroute \
netcat-openbsd tcpdump wget curl openssh-client openssh-server rsync

方式:在联网机 制作本地 APT 仓库目录 offline-repo/(包含全部 .deb 和索引),拷到 U 盘,再拷到离线机 /opt/offline-repo/,最后通过 file: 源安装。


2. 准备条件与注意事项

  • 联网机与离线机建议同为 Ubuntu 22.04(jammy)且同架构(一般 amd64),否则容易出现依赖版本不匹配。
  • 本地仓库使用 [trusted=yes],适合内网/离线环境快速部署(不做 GPG 签名校验)。
  • 离线机后续安装时只依赖你准备的 offline-repo ,因此 .deb 要尽量齐全。

3. 联网机:制作离线仓库 offline-repo

3.1 创建工作目录

bash 复制代码
mkdir -p ~/offline-repo/debs
cd ~/offline-repo
sudo apt-get update

3.2 下载目标包及依赖(两种方式选其一)

方式 A(简单常用):下载但不安装
bash 复制代码
sudo apt-get install --download-only -y \
  vim git net-tools iproute2 iputils-ping dnsutils traceroute \
  netcat-openbsd tcpdump wget curl openssh-client openssh-server rsync

将缓存中的 .deb 收集到仓库目录:

bash 复制代码
cp -av /var/cache/apt/archives/*.deb ~/offline-repo/debs/

说明:如果你发现离线机安装时仍缺依赖,再回到联网机补齐缺的包(见"排错"章节)。

方式 B(更稳):递归解析依赖再下载(推荐更稳,但步骤多)-正常方式A就可以了
bash 复制代码
sudo apt-get install -y apt-rdepends
cd ~/offline-repo

apt-rdepends \
  vim git net-tools iproute2 iputils-ping dnsutils traceroute \
  netcat-openbsd tcpdump wget curl openssh-client openssh-server rsync \
  | grep -v "^ " \
  | grep -vE "^(PreDepends:|Depends:|Recommends:|Suggests:)" \
  | sort -u > pkglist.txt

cd ~/offline-repo/debs
xargs -a ../pkglist.txt -I{} apt-get download {}

3.3 生成本地 APT 索引(Packages.gz)

安装索引生成工具并创建索引:

bash 复制代码
sudo apt-get install -y dpkg-dev
cd ~/offline-repo/debs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

此时你的离线仓库目录结构类似:

text 复制代码
offline-repo/
  debs/
    *.deb
    Packages.gz

4. 拷贝到 U 盘

假设 U 盘挂载在 /media/$USER/USB,拷贝整个 offline-repo

bash 复制代码
cp -av ~/offline-repo /media/$USER/USB/
sync

5. 离线机:把仓库拷到 /opt 并配置本地源

5.1 从 U 盘拷到 /opt(cp -r / cp -a)

建议用 cp -a(会保留时间戳、权限等,更稳):

bash 复制代码
sudo mkdir -p /opt
sudo cp -av /media/$USER/USB/offline-repo /opt/

拷完后仓库路径应为:

text 复制代码
/opt/offline-repo/debs

你也可以用 cp -r(不如 -a 完整):

bash 复制代码
sudo cp -r /media/$USER/USB/offline-repo /opt/

5.2 配置本地 APT 源(file:)

根据最终放置路径是 /opt/offline-repo/debs,建议这样写:

bash 复制代码
echo "deb [trusted=yes] file:/opt/offline-repo/debs ./" | sudo tee /etc/apt/sources.list.d/offline.list

更新索引:

bash 复制代码
sudo apt-get update

5.3 离线安装软件

bash 复制代码
sudo apt-get install -y \
  vim git net-tools iproute2 iputils-ping dnsutils traceroute \
  netcat-openbsd tcpdump wget curl openssh-client openssh-server rsync

6. 验证与常用检查

  • 查看 APT 是否识别本地仓库:
bash 复制代码
apt-cache policy vim | cat
  • 确认本地源文件内容:
bash 复制代码
cat /etc/apt/sources.list.d/offline.list

7. 排错(离线常见问题)

7.1 apt-get update 报错找不到 Packages

  • 检查 Packages.gz 是否在你指定的目录内:

    • 例如你写的是 file:/opt/offline-repo/debs,则必须存在:
      • /opt/offline-repo/debs/Packages.gz
  • 如果你拷贝后又新增/删除了 .deb,需要重新生成索引:

bash 复制代码
cd /opt/offline-repo/debs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

(这一步不需要联网)

7.2 apt-get install 提示缺依赖包

  • 说明 offline-repo 里缺少某些 .deb
  • 解决:
    • 记下缺的包名/版本提示
    • 回到联网机 apt-get download 缺的包名
    • 拷进 offline-repo/debs/
    • 重新 dpkg-scanpackages ... > Packages.gz
    • 再拷回离线机覆盖并安装

8. 离线机最短流程(命令总结)

假设你已经把仓库拷到了 /opt/offline-repo/debs

bash 复制代码
echo "deb [trusted=yes] file:/opt/offline-repo/debs ./" | sudo tee /etc/apt/sources.list.d/offline.list
sudo apt-get update
sudo apt-get install -y \
  vim git net-tools iproute2 iputils-ping dnsutils traceroute \
  netcat-openbsd tcpdump wget curl openssh-client openssh-server rsync
相关推荐
woshihuanglaoshi6 分钟前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
java_logo2 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手12 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学12 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh14 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898615 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD15 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo15 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
TlSfoward16 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php