【问题标题】:package download fails , "GOPATH not set." why?包下载失败,“GOPATH 未设置。”为什么?
【发布时间】:2014-01-30 17:22:58
【问题描述】:

操作系统:Ubuntu 12.04

Go 版本报告:1.1.1

行动:

我已将 .profile 配置为包含以下行:

导出 GOPATH="$HOME/workspace"

导出 PATH=$PATH:$GOPATH/bin

我已通过运行“go env”确保它们已在 go 配置中设置。但是,当我尝试运行该命令时,屏幕报告如下图所示:

可能的约束问题:

1) 盒子上最初有 Go v1.0,我将它升级到版本 1.1.1,不确定这是否意味着什么......但如果有一些疯狂的双配置工作可以解释事实尽管设置了路径,但仍无法正常工作。

2) 我在 .profile 文件中有导出命令,但我看到一些线程指示将其放入 .bashrc,尝试其中任何一个仍然会出现同样的问题。

我需要卸载 go 1.0 吗?我只是假设版本 1.1.1 会覆盖它,但这可能是错误的。理想情况下,我想完全卸载 go,然后安装 1.1.2 版,但我在 golang.org 上找不到任何关于卸载的内容,假设确实可以解决问题。

提前感谢您的帮助。

【问题讨论】:

  • 您之前可能使用sudo 安装了该软件包,这就是您首先收到权限被拒绝错误的原因。将所有者更改为您的用户,您应该没问题。 sudo go get 不能工作,因为 sudo 有不同的环境,GOPATH 不会被设置。

标签: go


【解决方案1】:

正如上述评论者所说,您不应将sudogo get 一起使用。当您这样做时,您将拥有 root 用户的环境(没有您的 GOPATH),并且它创建的任何文件或目录都不能被您的用户编辑。过去,go get 命令不会警告没有$GOPATH,因此更容易被此绊倒。

要修复您的权限,请运行以下命令将所有权更改回您的用户:

sudo chown -R "$USER:" "$GOPATH"

您应该只需要运行一个普通的go get,因为您可以(并且应该)将您的$GOPATH 设置为您可以控制的目录。请务必阅读How To Write Go Code,尤其是在GOPATH 上的讨论。

【讨论】:

  • 谢谢凯尔,这很快就奏效了。具体来说,我运行了您的命令,然后执行以下命令: go get github.com/go-sql-driver/mysql :它起作用了。
猜你喜欢
  • 2014-01-04
  • 1970-01-01
  • 2013-10-16
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 2016-01-01
相关资源
最近更新 更多