godoc コマンドがどうしても動かなかった

昔は godoc コマンドでローカルパッケージのドキュメントを生成できたのだが今やったらできなかった。結局試行錯誤の末に動いたっぽいが……というぼやき。

godoc コマンドを普通に go install でインストールしてパスを通したはいいものの、

$ godoc -http=:6060
using module mode; GOMOD=/home/k1350/ogpgen/go.mod
2021/06/13 20:53:49 godoc: corpus fstree is nil

こんなエラーが出て起動すらしない。

Go(ver1.16.2) でgodocを使えるようにするための手順

という記事を見たんだけどパスはもう通してある。

状況は

cmd/godoc: confused by symlinks in GOROOT: godoc: corpus fstree is nil

と同じに見えるんだけど、この issue も、ここからリンクされている issue もクローズしている。

issue 内に書いてあったので一応 goroot オプションをつけてみると起動はするんだけど、ブラウザで localhost:6060 を開くとエラー。

$ godoc -http=:6060 -goroot=/home/k1350/go
using module mode; GOMOD=/home/k1350/ogpgen/go.mod
2021/06/13 20:58:15 cannot find package "." in:
        /src

/src って何? どこ見てるの?

ググっても最新バージョンで godoc が動かないって人を探せない。
なんだか go1.16.5 のバージョンで godoc を動かせてないのが世界で私しかいないのかもしれないのだが……。

と試行錯誤していたところ、godoc 含む tools のリポジトリの README に

Download/Install
The easiest way to install is to run go get -u golang.org/x/tools/.... You can also manually git clone the repository to $GOPATH/src/golang.org/x/tools.

と書いてあるのを発見。

go get はもうやってダメだったのだが、$GOPATH/src/golang.org/x/tools に clone するというのはやっていなかったのでやった。

その結果……動いた(ように見える)。

goroot オプションなしでは相変わらずコケるが、goroot オプションありなら開くようになった。これが正しく動いているのかはよくわからないが……。

実行ファイルがあるだけじゃいけなくて、ソースファイルが必要だったのだろうか?

結局何が原因だったかわからないし、私以外の人が問題なく godoc を使えているのも解せないのだが、もしかしたら WSL 上でやってるのも何か関係あるのかもしれない。