はじめに
新しくインストールしたMSYS2の pacman が,PGP key の取得からタイムアウトして動かない.いろいろ試したが,curl が死んでいて,keyの取得も全くできない.鍵を手動で取得し,信頼してから XferCommand を wget に切り替えて動かす.
なんとか動いたが,絶対おかしい…….
できた方法
# バックアップをとる
$ mv /etc/pacman.d/gnupg /etc/pacman.d/gnupg.bak.$(date +%Y%m%d%H%M%S)
# install -m 700 でパーミッションを変更できないので(なんで?),作ってから chmod で変更する
$ mkdir /etc/pacman.d/gnupg
$ chmod 700 /etc/pacman.d/gnupg
# 毎回タイムアウトしているようで,めちゃくちゃ時間がかかるが,取り込める
# gpg: can't connect to the gpg-agent: IPC connect call failed
$ gpg --homedir /etc/pacman.d/gnupg --no-auto-key-retrieve --import /usr/share/pacman/keyrings/msys2.gpg
# ownertrustを取り込むが,不足
$ gpg --homedir /etc/pacman.d/gnupg --import-ownertrust /usr/share/pacman/keyrings/msys2-trusted
$ gpg --homedir /etc/pacman.d/gnupg --import /usr/share/pacman/keyrings/msys2-revoked
# それぞれ 5 -> y -> save で ultimate(5) にする.時間がかかる
$ gpg --homedir /etc/pacman.d/gnupg --edit-key 69985C5EB351011C78DF7F6D755B8182ACD22879 trust
$ gpg --homedir /etc/pacman.d/gnupg --edit-key 6E8FEAFF9644F54EED90EEA0790AE56A1D3CFDDC trust
# 一旦 pacman -Sy を走らせるが,curl が死んでいるのでロックをかけたまま落ちる
$ pacman -Syy
$ rm -f /var/lib/pacman/db.lck
/etc/pacman.conf の XferCommand で wget を使うようにする.コメントを解除するだけでよいが,うるさいので -nv をつけた.nano /etc/pacman.conf で開いて編集.
/etc/pacman.conf
XferCommand = /usr/bin/wget -nv -passive-ftp -c -O %o %u
ようやく動く.
$ pacman -Syyu
おわりに
何も始まってないのにめちゃくちゃ疲れた.一応 pacman は動くようになったが,結局 gpg-agent との通信は成功せず,pacman-key --init は通らず,curl も死んだままである.