Ubuntu下载离线安装包的方法详解

 更新时间:2026年11月08日 14:29:28   作者:A-刘晨阳  
还在为没有外网无法安装软件发愁,本文详细讲解Ubuntu系统下载离线安装包的两种方法:使用apt -d自动下载所有依赖,或使用apt download仅下载单个包,了解两者优缺点,学会批量下载和安装脚本,轻松应对内网环境部署,需要的朋友可以参考下

前言

下载离线包的时候需要在有可以 ping 通外网(如 baidu、ubuntu 官方源)的环境中下载离线包;

相信大家也遇到过这种问题,在没有外网的情况下,想安装一个服务却安装不了,这期我就教大家如何在 Ubuntu 系统中下载离线安装包,并在内网中使用;

第一种方法:使用 apt + 参数安装 – 【推荐】包含依赖

  • 首先先讲解一下 apt 下载离线安装包的参数及解析;

apt 下载离线安装包的参数及解析;

参数解析
install下载并安装某个软件包
-d / --download-only仅下载安装包,不进行安装
-o Dir::Cache::archives=路径指定下载的安装包存放路径(apt 默认存放到 /var/cache/apt/archives/)
–reinstall重新下载已安装的包(解决“已安装不下载”的问题)

实例:

Ubuntu 直接下载安装 lrzsz 命令,下载完并不会有安装包残留,直接就会安装上;

apt install -y lrzsz

Ubuntu 下载离线安装包 lrzsz 命令,不进行安装,只需要离线安装包,并且放到 /application/lrzsz 目录中;

注意:如果已经 install 安装了此命令,那么下载的时候就会提示 “已经是最新版本了”,所以下载的时候如果已经安装了,就需要先卸载,在进行下载;或者是开一个ubuntu镜像单独下载。

下载命令:

  • 直接下载,不指定目录
apt install -d -y lrzsz

下载的 .deb 文件会集中存放在 /var/cache/apt/archives/ 目录下。
建议执行前先运行 apt clean 清空旧缓存,避免混入旧版本文件。

  • 下载离线安装包并指定下载存储路径
apt install -d -y lrzsz -o Dir::Cache::archives=/application/lrzsz/

使用如上命令就可以把 deb 离线包下载到本地,之后使用的时候就可以上传到内网环境中,直接 dpkg -i 包名 安装就可以了。

⚠️ 注意:apt 的 -d 下载依赖时,如果依赖包在系统中已经安装过,则不会重复下载。若想强制下载全部依赖,可以先在干净的容器/虚拟机中执行下载操作。

第二种方法:使用 apt download 命令【只下载需要的安装包(不包含依赖)】

使用 apt download 命令,它只下载指定的单个软件包,不解析依赖,也不需要 root 权限。

  • 命令如下:
apt download 要下载的安装包
  • apt download 参数
参数解析
(无)只下载指定的 .deb 包,不包含依赖,默认下载到当前目录
--print-uris只打印软件包的下载地址,不实际下载

由于 apt download 不支持直接指定目录,通常先 cd 到目标目录再执行下载。

实例:

  • 单独只下载一个 curl 命令安装包且不安装服务,把安装包存到 /application/curl/ 目录下;
# 切换到要下载的路径
cd /application/curl/
# 下载curl安装包
apt download curl

下载完之后切换到这个目录看一下,可以看到离线包了。

如果需要连同依赖一起下载,可以先用 apt-cache depends 包名 查看依赖列表,再循环 apt-get download 下载;或者使用 apt-rdepends 工具递归分析依赖;或者直接使用方法一下载(包含依赖)。

两者区别及优缺点:

  • 举实例两者下载的区别:
  • 示例1:使用 apt + 参数安装
apt install -y curl -d -o Dir::Cache::archives=./
  • 示例2:apt-get download 命令下载
apt-get download curl 

两者的区别很明显了,apt download 下载的少,是因为它不会下载依赖包,只会下载需要的命令包;

两者优缺点:

apt + 参数 优点:
1、会自动下载安装所需软件的所有依赖包,保证离线安装包的完整性;
2、无需额外安装工具,可直接使用命令 + 参数下载。

apt + 参数 缺点:
1、如果服务器上已经安装过这个命令或者包,下载会提示已经安装过,所以下载时需要使用空环境(或加 --reinstall)。

apt download 优点:
1、不管有没有安装都会下载下来离线包;
2、下载目录可控(先 cd)。

apt download 缺点:
1、不会下载依赖,离线安装时容易缺少依赖导致失败;

  • 总结:

各有利弊,还是推荐使用第一种方式(配合 --reinstall 或在干净环境中执行)。

批量下载软件离线包及批量安装【推荐使用】

使用脚本来实现批量下载及安装

  • download.sh(批量下载脚本)
#!/bin/bash

## 定义要下载的软件包列表
packages=(
    "vim"
    "unzip"
    "tar"
    "make"
    "net-tools"
    "gcc"
    "g++"
    "locales"
)

## 遍历软件包列表,下载每个软件包
for package in "${packages[@]}"; do
    ## 创建以软件包名命名的目录
    mkdir -p "$package"

    ## 使用 apt 下载软件包及其依赖
    echo "正在下载 $package ..."
    apt install -y "$package" -d -o Dir::Cache::archives="./$package"
done

echo "所有软件包下载完成!"
  • install.sh(批量安装脚本)
#!/bin/bash

## 定义要安装的软件包列表
packages=(
    "vim"
    "unzip"
    "tar"
    "make"
    "net-tools"
    "gcc"
    "g++"
    "locales"
)

## 遍历软件包列表,安装每个软件包
for package in "${packages[@]}"; do
    ## 进入目录
    cd "$package" || continue

    ## 使用 dpkg 安装软件包
    echo "正在安装 $package ..."
    dpkg -i *.deb

    ## 返回上级目录
    cd ..
done

echo "所有软件包安装完成!"

如果 dpkg -i 安装时提示依赖缺失,可以进入对应目录执行:

apt install -f --no-download

或者先把所有 deb 包放在同一个目录下,执行:

dpkg -i *.deb
apt -f install

附:CentOS 与 Ubuntu 命令对照表

功能CentOS (yum)Ubuntu (apt)
在线安装yum -y install 包名apt install -y 包名
仅下载不安装yum -y install 包名 --downloadonly --downloaddir=路径apt install -y 包名 -d -o Dir::Cache::archives=路径
只下载单个包(无依赖)yumdownloader --destdir=路径 包名apt-get download 包名
安装本地包rpm -ivh 包名.rpmdpkg -i 包名.deb
修复依赖yum -y install 依赖apt -f install
已安装想重新下载无直接参数,需干净环境加 --reinstall

到此这篇关于Ubuntu下载离线安装包的方法详解的文章就介绍到这了,更多相关Ubuntu下载离线安装包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux下Doris单点部署实践

    linux下Doris单点部署实践

    这篇文章主要介绍了linux下Doris单点部署实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • ubuntu18.04部署nfs服务全过程

    ubuntu18.04部署nfs服务全过程

    文章简述了搭建网络共享服务的步骤:安装服务端,配置共享目录参数(rw读写、sync同步、no_subtree_check提升性能),启动服务,客户端挂载,特别强调目录权限设置对服务运行的重要性
    2025-08-08
  • 阿里云CentOS挂载新数据盘的方法

    阿里云CentOS挂载新数据盘的方法

    本篇文章主要介绍了阿里云CentOS挂载新数据盘的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Apache Kafka 分区重分配的实现原理解析

    Apache Kafka 分区重分配的实现原理解析

    这篇文章主要介绍了Apache Kafka 分区重分配的实现原理,本文结合 2.0.0 版本的 Kafka 源码,详细介绍了 Kafka 分区副本重分配的流程和逻辑,需要的朋友可以参考下
    2022-07-07
  • linux下使用 du查看某个文件或目录占用磁盘空间的大小方法

    linux下使用 du查看某个文件或目录占用磁盘空间的大小方法

    下面小编就为大家带来一篇linux下使用 du查看某个文件或目录占用磁盘空间的大小方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Linux服务器自定义登陆提示信息方式

    Linux服务器自定义登陆提示信息方式

    Linux系统中,可以通过配置/etc/issue、/etc/issue.net和/etc/motd文件来设置登录提示信息,便于用户了解系统配置和文件路径
    2024-11-11
  • 使用autoconf生成Makefile并编译工程的步骤

    使用autoconf生成Makefile并编译工程的步骤

    今天小编就为大家分享一篇关于使用autoconf生成Makefile并编译工程的步骤,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux搭建Docker环境全过程

    Linux搭建Docker环境全过程

    这篇文章主要介绍了Linux搭建Docker环境全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Linux中“!”你不知道的惊叹用法总结

    Linux中“!”你不知道的惊叹用法总结

    这篇文章主要给大家介绍了关于Linux中“!”你不知道的惊叹用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Linux内核设备驱动之内核的时间管理笔记整理

    Linux内核设备驱动之内核的时间管理笔记整理

    今天小编就为大家分享一篇关于Linux内核设备驱动之内核的时间管理笔记整理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论