15

これは私の最後の質問のフォローアップです:golang:ローカルディレクトリへのパッケージのインストール

GOPATH設定しましたが$HOME/prog/go/gopath、このパスには3つのディレクトリがあります。

~/prog/go/gopath$ ls
bin  pkg  src

今、私は実行するように要求するredisデータベースにアクセスするためのモジュールをインストールしようとしています

go install

ソースディレクトリ内。しかし、コマンドgo installは私に与えます

~/prog/go/gopath/src/redis (go1)$ go install
go install flag: open /usr/local/go/pkg/darwin_amd64/flag.a: permission denied
~/prog/go/gopath/src/redis (go1)$ echo $GOPATH 
<myhomedir>/prog/go/gopath

<myhomedir>有効なパスはどこにありますか)

質問1:なぜ考慮しgo installないのですか?$GOPATH質問2:使用するように説得go installする方法は$GOPATH

4

4 に答える 4

6

セットアップ方法はわかりませんが、標準ライブラリからパッケージをビルドする必要がある可能性がありますが、パーミッションのためにビルドできません。あなたが試すことができます

cd /usr/local/go/src
sudo ./all.bash

これにより、std ライブラリがビルドされ、テストが実行されて、すべてが正常であることを確認できます。

必要に応じて $GOROOT から読み取りおよび実行するための適切な権限があることを確認してください。個人的には、golang.org からアーカイブをダウンロードして ~/local/go に保存し、GOROOT を適切に設定するだけです。

于 2012-09-20T18:38:33.323 に答える
5

同様の問題がここにあります。$GOROOT を確認すると、すべてのライブラリが既にビルドされていることがわかります。しかし、何らかの理由で、すべてのライブラリを再構築しようとします。だから私はちょっとしたトリックをします:

find /usr/lib/go/pkg/ -name "*.*" | sudo xargs touch

その後、すべてが正常に機能します。

于 2014-08-21T08:12:24.660 に答える
3

必要なコマンドは「go get」だと思います:

go get github.com/alphazero/Go-Redis

Go-Redis ライブラリをダウンロードして $GOPATH/src ディレクトリに配置します。

go install は、独自のソース コードのコンパイルとインストールを実行します。

正直に言うと、私はこの概念全体に少し苦労しましたが、「Go の書き方」とコード構成のセクションを注意深く読み直すと、 go コマンドの動作について知っておく必要があることが含まれています。

于 2012-09-27T02:38:37.070 に答える
0

解決策は、.bash_profile から GOROOT を削除することです。次に、go コマンドはそれを GOPATH ディレクトリにインストールします。奇妙なことに、.bash_profile に GOROOT を再度設定して新しいシェルを作成すると、それも機能します。

于 2013-10-09T08:26:03.413 に答える