DEV Community

vasubabu
vasubabu

Posted on • Edited on

2 1

Upgrading GO version to 1.13 is not a cakewalk!!!

Why?

Be aware that upgrading the version of Go from older versions to 1.13 is not so easy, it comes with new difficulties due to these recent changes:

  • Version validation:
    • In 1.13 Go performs additional validation on the requested version string. The +incompatible version annotation bypasses the requirement of semantic import versioning for repositories that predate the introduction of modules. The go command now verifies that such a version does not include an explicit go.mod file. Refer for more info https://golang.org/doc/go1.13#/version-validation
  • Changes to the Environment Variable https://golang.org/doc/go1.13#/proxy-vars
  • Proxy Servers:
    • If your company having private repositories then you need to set these below environment variables
      • go env -w GONOSUMDB="****" # use your github or bitbucket repo base url
      • go env -w GONOPROXY="****" # use your github or bitbucket repo base url
      • go env -w GOPROXY="https://proxy.golang.org,direct" #this should already be the default
      • go env -w GOPRIVATE="****" # use your github or bitbucket repo base url

Before start upgrading first clean your mod cache:
GO111MODULE=on go clean -modcache

I will be listing out the possible errors and it's respective solutions as well.

#1: If you are using go-micro framework

go: bitbucket.org/****/**** requires
    github.com/micro/go-plugins@v0.25.0 requires
    gocloud.dev@v0.10.0 requires
    contrib.go.opencensus.io/exporter/ocagent@v0.4.2 requires
    github.com/census-instrumentation/opencensus-proto@v0.1.0-0.20181214143942-ba49f56771b8: invalid pseudo-version: version before v0.1.0 would have   negative patch number

fix:

Add this at last in your `go.mod` file
replace github.com/census-instrumentation/opencensus-proto v0.1.0-0.20181214143942-ba49f56771b8 => github.com/census-instrumentation/opencensus-proto v0.0.3-0.20181214143942-ba49f56771b8

#2: Protobuf related problems

go: k8s.io/api@v0.0.0-20190726022912-69e1bce1dad5 requires
    github.com/gogo/protobuf@v0.0.0-20190410021324-65acae22fc9: invalid pseudo-version: revision is shorter than canonical (65acae22fc9d)
S

fix:

Add this at last in your `go.mod` file
replace github.com/gogo/protobuf v0.0.0-20190410021324-65acae22fc9 => github.com/gogo/protobuf v0.0.0-20190723190241-65acae22fc9d

#3: github.com/instana/go-sensor related

fix:

Add this at last in your `go.mod` file
replace github.com/instana/go-sensor => github.com/instana/golang-sensor v1.5.0

#4: Issue with mailgun-go

fix:

Add this at last in your `go.mod` file
replace github.com/mailgun/mailgun-go => github.com/mailgun/mailgun-go v0.0.0-20180718145431-bbe57f98d550

#5: Issue with hashicorp ambiguous import issue

cannot load github.com/hashicorp/consul/api: ambiguous import: found github.com/hashicorp/consul/api in multiple modules:
        github.com/hashicorp/consul v1.4.4 (/Users/vasubabujinagam/go/pkg/mod/github.com/hashicorp/consul@v1.4.4/api)
        github.com/hashicorp/consul/api v1.1.0 (/Users/vasubabujinagam/go/pkg/mod/github.com/hashicorp/consul/api@v1.1.0)
S

fix:

Add this at last in your `go.mod` file
replace github.com/hashicorp/consul => github.com/hashicorp/consul v1.5.1

if you are facing anything other than this, please post in the comment section.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs