2019年12月31日火曜日

Arch Linuxでunable to lock databaseエラーが出てアップデートできない時の対処法

Arch Linuxでunable to lock databaseエラーが出てアップデートできない
Arch Linuxのアップデート中にパソコンがフリーズしたため、パソコンを強制終了してしまった。その後、パソコンを起動させると問題なく使えたが、pacmanのアップデートができなくなっていた。

「unable to lock database」というエラーが出て、アップデートがエラー終了してしまう状態になった。

この記事では、Arch Linuxで「unable to lock database」のエラーにより、アップデートできない時の対処法についてまとめておく。


unable to lock databaseのエラーの症状
pacmanでアップデート中にパソコンを強制終了した後に、再度アップデートした時に出たエラーは以下の通り。

「unable to lock database」のエラーが出て、アップデートができない状態になっていた。
# pacman -Syu

:: Synchronizing package databases...
error: failed to update core (unable to lock database)
error: failed to update extra (unable to lock database)
error: failed to update community (unable to lock database)
error: failed to update archlinuxfr (unable to lock database)
error: failed to synchronize all databases

unable to lock databaseのエラーの解決策
pacmanはアップデート中に、/var/lib/pacman/db.lckというファイルを作成し、データベースをロックしているみたい。アップデート中にpacmanを強制終了させてしまうと、このdb.lckファイルが残ってしまいアップデートができなくなってしまう。

したがって、残っているdb.lckを削除すれば良い。以下の通り、管理者権限で/var/lib/pacman/db.lckを削除する。

# rm /var/lib/pacman/db.lck 

/var/lib/pacman/db.lck削除後の、/var/lib/pacmanディレクトリの中身はlocal, syncのみとなる。
$ ls /var/lib/pacman/
local  sync

この状態で、再度pacmanでパッケージアップデートを実行してみる。
# pacman -Syu

:: Synchronizing package databases...
 core                              135.0 KiB  1154 KiB/s 00:00 [##################################] 100%
 extra                            1642.4 KiB   982 KiB/s 00:02 [##################################] 100%
 community                           4.8 MiB  2.45 MiB/s 00:02 [##################################] 100%
 archlinuxfr is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
...

しかし、一部前回のアップデートでダウンロード中のパッケージファイルが残っており、以下のように「invalid or corrupted package (PGP signature)」のエラーがでた。パッケージが完全にダウンロードされずにpacmanが強制終了されたため、ダウンロード途中のパッケージファイルが残存してしまっていると思われる。

全て「Y」を選択し、壊れたパッケージファイルを削除する。
...
(123/123) checking keys in keyring                             [##################################] 100%
(123/123) checking package integrity                           [##################################] 100%
error: iana-etc: signature from "Gaetan Bisson " is invalid
:: File /var/cache/pacman/pkg/iana-etc-20191212-1-any.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: libcap: signature from "Anatol Pomozov " is invalid
:: File /var/cache/pacman/pkg/libcap-2.28-1-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: bash-completion: signature from "Bartlomiej Piotrowski " is invalid
:: File /var/cache/pacman/pkg/bash-completion-2.10-1-any.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: mkinitcpio-busybox: signature from "Giancarlo Razzolini (grazzolini) " is invalid
:: File /var/cache/pacman/pkg/mkinitcpio-busybox-1.31.1-1-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: gconf: signature from "Andreas Radke " is invalid
:: File /var/cache/pacman/pkg/gconf-3.2.6+11+g07808097-5-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: failed to commit transaction (invalid or corrupted package)
Errors occurred, no packages were upgraded.

再度、pacmanでパッケージアップデートを実行してみる。以下の通り、今までのようにアップデートできるようになった。
# pacman -Syu

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 archlinuxfr is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
...


参考:

[1]Pacmanに関するトラブルシューティング - Manjaro Linux

スポンサーリンク

スポンサーリンク


関連コンテンツ


この記事をシェアする

0 件のコメント:

コメントを投稿