这是有效的Go路径配置吗?

时间:2018-10-07 09:53:40

标签: linux go path debian gopath

我将路径变量放置如下:

export GOROOT=/usr/local/go
export GOPATH=$HOME/Professional/Sch/Fabric/go
export GOBIN=/usr/local/go/bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

我已将这些行同时放在〜/ .profile和〜/ .bashrc中,并同时获得了它们的来源(不确定它们中的哪个正在生效)。

我的环境输出:

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCACHE="/home/deepak/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/deepak/Professional/Sch/Fabric/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build653871525=/tmp/go-build -gno-record-gcc-switches"

我将以下代码放置在$ HOME / Professional / Sch / Fabric / go / hellp.go中:

package main

import "fmt"

func main() {
    fmt.Printf("Hello, World!\n")
}

但是每次我做go install hellp.go时,我都会得到:

go install command-line-arguments: open /usr/local/go/bin/hellp: permission denied

这很奇怪,因为go version返回了一个go version go1.10.4 linux/amd64,而且我不确定为什么它尝试引用/usr/local/go/bin/hellp,因为那里没有'hellp'文件,而是一个示例文件我在$HOME/Professional/Sch/Fabric/go/创建。

我不确定缺少哪个目录权限,但是我已经尝试过:

  201  sudo chmod -R 777 ~/Professional/Sch/Fabric
  202  go install hellp.go 
  203  sudo chmod -R 777 ~/Professional/Sch/Fabric/go/hellp.go 
  204  go install hellp.go 
  205  sudo chmod -R 777 ~

我的uname -a输出:

Linux instance-1 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux

我正在尝试安装以Go为先决条件的HyperLedger Fabric,并且显然go version输出显示其已成功安装,但是,我不确定需要在何处或如何对其进行配置以进行测试和使用它。

1 个答案:

答案 0 :(得分:3)

您的GOBIN setting is telling go install尝试将编译的二进制文件安装到您无权写入的系统全局目录中。尝试取消设置该变量;事物应该默认安装在$GOPATH/bin中。

还要记住,go install takes a package name(而不是文件名)是其参数。我不清楚您可以直接在go install$GOPATH/src进行操作,但是可以将其移至子目录

unset $GOBIN    
cd $GOPATH/src
mkdir github.com/myname/helpp
mv helpp.go github.com/myname/helpp
go install github.com/myname/helpp
$GOPATH/bin/helpp  # uses the name of the package directory