linux - 这是一个有效的 Go 路径配置吗?

标签 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

我正在尝试安装 HyperLedger Fabric,Go 是先决条件,显然 go version 输出显示它已成功安装,但是,我不确定它需要在哪里或如何配置测试和使用它。

最佳答案

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

还要记住 go install takes a package name ,而不是文件名,作为它的参数。我不清楚你是否可以直接在 $GOPATH/srcgo install 一些东西,但是你可以将它移动到一个子目录中

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

关于linux - 这是一个有效的 Go 路径配置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687331/

相关文章:

c - 为什么编译后的代码在 linux 的 windows 中创建损坏的文件工作正常

Java 进程在 Linux 后台运行时停止

azure - Microsoft 日历事件包配置

go - 如何在 Go 中的时区之间进行转换?

json - golang json编码(marshal): how to omit empty nested struct

c++ - 通过系统变量设置QT基目录

oracle - 如何从 PL/SQL 中确定 ORACLE_HOME?

python - 作为用户而非 root 在大型 SVD 上出现 Numpy 段错误

linux - 如果不做某事,则使用 IF 查看目录是否存在

c# - 如何获取 notepad.exe 的确切路径以关联文件扩展名