解决Go依赖包安装问题
Go对于初学有2大问题:
1 是依赖的安装
2 gopath内的目录结构的处理,因为go依赖的路径问题,绝对相对路径,所以这点要很小心处理
最近在学习Go编写后端服务,先放出谢大的书镇楼:
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md
学习Go的人,第一个要解决的问题,就是安装依赖,也就是我们用的go get命令,由于你懂得原因,Go安装依赖总是timeout(获取超时),就算挂公司的vpn也不行,说个实在话:golang官网都上不去你还想安装依赖??
国内网络是可以访问github.com的,那么用github.com代替golang.org呢?举个栗子:
go get github.com/micro/micro
我敢保证,不是每次都行得通,有时也timeout,为啥,因为我试过!
后来我去看了这篇文章还有其他文章,结合谢大的书,总结了两个个解决方案:
https://www.imooc.com/article/45820
方案一:gopm,缺点:慢!优点:自动!
方案二:github.com clone(或者网页下载)+ src +go install
先跟大家说个知识:
1.会涉及go path和go get的原理,这个自己去看谢大的书,例如我的电脑是mac mini,那么我的默认go工作目录就是:/users/用户名/go,其他不多说
2.我们的依赖通常放在 go/src里 (这里的go就是上一行的go路径,下同),我们进到这个目录里,在有.go文件的地方,执行go install ,golang就会把src的 .go 编译成包文件 .a文件,放到同等目录的go/src中,就是把包文件的目录放得跟src的一样,只是src改为pkg
3.代码
import (
"github.com/micro/go-micro"
)
上面的不要以为是会去github.com下载依赖,如果是的话我们还有手动go get获取依赖干嘛?
好,下面拿我上面要安装的依赖来试试
go get github.com/micro/micro
我们全程都不必用到 go get
1.去github找到micro的仓库,下载micro,注意放到 go/src/github.com/micro (注意,因为下载的micro里还有个叫micro的文件夹,所以名字会叫micro/micro)
2.去到micro 里执行install,不同机器报错不同,例如我的机器缺少的文件数量比较少,结果如下:
我是用vscode哈
好的,这时我们看得出缺了crypto的包,并且是src的而不是pkg的,因此只需要下载源码放到src就好,而不用go install,那我们就愉快的去github.com下载它的源码吧!
怎么找?
github搜索 crypto
把里面整个下载下来,迅雷下载可以提速,放到src对应路径(一般github的路径如下:github.com/作者github名/仓库名/具体go文件),需要包时执行install,这个过程要重复几次,直到收到下完所有的包
顺便提一句,由于包依赖太多,楼主已吐血
2019.04.03更新
最近我探索到一种方式,不用开vpn的
首先看问题,如果少源码,也就是第1.个,就Github找源码下载放到src相应的目录中,如果少包,也就是第2.个,不但要下载源码放到src中,还要去到相应目录执行go install,但是这样效率吐血,因为通常a依赖b,b依赖c,c依赖e f g......翻桌子啊!!!
如何解决,就是直接到 项目的根目录里 先执行go get,效果和nodejs 执行npm install差不多,完了后,get不了的包(一般github都get得下来,就是golang.org或者google网站的包或者说源码get不下来,那么你就去github搜索包在github的镜像,手动下载按照前面说的做,放到相应目录,需要时执行go install,这样最快,gopm慢到吐血)
1.
cannot find package "github.com/..." in any of:
E:\Go\src\github.com...
2.
cannot find package "github.com/..." in any of:
K:\go\pkg\github.com\...
解决Go依赖包安装问题的更多相关文章
- ubuntu 可能的依赖包,安装过程中根据需要安装
/*************依赖包安装****************/下面是可能的依赖包,安装过程中根据需要安装 build-essential - libglib2.-dev libpng3 li ...
- Android 源码编译环境搭建(64位Ubuntu)各种依赖包安装
1.准备: 普通PC(要求能上网), PC的操作系统Ubuntu 10.04 LTS(64位的),已经下载好的Android 1.6_r1的源代码. 2.Linux的依赖package安装: 为了更快 ...
- 解决国内npm依赖包安装慢的问题
可以通过 npm config set registry http://registry.npm.taobao.org命令设置镜像服务器为阿里巴巴镜像服务器,速度会快很多,亲测有效.
- eclipse打jar包解决第三方依赖包
在项目根目录下手动MANIFEST.MF(eclipse无法自动生成) MANIFEST.MF Manifest-Version: 1.0 Class-Path: lib/kafka-clients- ...
- nginx及依赖包安装分享 百度网盘(pcre+openssl+zlib)
链接:https://pan.baidu.com/s/1gggq1p-uZSmAw49o5xfl4g 提取码:ypoj 复制这段内容后打开百度网盘手机App,操作更方便哦 1.安装pcre 解压:ta ...
- 解决maven依赖包下载慢的问题
修改maven 目录下setting.xml配置文件 在mirrors中添加如下配置即可 <mirror> <id>alimaven</id> <name&g ...
- CDH平台搭建解决离线安装依赖包的方法
背景介绍: 1CDH开发平台在搭建的过程中,会遇到各种各样的问题,其中的各种依赖就是一个很让人头痛的问题.如果安装脚本文件出现了这种问题,那么就可以把以下的这种方法加入shell中,但是不要用yum来 ...
- Pycharm使用教程(四)-安装python依赖包(非常详细,非常实用)
简介 在做python开发时,需要很多依赖包,如果已经安装pip,安装依赖包,可以通过命令行:没有安装的,也可以通过PyCharm安装. 具体安装步骤 1.在File->Setting,如图: ...
- Centos7安装RabbitMQ解决Erlang依赖报错
通过yum等软件仓库都可以直接安装RabbitMQ,但版本一般都较为保守. RabbitMQ官网提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是 ...
随机推荐
- 【转载】 IIS服务器防盗链设置
在实际运行的服务器环境中,我们自己网站中的资源一般不希望被外部网站引用,被外部网站引用IIS网站中的资源文件,一是会加重了服务器的负担,二是占用了你自己服务器的外网带宽资源,因此我们希望防止盗链这种情 ...
- Updatepanel 后端返回后,在 Updatepanel 内控件的前端 js 失效问题
实际情况:点击下箭头弹出列表,点击列表上的隐藏按钮隐藏列表. 背景:模块没有使用Js或者Jquery的Ajax功能,而是使用Asp.Net的Ajax控件--UpdatePanel + ScriptMa ...
- [android] 开启新的activity获取他的返回值
应用场景:打开一个新的activity,在这个activity上获取数据,返回给打开它的界面 短信发送时,可以直接选择系统联系人 界面布局是一个线性布局,里面右侧选择联系人在EditText的右上,因 ...
- redis实现高并发下的抢购/秒杀功能
之前写过一篇文章,高并发的解决思路(点此进入查看),今天再次抽空整理下实际场景中的具体代码逻辑实现吧:抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢 ...
- 详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2)
1.安装mkyaffsimage, mkyaffs2image命令(用来制作yaffs文件系统) 第一个命令针对Flash小页512B,第二个针对Flash大页2KB首先下载压缩文件 yaffs_so ...
- 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景
众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...
- openjudge------ 日期的种类题目
描述TXT is a vegetable chicken,so 出题什么的完全不会啊! 干脆直接从网络上copy一题下来吧. 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都 ...
- mybatis XML中 遍历map写法
<select id="selectMapTest" parameterType="java.util.HashMap" resultMap=" ...
- Java高并发--AQS
Java高并发--AQS 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 AQS是AbstractQueuedSynchronizer的简称,直译过来是抽象队列同步器. ...
- Java 控制类的引用类型,合理使用内存
Java提供了 java.lang.ref包,该包下的类均与垃圾回收机制相关 先介绍Java对象的集中引用类型 1.强引用 强引用是最常见的,创建对象就是强引用,如 String a = new St ...