我的目标是在 Ubuntu 22.04 LTS(Jammy Jellyfish)机器上下载用于离线 Debian 11(Bullseye)服务器的软件包。
为此,我首先禁用了 /etc/apt/sources.list 和 /etc/apt/sources.list/* 中所有相关的 ubuntu 源,并添加了 debian 源列表:
deb [trusted=yes] http://deb.debian.org/debian bullseye main contrib non-free
deb-src [trusted=yes] http://deb.debian.org/debian bullseye main contrib non-free
deb [trusted=yes] http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src [trusted=yes] http://deb.debian.org/debian bullseye-updates main contrib non-free
deb [trusted=yes] http://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src [trusted=yes] http://deb.debian.org/debian bullseye-backports main contrib non-free
deb [trusted=yes] http://security.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src [trusted=yes] http://security.debian.org/debian-security/ bullseye-security main contrib non-free
通过刷新软件包列表sudo apt update
,然后使用以下命令下载相关软件包:
sudo apt-get download <Package> -t bullseye -d
确实会下载一些软件包。例如,xz-utils 将从 debian 存储库下载。其输出为apt-cache policy xz-utils
:
Version table:
> *** 5.2.5-2.1~deb11u1 500
500 http://deb.debian.org/debian bullseye/main amd64 Packages
500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages
100 /var/lib/dpkg/status
> 5.2.5-2ubuntu1 500
500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
但是,大多数情况下,apt 会尝试下载 ubuntu 版本,即使 debian 版本是唯一可用的存储库。例如,在下载 ufw 时,我得到以下输出sudo apt-cache policy ufw
:
Version table:
> *** 0.36.1-4ubuntu0.1 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://archive.ubuntu.com/ubuntu jammy-updates/main i386 Packages
100 /var/lib/dpkg/status
> 0.36-7.1 500
500 http://deb.debian.org/debian bullseye/main amd64 Packages
500 http://deb.debian.org/debian bullseye/main i386 Packages
当我尝试下载该软件包时,收到:
错误:找不到源来下载“ufw”版本“ 0.36.1-4ubuntu0.1 ”
一旦我启用 ubuntu 源,它就会下载适用于 ubuntu 的软件包,即使 debian repo 可用且具有相同的软件包。
我如何“强制” Ubuntu 下载 Debian 软件包,而不是查找仅在 Ubuntu 存储库中可用的版本?“-t bullseye”似乎不起作用。
我正在尝试使用 Bash 脚本自动执行下载过程,因此我迫切希望找到一种尽可能灵活的方法
我在 24.04 的 Docker 容器上进行了测试,得到了以下结果:
正如您所描述的,它下载了 Ubuntu 版本。但是使用
/<target>
以下版本却有效: