如果找不到其中一个包,如何防止 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 install
或 sudo 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
我正在尝试为 Ubntu 编写一个基于 apt-get 的包安装脚本,并将包列表作为参数(如 xargs -a ./packages_list.txt sudo apt-get -y -f -m install
或 sudo 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