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
相关推荐
李广坤9 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
欧云服务器2 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
智渊AI2 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
tryCbest2 天前
数据库SQL学习
数据库·sql