【问题标题】:vagrant supressing non-zero exit staus for shell provisionervagrant 抑制 shell 配置程序的非零退出状态
【发布时间】:2018-03-10 06:18:33
【问题描述】:

我在 vagrant 中有一个脚本配置器。我的盒子是 ubuntu 64bit Precise。我的脚本的相关行如下所示:

sudo bash -c 'echo "deb https://oss.oracle.com/debian/ unstable main non-free" >/etc/apt/sources.list.d/oracle.list'
wget -q https://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -

sudo apt-get update -qq

错误代码是:

W: GPG error: https://oss.oracle.com unstable Release: The following signatures were invalid: KEYEXPIRED 1378511808 KEYEXPIRED 1378511808 KEYEXPIRED 1378511808
W: Failed to fetch https://oss.oracle.com/debian/dists/unstable/main/binary-amd64/Packages  The requested URL returned error: 404

W: Failed to fetch https://oss.oracle.com/debian/dists/unstable/non-free/binary-amd64/Packages  The requested URL returned error: 404

E: Some index files failed to download. They have been ignored, or old ones used instead.
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

问题在于,尽管我知道 repo 的密钥已过期并且不适用于 64 位架构(仅限 32 位)。我仍然想从中安装相关的软件包(这是可能的,使用:<package_name>:i386)。 但是在更新期间由于非退出状态 vagrant 停止并且不再继续我的脚本。

有没有办法(无论是 vagrant 还是 apt-get 方面)让 vagrant 高兴并继续执行我的脚本?

【问题讨论】:

    标签: shell vagrant apt-get


    【解决方案1】:

    您可以使用; true 将错误状态强制设为

    sudo sh -c "apt-get update -qq ; true"
    

    【讨论】:

    • 感谢您的建议。仍然必须使用| 而不是;。查看更新的答案。
    • 因为; vagrant 将检测到非零状态 => 将再次失败。然而,| vagrant 必须一次性执行所有命令 => 没有机会检测到不在链末尾的命令的退出状态。这就是为什么。请注意,如果您现在保留答案。这是不正确的。
    • @PeterButkovic:你能检查一下吗:sudo sh -c 'apt-get update -qq ; true'?关键是你用shell覆盖了非零退出代码的命令; vargrant 没有发现任何可疑之处。而| true 是错误的,因为你在管道之前丢失了命令的标准输出。
    • @PeterButkovic:谢谢你,彼得!
    • @BenJohnson:有几种方法:ver > nulcmd /c "exit /b 0"set "errorlevel="。试试看
    【解决方案2】:

    比 Igor 的建议稍微简单的方法是使其成为布尔语句:

    apt-get update -qq || true
    

    这样可以避免调用不必要的子shell。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 2022-06-21
      相关资源
      最近更新 更多