Archive

雑に yay -Syu したら壊れた version 20240318

ArchLinux のAURヘルパーはいまだに yay を使っているんだけど、先日(2024-03-18)おもむろにアップデートしたところ壊れたので、その辺のトラブルシューティングをメモ

起こったこと

$ yay -Syu

==> Making package: yay-bin 12.3.4-1 (Mon 18 Mar 2024 11:15:06 AM JST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found yay_12.3.4_x86_64.tar.gz
==> Validating source_x86_64 files with sha256sums...
    yay_12.3.4_x86_64.tar.gz ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Extracting yay_12.3.4_x86_64.tar.gz with bsdtar
==> Sources are ready.
==> ERROR: Cannot find the debugedit binary required for including source files in debug packages.
 -> error making: yay-bin-exit status 15
 -> Failed to install the following packages. Manual intervention is required:
yay-bin - exit status 15

こんな感じでアップデートが中断。このあと libalpm.so.13 がないというメッセージとともに yay が動かなくなった

$ yay -Syu
yay: error while loading shared libraries: libalpm.so.13: cannot open shared object file: No such file or directory

ちなみに libalpm.so を見ると libalpm.so.14 へのシムリンクになっていたのでバージョンが上がったことによる影響だと思われる

$ ls -l /usr/lib/libalpm.so
lrwxrwxrwx 1 root root 13 Mar 16 02:46 /usr/lib/libalpm.so -> libalpm.so.14*

解決策

大体この手のやつは yay のGitHub IssueかAURのページを見ると解決策が書いてあることがあり、今回は AUR ページのほうにこれで解消したという報告があった。ありがたく使わせてもらった。

yay: error while loading shared libraries: libalpm.so.13: cannot open shared object file: No such file or directory

This will happen if you upgrade pacman and yay separately If you have this error you need to manually recompile yay

pacman -S --needed git base-devel git clone https://aur.archlinux.org/yay.git cd yay makepkg -si


AUR (en) - yay: jguer commented on 2024-03-16 08:06 (UTC) より

ちなみに、確か base-devel は入っていたはずだし改めて入れなくてもいいかなと思ってすっ飛ばして以下の通りに実行したが、どうも debugedit-5.0-5 パッケージがないとメッセージがでて動かなかった

$ cd work/draft-repo
$ git clone https://aur.archlinux.org/yay.git
$ makepkg -si
==> ERROR: Cannot find the debugedit binary required for including source files in debug packages.

素直に全部の手順を実施。すると今度は「 yay-debug がすでにあるぞ」とエラーになった

$ sudo pacman -S --needed git base-devel
warning: git-2.44.0-1 is up to date -- skipping
resolving dependencies...
looking for conflicting packages...

Packages (2) debugedit-5.0-5  base-devel-1-1

Total Download Size:   0.04 MiB
Total Installed Size:  0.10 MiB

-- -- snip -- --

$ makepkg -si
==> Making package: yay 12.3.4-1 (Mon 18 Mar 2024 11:17:57 AM JST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...

-- -- snip -- --

(2/2) checking for file conflicts                                              [############################################] 100%
error: failed to commit transaction (conflicting files)
yay-debug: /usr/lib/debug/usr/bin/yay.debug exists in filesystem (owned by yay-bin-debug)
Errors occurred, no packages were upgraded.
==> WARNING: Failed to install built package(s).

「上書きしつつインストール・アップデートのオプションは yay および pacman にあったと思うんだけど、makepkg だとどうなんだろう?」というのを確認するのが面倒になって雑に既存のものをリネーム。まあ消しちゃってもいいんだろうけど。1

$ sudo mv /usr/lib/debug/usr/bin/yay.debug /usr/lib/debug/usr/bin/yay.debug.20240318

ここまでやって無事にアップデートが完全に通った

$ makepkg -si
==> WARNING: A package has already been built, installing existing package...
==> Installing package yay with pacman -U...
loading packages...
resolving dependencies...
looking for conflicting packages...
:: yay-12.3.4-1 and yay-bin-12.3.1-1 are in conflict. Remove yay-bin? [y/N] y

Packages (3) yay-bin-12.3.1-1 [removal]  yay-12.3.4-1  yay-debug-12.3.4-1

Total Installed Size:  11.91 MiB
Net Upgrade Size:       2.80 MiB

:: Proceed with installation? [Y/n]
(2/2) checking keys in keyring                                                 [############################################] 100%
(2/2) checking package integrity                                               [############################################] 100%
(2/2) loading package files                                                    [############################################] 100%
(2/2) checking for file conflicts                                              [############################################] 100%
:: Processing package changes...
(1/1) removing yay-bin                                                         [############################################] 100%
(1/2) installing yay                                                           [############################################] 100%
Optional dependencies for yay
    sudo: privilege elevation [installed]
    doas: privilege elevation
(2/2) installing yay-debug                                                     [############################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

ちなみに、このトラブルが起こったのはしばらくアップデートをサボっていた WSL 環境で発生した。一方でそこそここまめにアップデートをしていたプライベートマシンでは発生しなかったので必ずしも今回の件を踏むわけではなさそうではある。


  1. yay,pacman の --overwrite オプションを使ってもいいと思う