真香系列之 Golang 升级
Golang 以前的依赖管理一直饱受诟病,社区的方案也层出不穷,比如 vendor, glide, godep 等。之前的依赖管理一直是依靠 GOPATH 或者将依赖代码下载到本地,这种方式都有劣势。另外由于特殊的网络环境,导致谷歌的大部分包都没有办法下载。从 Golang 1.11 开始,官方已内置了更为强大的 Go modules 来一统多年来 Go 包依赖管理混乱的局面,从 1.13 开始将成为默认配置。配合 Goproxy 来使用来说,真香。这次配合我之前的 Golang 开源项目 GShark 升级到 1.13,升级花费的时间不超过 5 分钟,体验优秀。
升级 Golang 版本
其实升级 Golang 版本是非常简单的,只要移除之前的 Golang,然后复制新版本的 Golang 就可以了。以我之前的 VPS 为例(CentOS,亲测苹果系统可以使用同样的方式升级),之前安装的 Golang 版本是 1.9。
1.移除旧版本 Golang
rm -rf /usr/local/go
2.安装新版本 Golang
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.13.linux-amd64.tar.gz
3.配置 Golang 环境
如果你之前配置过 Golang 的环境,那么你可以找直接升级。主要只是需要配置 GOROOT 以及 GOPATH 即可,对于 1.13 其实这两个变量已经不是必要的了。不过我发现我在安装的依赖的时候,出现报错信息,通过配置 GOROOT 为 /usr/loca/go 即可解决。但有一个配置很重要,就是将 goproxy 设置为国内的代理(这里使用的是七牛云的代理),这样你就能体验飞一般的畅快。
export GOPROXY=https://goproxy.cn,direct
原有代码升级
之前 gshark 没有使用任何的依赖管理,完全是通过 GOPATH 存放依赖。这有一个问题,就是项目的依赖做出了不兼容的版本升级,最终导致项目构建失败。通过 Go modules 可以锁定依赖版本,从而避免这个问题。以 gshark(https://github.com/neal1991/gshark) 为例进行 Go modules 的升级。
1.mod 初始化
cd 到项目文件夹中
go mod init github.com/neal1991/gshark
2.查找依赖
go get ./...
只需要两部就可以升级使用 Go modules 就可以了。
GShark
GShark 是我之前开源的一款 Github 敏感信息监测的系统,之前也有写过
1.下载代码
git clone https://github.com/neal1991/gshark
2.下载依赖
go get ./...
3.编译
go build main.go
4.运行
运行之前需要把 conf 文件夹里面的 app-template.ini 重命名为 app.ini,使用自己的配置即可。
// 启动 web 服务
./main web
// 启动爬虫
./main scan
通过上面几步就可以启动 GShark 服务了。GShark 目前仅仅由我一个人维护,希望可以吸收社区优秀的建议,欢迎 PR。可以添加微信 Cafery 加入微信交流群。
总结
虽然说 gorpoxy 以及 modules 都不是 1.13 版本才有的。但是目前这些特性在 1.13 版本已经稳定运行。总的来说,升级到 Go 1.13,真香。
真香系列之 Golang 升级的更多相关文章
- TypeScript 真香系列——接口篇
接口带来了什么好处 好处One —— 过去我们写 JavaScript JavaScript 中定义一个函数,用来获取一个用户的姓名和年龄的字符串: const getUserInfo = funct ...
- JavaFX桌面应用-MVC模式开发,“真香”
使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...
- 国人开源了一款超好用的 Redis 客户端,真香!!
大家都知道,Redis Desktop Manager 是一款非常好用的 Redis 可视化客户端工具,但可惜的是 v0.9.4 版本之后需要收费了: 这个工具不再免费提供安装包了,要对所有安装包收费 ...
- 你只会用 StringBuilder?试试 StringJoiner,真香!
你只会用 StringBuilder/ StringBuffer 拼接字符串? 那你就 OUT 了!! 如果需要拼接分隔符的字符串,建议使用 Java 8 中的这款拼接神器:StringJoiner, ...
- golang升级
系统安装软件一般在/usr/share,可执行的文件在/usr/bin,配置文件可能安装到了/etc下等. 文档一般在 /usr/share 可执行文件 /usr/bin 配置文件 /etc lib文 ...
- 从Eclipse切换到IDEA工具,哎~真香!
从Eclipse切换到IDEA工具,哎~真香!(图) 个人观点:IDEA工具用了就回不去了!!!对比很多人写,我就不赘述了.我在这里主要介绍一下IDEA工具的一些使用上的技巧,毕竟我开始学习java的 ...
- git 日常使用从入门到真香
目录 git 日常使用从入门到真香 一.Git简介 二.Git常用命令 三.git操作流程 四.报错处理 git 日常使用从入门到真香 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效. ...
- 真香的flex弹性布局
如何实现一个左中右的布局 在flex出现之前 #box{ color: white; } #left{ float: left; width: 30%; background-color: red; ...
- Chladni Figure CodeForces - 1162D (暴力,真香啊~)
Chladni Figure CodeForces - 1162D Inaka has a disc, the circumference of which is nn units. The circ ...
随机推荐
- 【Spark机器学习速成宝典】基础篇04数据类型(Python版)
目录 Vector LabeledPoint Matrix 使用C4.5算法生成决策树 使用CART算法生成决策树 预剪枝和后剪枝 应用:遇到连续与缺失值怎么办? 多变量决策树 Python代码(sk ...
- VSCode安装go语言开发环境,go插件问题解决
在安装go插件时,会自动更新很多依赖库文件,都是从Github更新下来,但是因为Github的文件中,多有应用go官网中的文件,导致,因为网络缘故,不能直接下载,导致安装失败,如下: Instal ...
- 一、基础篇--1.1Java基础-什么是java的序列化和反序列化
什么是序列化和反序列化 序列化:把堆内存中的java对象数据,通过某种方式把对象存储到磁盘文件或者传递给其他网络节点.这个过程称为序列化.简单来说呢,就是将对象转换成二进流的过程. 反序列化:把磁盘 ...
- Jquery 选择器的用法
用js 动态生成<ul>标签的<li>条目,因为在动态的创建过程中li的点击事件是不太方便的,因此采用JQuery 的类选择器来实现. html代码: <div id=& ...
- CSS - 设置 select 元素的样式
注意:option 外面有个框,这个框不同浏览器生成的还不一样,给这个框设置样式的方法也没有找到(有说法是这是浏览器创建的 shadow dom 没法设置).所以要想完全控制还是用列表进行模拟比较好. ...
- Jmeter测试工具的下载使用
Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好.
- http协议详解之响应报文 3
--------------响应示例--------------------------response#状态行HTTP/1.1 200 OK #协议及版本号.状态码.状态描述 #消息报头Date: ...
- 阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上
创建maven的新项目 先复制坐标的依赖. 再把代码复制进来 先改造ioc的部分 复制上面一行代码.到下面 改成context 这里也是复制的上面两行代码.到下面改成context关键字 配置扫描的包 ...
- python 并发编程 多进程 生产者消费者模型介绍
一 生产者消费者模型介绍 为什么要使用生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务, 生产数据目的,是为了给消费者处理. 在并发编程中,如果生产者处理速度很快,而消费者处理 ...
- 第九周课程总结&实验报告
实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. public c ...