我的gopath指向$HOME/go目录。我有一些我不想在github或其他任何地方分享的个人软件包(目前为止)。然而,当我尝试用go get -u all更新远程包时,我得到:
# cd /home/go/src/marcio/somePackage; git pull --ff-only
fatal: No remote repository specified. Please, specify either a URL or a
remote name from which new revisions should be fetched.
package code.google.com/p/go.tools/astutil
...
long list of dependencies
...
imports marcio/somePackage: exit status 1这很让人困惑。如何告诉go get将我维护的包与用作依赖关系的包区别开来?为什么go工具认为所有东西都必须从远程源获取?
更新:
看起来,Go工作区强制您将依赖项与用户维护的代码混合使用。这看起来很不稳定。有时,有些人想要清除未使用的垃圾袋,并冒着擦错文件夹或未承诺的东西的风险,还有许多其他问题.是否有任何方法将用户维护的包与远程获取的依赖分离?
发布于 2014-12-03 14:25:56
go get -u被设计为通过VCS获取更新。如果您想有选择地更新包,则必须使用更具体的标识符。您还可以使用...通配符。
例如,这将尝试更新github.com中的所有包:
go get -u github.com/...不过,通常情况下,我将避免盲目地更新所有内容,因为这会使跟踪依赖项是否破坏了某些内容变得更加困难,因为您目前没有使用的无关项目也会更新它们的依赖项。
最新答案:
虽然您可以使用多个GOPATH(它们是冒号分隔的,就像PATH一样),但是不要这样做;它会造成比它更有帮助的问题。使用单个GOPATH,更好的是,每个项目使用一个GOPATH。这样您就可以更新依赖项而不会影响其他项目。有一些可以帮助解决这个问题的实现工具(例如戈德普)。
https://stackoverflow.com/questions/27273588
复制相似问题