Help us understand the problem. What is going on with this article?

gopkg.in絡みで困ることになる・・・のかもしれない??

More than 3 years have passed since last update.

gopkg.in便利ね

gopkg.in便利なんですが、何かのトラブルの種になっている気配があるので起稿。

詳細については未調査につき、何らかの他の要因によるかもしれません


事象1: version違いのimport

A/alpha.go
package A

import "gopkg.in/foo/bar.v2"
B/bravo.go
package B

import "gopkg.in/foo/bar.v1"

みたいなことが起きる。

  1. 最初は"gopkg.in/foo/bar.v1"で開発していた
  2. 開発メンバーはあまり意識せずgo get ./...で関連パッケージ"gopkg.in/foo/bar.v1"を手に入れている。
  3. 途中で"gopkg.in/foo/bar.v2"を使うように更新した。
  4. 誰かが、A/alpha.go をコピーして、B/bravo.goを作ろう!と考える。
  5. B/bravo.goを保存したタイミングで、goimportが走ってimport先が自動で"gopkg.in/foo/bar.v1"になってしまう。

事象2: CIが怒り出す。

「"github.com/hoge/piyo.xXXXX"なんて無いんですけど!」と怒られる。
一見、事象1のパッケージとは関係なさそうなところで起きる。
$GOPATH/src/github.com/hoge/piyo を見に行くけど、問題なさそう。
go get ./... とすると、やっぱり「"github.com/hoge/piyo.xXXXX"なんて無いんですけど!」と怒られる。

先述の事象1の状態を解消(B/bravo.goのimportを"gopkg.in/foo/bar.v2"に更新)したら、直った。

原因は調査中。

原因の根幹は未解明。

gopkgのバージョン番号がv1,v2という風に昇順な上に、goimportが若い番号のものを自動で割り当ててしまうことに原因がある・・・のかも。
同名のpackageが、違うURLで存在する場合に何らかの問題が起きる???

とりあえず一旦記事に起こしておく。

kyoh86
Golangとzshとvimをこよなく愛するふとっちょプログラマーです。
https://kyoh86.dev/
wacul
人工知能でWebサイトの課題を発見する AIアナリスト https://wacul-ai.com を開発しています
https://wacul.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした