如何 apt-get 安装多个包而不停止(如果未找到)?

如何 apt-get 安装多个包而不停止(如果未找到)?

我正在编写一个使用 apt-get install 安装各种软件包的 bash 脚本。但是,我注意到如果有一行内容:

sudo apt-get install package1 package2 package3

如果其中一个软件包未找到,则其他软件包均不会安装。如何让它在找不到其中一个软件包的情况下继续运行?

提前致谢。

答案1

我建议一个apt-get选择

sudo apt-get --ignore-missing install $list_of_packages

但请注意,缺少的依赖关系不容忽视,即使您使用了,也--force可能会得到一个损坏的系统。

答案2

for i in package1 package2 package3; do
  sudo apt-get install $i
done

答案3

这是一个真正有效的解决方案(不同于接受的答案)并解决了正确答案

在调用 之前apt install,先从列表中过滤掉不存在的包。可以通过运行 来获取可安装包的列表apt-cache --generate pkgnames,然后输入grep要安装的包,并将xargs结果输入apt install。完整命令如下所示:

apt-cache --generate pkgnames \
| grep --line-regexp --fixed-strings \
  -e package1 \
  -e package2 \
  -e package3 \
  … \
| xargs apt install -y

答案4

将每个包作为单独的命令而不是单个命令进行安装,这样如果由于未找到或其他错误而导致安装失败,则不会阻止其他包的安装。为此,您可以使用如下所示的“for”循环。此外,-y如果安装大量包,请记住使用该标志,以避免yes为每个包输入繁琐的内容。

INSTALL_PKGS="pk1 pk2 pk3 pk4 pk5 ... and so ... on ..pk_gogol"
for i in $INSTALL_PKGS; do
  sudo apt-get install -y $i
done

相关内容