在离线环境中使用 apt
安装软件包需要提前准备依赖包和软件包本身,因为 apt
默认需要联网下载。
1、在联网环境中准备软件包
方法一:使用 apt download
下载单个包及其依赖
# 下载软件包(例如 nginx)及其依赖到当前目录
apt download nginx
# 手动查找并下载依赖包(需多次重复此步骤)
apt depends nginx | grep "Depends:" | awk '{print $2}' | xargs apt download
缺点:需手动处理依赖链,容易遗漏。
方法二:使用 apt-offline
工具(推荐)
# 在联网机器上安装 apt-offline
sudo apt install apt-offline
# 生成离线安装的签名文件(记录所需包信息)
apt-offline set --install-packages nginx nginx.sig
# 下载所有依赖包(根据签名文件)
apt-offline get nginx.sig --bundle nginx-bundle.zip
生成的 nginx-bundle.zip 包含所有依赖包,可直接复制到离线机器。
2、将软件包传输到离线机器
通过 U盘、移动硬盘或内网共享传输下载好的 .deb
文件或压缩包(如 nginx-bundle.zip
)。
3、在离线机器上安装软件包
方法一:直接使用 dpkg
安装
# 解压压缩包(如果使用 apt-offline)
unzip nginx-bundle.zip
# 进入解压后的目录,安装所有 .deb 文件(依赖需先安装)
sudo dpkg -i *.deb
# 修复未满足的依赖(如果有)
sudo apt --fix-broken install
方法二:使用 apt
本地仓库(更规范)
1、创建本地仓库目录:
sudo mkdir -p /var/cache/apt/archives/partial
sudo mkdir -p /local_repo
2、将所有 .deb
文件移动到本地仓库目录:
sudo mv *.deb /local_repo/
3、生成本地仓库元数据:
sudo apt-ftparchive packages /local_repo/ > /local_repo/Packages
sudo gzip -k /local_repo/Packages # 可选:生成 Packages.gz
4、配置 apt
使用本地仓库:
编辑 /etc/apt/sources.list
,添加以下行:
deb [trusted=yes] file:/local_repo ./
或创建单独文件 /etc/apt/sources.list.d/local.list
。
更新缓存并安装:
sudo apt update
sudo apt install nginx
4、验证安装
nginx -v # 检查版本
systemctl status nginx # 如果安装了服务
常见问题
依赖冲突:
1)确保离线机器的系统版本与下载包的环境一致(如 Ubuntu 20.04 的包不能用于 18.04)。
2)使用 dpkg -i --force-all
强制安装(不推荐,可能破坏系统)。
缺失依赖:
重新在联网环境中运行 apt depends
检查遗漏的包。
权限问题:
使用 sudo
执行安装命令,或确保当前用户有 /var/cache/apt/
的写入权限。
总结
1)简单场景:用 apt-offline
生成包并直接 dpkg -i
安装。
2)复杂场景:搭建本地 apt
仓库,通过 sources.list
配置后安装。
离线安装的核心是提前完整收集所有依赖,避免因缺失包导致失败。