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 rungo 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 上でやってるのも何か関係あるのかもしれない。