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 件のコメント:
コメントを投稿