🐻

goplsのインストールでundefined: atomic.Int64でエラー

2024/04/19に公開

エラー内容

以下のDockerfileをビルドしようとしたところ、

# Dockerfile
FROM golang:1.18
RUN go install golang.org/x/tools/gopls@latest

以下ログを出力してエラーしました。

$ docker build - < Dockerfile       
[+] Building 12.1s (5/5) FINISHED                                                          docker:default
 => [internal] load build definition from Dockerfile                                                 0.0s
 => => transferring dockerfile: 100B                                                                 0.0s
 => [internal] load metadata for docker.io/library/golang:1.18                                       1.6s
 => [internal] load .dockerignore                                                                    0.0s
 => => transferring context: 2B                                                                      0.0s
 => CACHED [1/2] FROM docker.io/library/golang:1.18@sha256:50c889275d26f816b5314fc99f55425fa76b18fc  0.0s
 => ERROR [2/2] RUN go install golang.org/x/tools/gopls@latest                                      10.5s
------                                                                                                    
 > [2/2] RUN go install golang.org/x/tools/gopls@latest:                                                  
0.457 go: downloading golang.org/x/tools v0.20.0                                                          
0.804 go: downloading golang.org/x/tools/gopls v0.15.3                                                    
2.676 go: downloading golang.org/x/tools v0.18.1-0.20240412183611-d92ae0781217                            
2.676 go: downloading golang.org/x/telemetry v0.0.0-20240209200032-7b892fcb8a78                           
2.677 go: downloading mvdan.cc/xurls/v2 v2.5.0
4.310 go: downloading golang.org/x/mod v0.15.0
4.311 go: downloading golang.org/x/sync v0.6.0
4.438 go: downloading golang.org/x/vuln v1.0.1
4.470 go: downloading golang.org/x/text v0.14.0
10.20 # golang.org/x/tools/gopls/internal/cache
10.20 pkg/mod/golang.org/x/tools/gopls@v0.15.3/internal/cache/analysis.go:389:23: undefined: atomic.Int64
10.20 pkg/mod/golang.org/x/tools/gopls@v0.15.3/internal/cache/analysis.go:525:25: undefined: atomic.Int32
10.20 pkg/mod/golang.org/x/tools/gopls@v0.15.3/internal/cache/analysis.go:526:25: undefined: atomic.Int32
------
Dockerfile:2
--------------------
   1 |     FROM golang:1.18
   2 | >>> RUN go install golang.org/x/tools/gopls@latest
--------------------
ERROR: failed to solve: process "/bin/sh -c go install golang.org/x/tools/gopls@latest" did not complete successfully: exit code: 2

原因

どうやらgolang:1.18では対応していないものが含まれるようです。

参考 : https://stackoverflow.com/questions/75517817/why-do-i-get-undefined-atomic-bool

解決策

パターン1. goのバージョンを上げる

FROM golang:1.19
RUN go install golang.org/x/tools/gopls@latest

パターン2. goplsのバージョンを下げる

FROM golang:1.18
RUN go install golang.org/x/tools/gopls@v0.15.2

以上です。

Discussion