在使用基于Debian或Ubuntu等Linux发行版时,apt是我们最常用的软件包管理工具。它极大地简化了软件的安装、升级和移除过程。通常,我们使用 apt install 命令来一步到位地完成下载和安装。然而,在某些特定场景下,我们可能只需要获取软件包的安装文件(通常是 .deb 格式),而无需立即进行安装。这时,apt download 命令就派上了用场。

本文将围绕 apt download 这个特定功能,详细解答与它相关的各种疑问,帮助您深入理解并有效利用这个命令。

什么是 apt download?

apt download 的基本作用是什么?

简单来说,apt download 命令的唯一目的就是从配置好的软件仓库中下载指定的软件包文件,并将下载好的 .deb 文件保存到您当前所在的目录,而不会进行安装。它是一个专注于“获取文件”的工具,与 apt install 不同,后者会处理依赖关系并完成安装过程。

apt download 下载的是什么文件?

它下载的是编译好的二进制软件包文件,对于Debian/Ubuntu系列系统而言,这种文件格式是 .deb

apt download 和 apt install 有什么区别?

  • apt install:下载软件包及其所有必要的依赖项,并自动完成配置和安装过程,使软件立即可用。
  • apt download:只下载指定的单个软件包的 .deb 文件到当前目录,不会下载依赖项,也不会进行任何安装或配置操作。

为什么使用 apt download?

在什么情况下我需要只下载而不安装软件包?

使用 apt download 命令通常是为了满足以下几种需求:

  • 离线安装:您可以在联网的计算机上下载软件包文件,然后将其传输到没有网络的计算机上进行离线安装。
  • 建立本地软件包仓库:如果您管理多台配置相似的计算机,可以下载常用软件包构建一个本地的软件包集合,供局域网内的其他机器快速安装,减少重复的网络下载。
  • 检查软件包内容:在安装之前,您可能希望检查 .deb 文件内部包含了哪些文件、脚本或元数据,以便了解其结构或进行审计。
  • 获取特定版本的软件包:如果您需要一个旧版本或非最新版本的软件包进行测试、回滚或兼容性处理,可以使用 apt download 指定版本号下载。
  • 软件分发或共享:如果您想方便地与他人分享某个软件包,直接提供 .deb 文件比指导他们添加软件源并安装可能更直接。
  • 调试或分析问题:在诊断软件包安装或升级问题时,获取原始的 .deb 文件可能有助于分析原因。

apt download 从哪里下载?下载到哪里?

apt download 从哪里获取软件包文件?

apt download 命令会遵循您系统中配置的软件源(Repositories)。这些源通常定义在 /etc/apt/sources.list 文件以及 /etc/apt/sources.list.d/ 目录下的文件里。apt 会根据这些配置的网络地址(通常是HTTP、HTTPS或FTP服务器)去寻找并下载您指定的软件包。它会自动选择最佳的镜像站点(如果配置了多个)。

apt download 下载的文件保存在哪里?

这是 apt download 命令的一个非常重要的特性:它会将下载好的 .deb 文件直接保存到您执行命令时所在的当前工作目录。它不会像 apt install 那样默认将文件存放在 /var/cache/apt/archives/ 这样的缓存目录中(尽管在内部下载过程中可能临时使用缓存机制,但最终目标是将文件放到当前目录)。

如何指定下载到其他目录?

apt download 本身没有一个直接的参数来指定输出目录。最简单有效的方法是:

  • 在执行 apt download 命令之前,先使用 cd 命令切换到您希望保存文件的目标目录。

例如,如果您想将软件包下载到 /tmp/downloads 目录下,可以这样做:

cd /tmp/downloads
apt download package_name

如何使用 apt download?

apt download 的基本命令格式是什么?

基本用法非常直观:

apt download <package_name>

例如,要下载 vlc 播放器的软件包文件:

apt download vlc

执行后,如果 vlc 软件包在您的软件源中存在,一个名为 vlc_版本号_架构.deb 的文件就会出现在当前目录下。

如何下载特定版本的软件包?

如果您需要下载某个软件包的特定版本,可以在软件包名称后面加上等号 = 和完整的版本号字符串。要查找可用的版本号,可以使用 apt list -a <package_name> 命令。

