sudo yum安装或重新安装

时间:2019-02-25 06:25:31

标签: bash yum amazon-elastic-beanstalk ebextensions

我正在通过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

以此类推...

1 个答案:

答案 0 :(得分: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