15

最近、CentOS 6.3 を搭載したサーバーに Go をインストールしました。インストールはうまくいったようです。ただし、テスト用の「hello world」スクリプトを作成し、実行すると次の出力が得られます。

fork/exec /tmp/go-build967564990/command-line-arguments/_obj/a.out: permission denied

現在、go env または他の go コマンドを実行しているようです。最初はパーミッションの問題だと思っていましたが、root ユーザーとして実行しても同じ結果が得られました。アン

4

6 に答える 6

19

今日この問題が発生しましたが、上記の解決策は機能しませんでした。私は単に実行するだけで修正されました:

$ export TMPDIR=~/tmp/

次に、スクリプトを実行することができました:

$ go run hello.go
hello, world

唯一の欠点はexport TMPDIR、アプリケーションを実行するたびに実行する必要があることです。

アダム・ゴーフォースへの称賛

于 2014-10-22T18:20:47.790 に答える
15

推測: あなたの nix はおそらくセキュリティ上の理由から /tmp でプログラムを実行することを無効にします。CentOS で設定できるかもしれませんが、それはわかりません。

別の解決策: go runGo プログラムを実行しようとしているようです (これは、C がスクリプトであるのと同じようにスクリプトです)。$GOPATH=~代わりに(簡単な可能性があると仮定して)通常のビルドを試してください。

me:~/src/foo$ go run main.go

試す

me:~/src/foo$ go build # main.go should not be necessary here
me:~/src/foo$ ./foo

このアプローチでは、引き続き /tmp-whatever を使用してバイナリ IIRC を作成しますが、そこから実行しようとはしません。

PS:これらのコマンドを root として実行しないでください。正しいセットアップでは、その必要はありません。

于 2013-02-18T19:48:48.303 に答える