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
相关推荐
HIT_Weston2 小时前
103、【Ubuntu】【Hugo】搭建私人博客:搜索功能(四)
linux·运维·ubuntu
坠金2 小时前
图数据库neo4j自建及使用
数据库·neo4j
bbq粉刷匠3 小时前
MySQL 聚合函数&分组&联合查询
数据库·mysql
赵渝强老师3 小时前
【赵渝强老师】国产金仓数据库的数据库对象
数据库·postgresql·oracle·oceanbase·国产数据库
霖霖总总3 小时前
[小技巧43]MySQL MVCC 深度解析:快照读 vs 当前读
数据库·mysql
使者大牙5 小时前
【单点知识】 Python装饰器介绍
开发语言·数据库·python
数智工坊5 小时前
【操作系统-文件管理】
数据结构·数据库
oioihoii5 小时前
Oracle迁移KingbaseES实战
数据库·oracle
Ly.Leo5 小时前
时序预测开源项目TimeMachine的布署教程
深度学习·神经网络·ubuntu·开源