我最近使用CentOS 6.3安装了Go到我们的服务器上.安装似乎没有问题.但是我做了一个测试"hello world"脚本,当我运行时,我得到以下输出.
fork/exec /tmp/go-build967564990/command-line-arguments/_obj/a.out: permission denied
Run Code Online (Sandbox Code Playgroud)
现在运行go env或其他go命令似乎工作.起初我认为这是一个权限问题,但是以root用户身份运行我得到同样的东西.一个
zzz*_*zzz 13
猜测:你的nix可能因为安全原因而在/ tmp中执行程序时禁用.它可能在CentOS中可配置,但我不知道.
替代解决方案:您似乎正在尝试go run执行Go程序(这是脚本,因为C是脚本).尝试(假设$GOPATH=~,简单的可能性)而不是正常的构建,即代替
me:~/src/foo$ go run main.go
Run Code Online (Sandbox Code Playgroud)
尝试
me:~/src/foo$ go build # main.go should not be necessary here
me:~/src/foo$ ./foo
Run Code Online (Sandbox Code Playgroud)
这种方法仍然会使用/ tmp-whatever来创建二进制文件IIRC,但它不会尝试从那里执行它.
PS:不要以root身份运行这些命令.正确设置无需这样做.
Win*_*ter 12
我今天遇到了这个问题,但上面的解决方案没有用.通过简单运行来解决我的问题:
$ export TMPDIR=~/tmp/
Run Code Online (Sandbox Code Playgroud)
然后我能够让脚本运行:
$ go run hello.go
hello, world
Run Code Online (Sandbox Code Playgroud)
唯一的缺点是export TMPDIR每次要运行应用程序时都必须运行.