【问题标题】:sudo yum install or reinstallsudo yum install 或重新安装
【发布时间】:2019-07-18 12:35:10
【问题描述】:

我正在通过 EB 将我的 nodejs 应用程序部署到 Linux EC2 上,并且在 .ebextensions 中我需要安装字体包并且我必须使用 yum:

container_commands:
  01_getfont: 
    command: sudo yum -y install http://li.nux.ro/download/nux/dextop/el7/x86_64/webcore-fonts-3.0-1.noarch.rpm

不幸的是,虽然这是第一次工作,但如果我再次重新部署它第二次就不能工作,它会抱怨包已经在那里。

所以我要做的就是使用这个:

command: sudo yum -y reinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/webcore-fonts-3.0-1.noarch.rpm

不幸的是,虽然这适用于第二次,依此类推,但如果包不存在,则第一次不起作用,并给出错误:

Error: Problem in reinstall: no package matched to remove.

这让我发疯了。

有没有办法解决这个问题?不太擅长 Linux bash 脚本,如果第一次使用这个命令,我可以喜欢这个命令吗?

我可以创建一个 bash 脚本:

    #!/bin/bash

    sudo yum -y install http://li.nux.ro/download/nux/dextop/el7/x86_64/webcore-fonts-3.0-1.noarch.rpm

等等……

【问题讨论】:

  • 能否在install 命令之前包含remove 命令?
  • 如果包不在第一个位置,会删除失败吗? @l'L'l 我实际上在想我们是否可以抑制失败并继续下一步......
  • 是的,完全正确...不幸的是,我不熟悉EB,或者您可以向它提供哪些指令,尽管如果您可以包含任何类型的子句(例如if. .. 或者如果失败就转到下一个命令)那我也是这么想的。你能从命令中运行bash 脚本吗?这可能是最好的路线,然后您可以将所有内容都包含在内。
  • 是的,我可以运行一个 bash 脚本,你能提供这些作为答案吗@l'L'l 我可以在 ebextensions 中创建一个 bash 脚本来执行。请参阅我更新的问题。
  • 很好;当然,我会把答案放在一起,其中包括如何处理是否安装了包。

标签: bash yum amazon-elastic-beanstalk ebextensions


【解决方案1】:

既然你提到运行shell 脚本是可能的,那么它应该很容易处理:

webcore_install.sh

#!/bin/bash

function isinstalled {
  status=$?
  if [[ $status -eq 0 ]]; then
    # reinstall if already present
    sudo yum -y reinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/webcore-fonts-3.0-1.noarch.rpm
  else
    # install if not present
    sudo yum -y install http://li.nux.ro/download/nux/dextop/el7/x86_64/webcore-fonts-3.0-1.noarch.rpm
  fi
}

yum -C list installed "$@"
isinstalled

那么你的命令可能看起来像这样:

sudo ./path/to/webcore_install.sh webcore-fonts-3.0-1

您可能还需要更改shell 脚本的权限:

chmod +x webcore_install.sh

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-12-04
  • 2017-06-12
  • 1970-01-01
  • 2014-10-16
  • 2019-06-17
  • 2014-11-10
  • 2020-10-11
  • 2018-03-01
相关资源
最近更新 更多