Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 避免在已安装包时出现yum错误_Shell_Amazon Ec2_Error Handling_Yum - Fatal编程技术网

Shell 避免在已安装包时出现yum错误

Shell 避免在已安装包时出现yum错误,shell,amazon-ec2,error-handling,yum,Shell,Amazon Ec2,Error Handling,Yum,我正在Linux机器上使用AWS Elastic Beanstalk,需要在.ebextensions中安装一些字体: container_commands: 01_getfont: command: sudo yum -y install http://somesite.com/rpm/webcore-fonts-3.0-1.noarch.rpm 这在第一次安装字体时效果很好 第二次我再次部署EB时,它现在给了我以下错误: 2019-01-28T23:44:14Z应用程序更新失

我正在Linux机器上使用AWS Elastic Beanstalk,需要在.ebextensions中安装一些字体:

container_commands:
  01_getfont: 
    command: sudo yum -y install http://somesite.com/rpm/webcore-fonts-3.0-1.noarch.rpm
这在第一次安装字体时效果很好

第二次我再次部署EB时,它现在给了我以下错误:

2019-01-28T23:44:14Z应用程序更新失败,退出状态为1,错误:container_命令01_getfont in.ebextensions/fonts.config失败

Loaded plugins: priorities, update-motd, upgrade-helper
Examining /var/tmp/yum-root-0Yx1DY/webcore-fonts-3.0-1.noarch.rpm: webcore-fonts-3.0-1.noarch
/var/tmp/yum-root-0Yx1DY/webcore-fonts-3.0-1.noarch.rpm: does not update installed package.
Error: Nothing to do. 

当该软件包第二次安装在同一个EC2实例上时,如何避免出现错误?

我后来找到了这个问题的答案,并将其发布在这里,以方便其他有类似问题的人

我改用重新安装:

sudo yum -y reinstall http://somesite.com/rpm/webcore-fonts-3.0-1.noarch.rpm
这将在部署的第一次和所有其他时间起作用

编辑:

如果未安装软件包,上述操作无法正常工作,重新安装将失败。我最终检测到软件包是否已安装,如果未安装,请安装,否则请重新安装:

command: sudo yum -q list installed webcore-fonts.noarch &>/dev/null && sudo yum -y reinstall http://somesite.com/rpm/webcore-fonts-3.0-1.noarch.rpm || sudo yum -y install http://somesite.com/rpm/webcore-fonts-3.0-1.noarch.rpm

对于并非真正错误的内容,Yum可以返回非零退出状态,从而导致更高级别的系统(如elasticbeanstalk)认为脚本失败

特别是,在退出状态为1时,yum有时会说“与此无关”——这可能意味着各种事情,但包括已安装所需软件包的情况

我使用yum解决脚本问题的方法是:

    yum -y install somepackage
    if [ $? -ne 1 ]; then   # Exit on any any error except 'nothing to do' 
      exit 0
    fi
一种更简单的方法是通过附加
true
exit 0
命令来忽略所有错误-但是,当无法访问Yum repo,或者Yum的元数据过期等情况下,这最终会影响您

尖端 如果要处理多个yum命令或多个错误代码,则可能需要阅读shell
trap
命令,特别是
EXIT
ERR
命令,它允许您在单个位置处理这些情况,并且可能不会在出现不需要的错误时退出。请参阅以了解更多关于此的信息

本地安装的替代方案 有关更多信息,请参阅,其中包括安装已下载的RPM时的简单替代方法