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 升级相关推荐

  1. 「真香系列」新物种首发亮相 聚划算爆款孵化玩法升级

    从普通商品到优质好物,差的便是那一句"真香". 2022聚划算99划算节,聚划算首发「真香系列」,为消费者精选了一批价格香.品质香.服务香的「十三香」好物.不过,聚划算的" ...

  2. TypeScript真香系列-高级类型

    前言 TypeScript真香系列的内容将参考中文文档,但是文中的例子基本不会和文档中的例子重复,对于一些地方也会深入研究.另外,文中一些例子的结果都是在代码没有错误后编译为JavaScript得到的 ...

  3. android 小米相机问题吗,如果小米10把相机优化到位,那这款机器属于真香系列!...

    如果小米10把相机优化到位,那这款机器属于真香系列! 2020-05-12 22:42:42 32点赞 9收藏 15评论 今年小米10给人印象最深的是,它涨价了.发布会当时3999元起步就劝退了不少人 ...

  4. 接口缺方法调用时报错_TypeScript真香系列——接口篇

       戳蓝字「前端技术优选」关注我们哦! 接口带来了什么好处 好处One -- 过去我们写 JavaScript JavaScript 中定义一个函数,用来获取一个用户的姓名和年龄的字符串: cons ...

  5. Android真香系列,再也不用数据线就能真机调试啦

    我们在平时开发过程中,更倾向于用数据线连接真机调试,有的童鞋可能会说了:我开发都是用模拟器的,确实可以,不过在调试过程中,可能会遇到各种莫名其妙的问题,别问我为啥知道,都是踩坑过来的. 其实我也知道可 ...

  6. 几种线程安全的Map解析,真香系列

    1.笔试常见的问题? 面试常见的问题上面给的面试题链接基本都有.我只提几点: 写SQL:写SQL很常考察group by.内连接和外连接. 手写代码:手写代码一般考单例.排序.线程.消费者生产者.我建 ...

  7. 数据结构与算法邹永林PDF_真香系列:耗时大半个月收整全套「Java架构进阶pdf」没白费,终于可以安心备战2021了!...

    2021就这么来了,马上就要开启备战今年的"金三银四"了.辛亏在2020的最后半月花了我大半个月时间收整了全套的「Java架构进阶pdf」,这一波下来,刷完你就会知道,真真香啊,我 ...

  8. 真香系列!Java工程师面试该怎么准备

    前言 对Java开发的知识点进行深入的学习,并打算做成系列,先从基础常用的重点**(面试点)**知识开始,后续会陆续扩展,加油! 涉及到底层的可能代码块会多点,但要学习底层不看代码看啥?代码说明一切! ...

  9. jvm from space 很小_JVM真香系列:堆内存详解

    前面的文章中已经有所提到过堆,只是大致介绍了一下.本文就来详细聊聊JVM中的堆. 在 JVM中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ). 新生代 ( Young ...

最新文章

  1. 微软hackathon_武汉Hackathon的黑客之路–开发人员如何抗击COVID-19
  2. NHIBERNATE
  3. python快速入门答案-python快速入门基础知识
  4. Android 系统Dimension和间距参数详解
  5. 自适应登陆html5,html5验证自适应
  6. 字符串匹配,KMP算法
  7. Android实现点击两次返回键退出
  8. 解决ECLIPSE 卡死的方法
  9. Linux下C++静态库、动态库的制作与使用
  10. 拓端tecdat|matlab对MCMC贝叶斯方法用于加筋复合板的冲击载荷识别
  11. face landmark 人脸特征点检测
  12. win10下实现bat转exe
  13. stm32波特率计算
  14. 学习 stm32 无线蓝牙模块HC05配置与应用(手机蓝牙连接发送参数)
  15. python生成所有6位数的数字手机验证码(000000-999999)
  16. java驱动音响设备发音_XP环境下驱动正常、声卡正常但音响没声音怎么解决?
  17. 后渗透阶段的权限维持
  18. 最常被遗忘的 Web 性能优化:浏览器缓存
  19. python软件如何下载-Python怎么下载安装
  20. 基于opencv的手势识别(HSV)控制鼠标

热门文章

  1. Qt获取当前时间日期或时间戳QDateTime
  2. JAVA控制软件版权和试用(限制时间、限制次数、限制功能)的完美技术方案
  3. 【有利可图网】PS实战教程24:制作一张,高点击率淘宝动效海报!
  4. WPF开发txt阅读器7:自定义文字和背景颜色
  5. Rain and Tears
  6. Python实现QQ自动搜索联系人并发送消息
  7. 注会之会计 固定资产
  8. 贝壳如何docker安装openwrt_N1小钢炮利用Docker创建OpenWrt容器实现旁路由
  9. 计算机网络中 通信双方必须共同遵守的,在计算机网络中,通信双方必须共同遵守的规则或约定,称为“协议”。 .._简答题试题答案...
  10. mysql linux 用户_mysql用户和权限管理(Linux系统下)