Open18
WSL Ubuntu-24.04にしたらpecoがバグったので調査メモ
症状としてはまんまこれになった。多分自力で解明までは難しいと思うが、できる限りの再現条件くらいは確認しておきたい。
22.04環境
- クリーンインストールはまだ試してない(ちょっとめんどくさい)
-
echo TERM
するとxterm-256color
-
echo hoge | env TERM=xterm-256color peco
でもecho hoge | env TERM=xterm peco
でも問題は起こらない peco version v0.5.10 (built with go1.17)
dockerでテスト。0.5.11のamd64をダウンロードした状態で
$ docker run -v $PWD:/mnt -it ubuntu:24.04 bash
# echo $TERM
xterm
# echo hoge | /mnt/peco
(問題ない)
# echo hoge | env TERM=xterm-256color /mnt/peco
(問題ない)
# apt update
# apt install peco
# peco --version
peco version v0.5.10 (built with go1.21.0)
# echo hoge | peco
(問題ない)
# echo hoge | env TERM=xterm-256color peco
(壊れる)
同様にubuntu:22.04でテストすると、全パターンで問題ない。なおpeco version v0.5.10 (built with go1.17)
24.04環境
- いろいろセットアップ完了した状態で問題が再現すること・
TERM=xterm
で直るのが確認できている -
echo TERM
するとxterm-256color
クリーンインストールでテスト
wsl exportしてバックアップしたのち、
PS> wsl --unregister Ubuntu-24.04
PS> wsl --install Ubuntu-24.04
(user/passセットアップ)
$ sudo apt update
$ sudo apt install peco
$ echo $TERM
xterm-256color
$ peco --version
peco version v0.5.10 (built with go1.21.0)
$ echo hoge | peco
(壊れる)
$ curl -OL https://github.com/peco/peco/releases/download/v0.5.11/peco_linux_amd64.tar.gz
(略)
$ tar xzf peco_linux_amd64.tar.gz
$ ./peco_linux_amd64/peco --version
peco version v0.5.11 (built with go1.19.5)
$ echo hoge | ./peco_linux_amd64/peco
(問題ない)
今のところgo versionの差異が怪しいように見えるので、検証する。
環境はUbuntu 22.04
peco/pecoをcloneして、checkout v0.5.11しておく。
$ go version
go version go1.22.3 linux/amd64
$ go env | grep GOPATH
GOPATH='/opt/asdf-vm/installs/golang/1.22.3/packages'
$ mkdir /opt/asdf-vm/installs/golang/1.22.3/packages
$ cp -r peco /opt/asdf-vm/installs/golang/1.22.3/packages/ # cloneとcheckoutしておいたやつ
$ cd /opt/asdf-vm/installs/golang/1.22.3/packages/peco/
$ make build
$ ./releases/peco_linux_amd64/peco --version
peco version v0.5.11 (built with go1.22.3)
$ echo hoge | env TERM=xterm-256color ./releases/peco_linux_amd64/peco
(問題ない)
いちおうgo 1.21.0 も試してみたけど、再現しなかった
(Ubuntu 24.04の環境を戻しながら気づいたけど、ビルドテストはdockerで良かったな)
Ubuntu 24.04でのgo 1.22.3, 1.21.0それぞれ全部再現しなかった
$ ./releases/peco_linux_amd64/peco --version
peco version v0.5.11 (built with go1.21.0)
$ peco --version
peco version v0.5.10 (built with go1.21.0)
$ echo hoge | env TERM=xterm-256color ./releases/peco_linux_amd64/peco
(問題ない)
$ echo hoge | env TERM=xterm-256color peco
(再現)
とするとapt版をビルドしている環境が良くないのかな。
バイナリと実行環境のテスト。wsl ubuntu 24.04環境で
$ cp /usr/bin/peco ./peco_2404apt
$ echo hoge | ./peco_2404apt
(再現)
$ docker run -v $PWD:/mnt -it ubuntu:22.04 bash
# echo hoge | env TERM=xterm-256color /mnt/peco_2404apt
(問題ない)
$ docker run -v $PWD:/mnt -it ubuntu:24.04 bash
# echo hoge | env TERM=xterm-256color /mnt/peco_2404apt
(再現)
$ cp /usr/local/bin/peco ./peco_2404build # wsl 24.04環境で自前ビルドしたやつ
$ echo hoge | ./peco_2404build
(問題ない)
$ docker run -v $PWD:/mnt -it ubuntu:22.04 bash
# echo hoge | env TERM=xterm-256color /mnt/peco_2404build
(問題ない)
$ docker run -v $PWD:/mnt -it ubuntu:24.04 bash
# echo hoge | env TERM=xterm-256color /mnt/peco_2404build
(問題ない)
x | on docker 22.04 | on docker 24.04 |
---|---|---|
apt版 | o | x |
自前ビルド版 | o | o |
dockerの22.04のapt版を拾ってきてみた
$ docker run -v $PWD:/mnt -it ubuntu:22.04 bash
# apt update
# apt install peco
# cp /usr/bin/peco /mnt/peco_2204apt
$ echo hoge | ./peco_2204apt
(再現)
$ docker run -v $PWD:/mnt -it ubuntu:22.04 bash
# echo hoge | env TERM=xterm-256color /mnt/peco_2204apt
(問題ない)
$ docker run -v $PWD:/mnt -it ubuntu:24.04 bash
# echo hoge | env TERM=xterm-256color /mnt/peco_2204apt
(再現)
x | on docker 22.04 | on docker 24.04 | on wsl 24.04 |
---|---|---|---|
apt 24.04版 | o | x | x |
apt 22.04版 | o | x | x |
自前ビルド版 | o | o | o |
$ ./peco_2204apt --version
peco version v0.5.10 (built with go1.17)
$ ./peco_2404apt --version
peco version v0.5.10 (built with go1.21.0)
$ ./peco_2404build --version
peco version v0.5.11 (built with go1.21.0)
あーここに来てpeco自体のバージョンがずれてることに気付いてしまった
ひとまず、自前ビルド版の peco version v0.5.10 (built with go1.21.0)
でon wsl 24.04で再現しないことは確認した
apt版(pecoバージョン問わず)を24.04環境(wsl/docker問わず)で動かした場合にダメ、という感じ...?