如何解决如果找不到多个软件包中的一个,如何防止 apt/apt-get 取消下载多个软件包
我正在尝试为 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 和 找到/下载>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 $1}' | xargs sudo apt install -y
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。