示例:查找并下载特定版本

  1. 查找 vim 软件包所有可用的版本:

    apt list -a vim

    命令输出会列出所有源中可用的 vim 版本,例如:
    vim/bionic,now 2:8.0.1453-1ubuntu1.1 amd64 [installed]
    vim/bionic 2:8.0.1453-1ubuntu1 amd64
    vim/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64
    这里的版本号是 2:8.0.1453-1ubuntu1.12:8.0.1453-1ubuntu1 等。

  2. 下载其中一个特定版本,例如 2:8.0.1453-1ubuntu1

    apt download vim=2:8.0.1453-1ubuntu1

    请注意,版本号必须与 apt list -a 显示的完全一致。

apt download 会下载软件包的依赖吗?

不会apt download 命令只负责下载您明确指定的那个软件包文件。它不会自动识别、查找或下载该软件包所依赖的其他软件包。如果您需要离线安装,在目标机器上运行 dpkg -i downloaded.deb 时,很可能会因为缺少依赖而失败。您需要手动查找并下载所有依赖项的 .deb 文件,或者在安装时让 aptaptitude 解决依赖问题。

如何查找软件包的依赖?

可以使用 apt show <package_name> 命令来查看软件包的详细信息,其中包括它依赖(Depends)、推荐(Recommends)或建议(Suggests)的其他软件包。

apt show vlc

在输出信息中找到“Depends:”一行,它会列出该软件包硬性依赖的其他软件包。

我可以一次下载多个软件包吗?

apt download 命令一次只能处理一个软件包名称。如果您需要下载多个软件包,您需要针对每个软件包名称执行一次 apt download 命令。或者,您可以结合 shell 脚本和循环来自动化这个过程,但核心是每次调用处理一个软件包。

apt download package1
apt download package2
apt download package3

如果软件包不存在或有错误怎么办?

如果指定的软件包名称在您的软件源中找不到,或者版本号不正确,apt download 命令会报错并提示“无法定位软件包”或类似的错误信息。

如果网络连接有问题,下载过程可能会中断或失败,并给出相应的网络错误提示。

使用 apt download 需要多少存储空间?

我需要多少磁盘空间来存放下载的文件?

所需的磁盘空间取决于您要下载的软件包的大小以及下载文件的数量。每个 .deb 文件的大小都不一样,小的可能只有几十KB,大的可以有几百MB甚至几GB(例如大型桌面环境或开发工具集)。

因为 apt download 将文件直接存放在当前目录,您只需要确保您执行命令的那个分区有足够的空间来容纳所有下载的 .deb 文件即可。

如何知道软件包的大小?

在使用 apt download 之前,您可以使用 apt show <package_name> 命令来查看软件包的详细信息,其中包括它的大小(Installed-Size 表示安装后的大小,而 Size 通常表示下载的 .deb 文件大小)。

apt show firefox

查找输出中的 “Size:” 或 “Download-Size:” 字段,它会告诉您下载这个软件包大约需要多少空间。

其他相关问题

apt download 和 apt-get download 有什么区别?

在功能上,apt downloadapt-get download 是高度相似的,它们都用于下载软件包文件而不安装。apt 是比较新的命令行工具,旨在提供更友好的用户体验,它整合了 apt-getapt-cache 的一些常用功能。对于简单的下载任务,两者的效果通常是一样的。

在大多数情况下,使用 apt download 是推荐的,因为它属于较新且持续发展的 apt 系列工具。

下载完 .deb 文件后如何安装?

使用 dpkg 命令可以安装下载好的 .deb 文件:

sudo dpkg -i <downloaded_package_file.deb>

请将 <downloaded_package_file.deb> 替换为您实际下载的文件名,例如 vlc_版本号_架构.deb

需要注意的是,如前所述,dpkg -i 不会自动处理依赖关系。如果在安装过程中提示缺少依赖项,您可以使用 apt --fix-broken install 命令来尝试解决依赖问题:

sudo apt --fix-broken install

这个命令会检查系统中未满足的依赖,并尝试从软件源下载并安装它们。

apt download 可以下载源代码包吗?

不能直接使用 apt download 下载源代码包。要下载软件包的源代码,您应该使用 apt source 命令:

apt source <package_name>

这个命令会下载软件包的源代码文件(通常是一个 .tar.gz.tar.bz2 文件以及一些补丁和描述文件),并将其解压到当前目录下的一个子目录中。这与 apt download 获取二进制安装包是不同的目的和操作。

通过上述解答,希望能帮助您全面理解 apt download 命令的功能、使用场景、操作方法以及与其他相关命令的区别,从而更灵活地管理您的软件包。


apt下载