当apt-get遇到无法找到软件包的安装问题时,继续出错


11

当我运行以下命令时:

sudo apt-get install vim abcde php5-cli

它失败,并显示以下消息,这是预期的行为:

E:无法找到软件包abcde`。

我要安装它vim,即使abcde继续安装php5-cli软件包时出现错误。意思是我想apt-get继续向下列出,即使找不到某些软件包。

我试过了:

sudo apt-get install --ignore-missing vim abcde php5-cli

Answers:


9

简短的回答:您实际上可能不想这样做。

这是为什么? 关于此特定功能已进行了很多讨论。这种(重复的)错误报告中有一种这样的方法,它是与之链接的一种。

错误报告中的讨论还解释说,“-ignore-missing”仅在下载软件包时出现问题时才适用,否则“ apt-get”拥有的信息应存在该软件包。此处文档中也对此进行了说明。

有解决方法吗?

如果读取前源后你仍然非常肯定你想这样做,那么,在另一方面,也有(不理想而安全的),如由用户“亚历山大Levchuk”指定的一个选项在这里

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

或者,如果您更喜欢采用最少修改的单线:

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

如果有很多包装,您可以添加,-y这样它就不会反复要求确认:

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

要么:

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

希望这可以帮助。


顺便说一句,如果像我这样使用Fish而不是Bash的人,则首先需要键入“ bash”来切换外壳。然后复制并粘贴该命令,因为由于某种原因该命令将无法在Fish shell中运行。与Bash搭配正常。
2016年

1

避免这种情况的一种方法是为每个包调用一次 apt-get :

echo package1 package2 package3 | xargs -n 1 sudo apt-get install -y

或作为功能

function install_ignore_fail { echo "$*" | xargs -n 1 sudo apt-get install -y; }

install_ignore_fail package1 package2 package3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.