251018-ubuntu-apt-download-nginx-apt离线下载Nginx及其所有依赖的软件包,但不会安装它们

apt-download-nginx

1
2
3
4
5
6
7
8
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks  --no-replaces --no-enhances build-essential | grep "^\w" | sort -u)
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nginx | grep "^\w" | sort -u)

sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances linux-headers-5.8.0-43-generic | grep "^\w" | sort -u)
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances linux-headers-5.15.0-46-generic | grep "^\w" | sort -u)

sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances linux-image-5.8.0-43-generic | grep "^\w" | sort -u)
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances linux-image-5.15.0-46-generic | grep "^\w" | sort -u)

这个命令的作用是下载 Nginx 及其所有依赖的软件包,但不会安装它们。让我们逐步解析这个命令的各个部分:

1. sudo apt-get download

apt-get download 是一个命令,用于下载指定的软件包,但不会安装它们。这在某些情况下非常有用,比如当你需要将软件包下载到本地,以便在没有网络的环境中安装时。

2. $(...)

这部分是一个命令替换(command substitution),它会执行括号内的命令,并将输出结果作为参数传递给外部命令。在这个例子中,它会将
apt-cache depends 命令的输出结果传递给 apt-get download

3. apt-cache depends

apt-cache depends 是一个命令,用于显示一个软件包的依赖关系。它会列出该软件包依赖的所有其他软件包。

4. --recurse

这个选项告诉 apt-cache depends 递归地列出所有依赖关系,包括间接依赖。也就是说,它不仅会列出直接依赖的软件包,还会列出这些依赖包的依赖包,依此类推。

5. --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances

这些选项用于过滤掉一些不必要的信息:

  • --no-recommends:不包括推荐的软件包。
  • --no-suggests:不包括建议的软件包。
  • --no-conflicts:不包括冲突的软件包。
  • --no-breaks:不包括破坏的软件包。
  • --no-replaces:不包括替代的软件包。
  • --no-enhances:不包括增强的软件包。

6. grep "^\w"

这个命令用于过滤输出,只保留以字母或数字开头的行。^\w 是一个正则表达式,表示匹配以字母或数字开头的行。这通常用于过滤掉一些无关的输出,比如注释或空行。

7. sort -u

这个命令用于对输出进行排序,并去除重复的行。-u 选项表示去除重复的行。

综合起来

整个命令的作用是:

  1. 递归地列出 Nginx 及其所有依赖的软件包。
  2. 过滤掉推荐、建议、冲突、破坏、替代和增强的软件包。
  3. 过滤掉无关的输出,只保留以字母或数字开头的行。
  4. 对结果进行排序,并去除重复的行。
  5. 将这些软件包下载到当前目录,但不会安装它们。

使用场景

这个命令通常用于以下场景:

  • 离线安装:当你需要在没有网络的环境中安装 Nginx 及其依赖时,可以先在有网络的环境中运行这个命令,将所有必要的软件包下载到本地,然后将这些软件包复制到目标机器上进行安装。
  • 备份:你可以使用这个命令备份 Nginx 及其依赖的软件包,以便在需要时恢复。

注意事项

  • 运行这个命令需要 sudo 权限,因为 apt-get download 需要访问系统的包管理器。
  • 下载的软件包会保存在当前目录下,你可以通过 ls 命令查看下载的文件。
  • 如果你需要安装这些软件包,可以使用 dpkg -i *.deb 命令,但可能需要解决依赖关系问题。