应使用 apt download 下载单个 deb 包,它不解析依赖、不修改系统;若需完整依赖则用 sudo apt-get install --download-only。

apt-get 本身没有“只下载单个包且不解析依赖”的原生命令;真正能直接下载指定 .deb 文件(不安装、不查依赖、不改系统)的,是 apt download —— 它才是你该用的命令。
用 apt download 下载单个 deb 包(最轻量)
这个命令属于 apt 套件自带功能(Ubuntu 16.04+ / Debian 9+ 默认可用),不做依赖解析、不触碰 APT 缓存、不写日志、不检查已安装状态。
- 执行
apt update后再运行,确保包名能被正确识别 - 命令格式:
apt download <package-name></package-name>,例如apt download nginx - 文件默认下载到当前目录,后缀为
.deb,比如nginx_1.22.0-1ubuntu1_all.deb - 它不会下载依赖 —— 如果你需要依赖,得自己查(用
apt-cache depends --recurse --no-recommends --no-suggests <package></package>),再逐个apt download - 非 root 用户也能运行,但若目标包需从受限源获取,可能因权限不足失败(此时加
sudo)
用 apt-get install --download-only 下载包及其全部依赖
这是传统方式,适合离线部署场景:它会完整解析运行时依赖,并把所有 .deb 下载到 /var/cache/apt/archives/。
- 必须用
sudo执行,否则会报Permission denied(因为要写入系统缓存目录) - 命令格式:
sudo apt-get install --download-only <package-name></package-name>,例如sudo apt-get install --download-only curl - 它会触发
apt的完整依赖解析流程,包括更新本地包索引(如果缓存过期)、检查冲突、跳过已存在包等 - 下载完成后,文件在
/var/cache/apt/archives/,可打包带走;后续离线安装时,用sudo dpkg -i *.deb或sudo apt install ./<pkg>.deb</pkg>(后者能自动处理依赖顺序) - 注意:如果目标包已安装,且缓存中已有对应版本,
--download-only可能直接跳过下载 —— 此时先sudo apt clean再试
别踩这些坑
apt-get -d install 是旧写法(-d 已被标记为 deprecated),部分新版系统会警告或拒绝执行;apt-get download 根本不存在 —— 那是误记,实际只有 apt download。
-
apt download不下载依赖,--download-only才下依赖 —— 别指望前者“自动搞定全套” -
/var/cache/apt/archives/里的文件可能混着旧版本,建议下载前sudo apt clean清空,避免误用缓存包 - 下载路径不可配置:前者固定在当前目录,后者固定在
/var/cache/apt/archives/,没法用参数改 - 如果遇到
Unable to locate package,不是命令错,是没apt update或源里根本没这个包名(比如拼错、或包在universe等非主源里)
apt download;后者用 sudo apt-get install --download-only。中间没模糊地带,也别硬凑组合方案。











