如果找不到其中一个包,如何防止 apt/apt-get 取消多个包的下载

How do I prevent apt/apt-get from cancellng download of multiple packages if one of them can't be found

我正在尝试为 Ubntu 编写一个基于 apt-get 的包安装脚本,并将包列表作为参数(如 xargs -a ./packages_list.txt sudo apt-get -y -f -m installsudo apt-get -y -f -m install $(cat packages_list.txt))。

可能会发生 packages_list.txt 列表中的某个软件包无法被 apt 找到。在这种情况下,应忽略该软件包,但应安装所有其他软件包。

这就是我所期望的,例如从命令 sudo apt-get -y -f -m install curl wget apt-transport-https xargs dos2unix vim 可以看出,如果 xargs 不能通过 apt、curl、wget、apt-transport-https、dos2unix found/downloaded vim 仍然安装。

但是我收到消息(德语)E: xargs kann nicht gefunden werden. ("E: xargs can't be found.") 和其他消息列表的,例如apt-transport-https,没有安装。

我的理解是,-m(或--ignore-missing)应该防止这种行为。但事实并非如此。

那么我怎样才能实现 apt 参数列表中的所有其他包仍然安装?

一个 while read 循环来安装列表中的软件包:

export DEBIAN_FRONTEND=noninteractive
while IFS= read -r package; do sudo apt -y install "$package"; done < packages_list.txt

如果某些包安装失败,安装过程将继续。

没有循环:

xargs apt list 2>/dev/null < packages_list.txt | \
awk -F'/' '/\//{print }' | xargs sudo apt install -y