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