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

时间:2021-01-25 10:37:29

标签: list installation apt apt-get ignore

我正在尝试为 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 找到/下载>vim 仍然被安装。

但是我收到消息(德语)E: xargs kann nicht gefunden werden.(“E: xargs can't be found.”)和列表的其余部分,例如apt-transport-https,未安装。

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

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

1 个答案:

答案 0 :(得分:1)

一个 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 $1}' | xargs sudo apt install -y