首页 > 解决方案 > 尝试在 AWS EC2 用户数据中设置 GOPATH 和 GOROOT,但它不起作用

问题描述

我正在尝试在我的AWS EC2 Ubuntu 20.04用户数据中设置 GOPATH GOROOT,但它从来没有用过,每次我连接到AWS EC2并查看日志时/var/log/cloud-init-output.log它总是说 go: not found,但如果我键入 echo 部分它会起作用。我正在尝试以此为基础设置多个 EC2,因此我无法自己键入每个实例。CloudFormation yaml 用户数据部分如下:

UserData:
        Fn::Base64: |
          #!/bin/bash
          wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
          tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
          mkdir -p ~/go/{bin,pkg,src}
          echo 'export GOPATH=$HOME/go' >> ~/.bashrc
          echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
          echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
          echo 'export GO111MODULE=auto' >> ~/.bashrc
          source ~/.bashrc
          apt -y update
          apt -y install mongodb wget git
          systemctl start mongodb
          apt -y install git gcc cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
          go get -u github.com/sirupsen/logrus
          cd ~
          git clone --recursive https://github.com/williamlin0504/free5gcWithOCF.git
          cd free5gcWithOCF
          make

这是/var/log/cloud-init-output.log 用户数据运行时Error里面的错误 有没有人熟悉这个,请我需要一些帮助~

标签: goamazon-ec2

解决方案


在您的错误消息中,在第 30 行的 Makefile 中有一个程序 bin/amf 正在使用

这个程序似乎是一个 shell 脚本,第 1 行有问题

问题的本质是“go: not found”

如果你在 shell 脚本的第 1 行有一个简单的单词“go”并且路径找不到它,那么这就是将会发生的事情

可能您需要更改 userdata shell 脚本的最后一行

PATH=/usr/local/go/bin:$PATH make

我知道你source在脚本前面有一个命令应该设置它,但它并没有做你认为它做的事情


推荐阅读