原文地址:https://www.lujun9972.win/blog/2020/05/25/使用strace解决pacman提示无法锁定数据库的问题/index.html
某次滚动升级archlinux的时候忘了插电,导致滚动到一半的时候断电了。导致插电后再升级时提示:
:: 正在同步软件包数据库... 错误:无法升级 core (无法锁定数据库) 错误:无法升级 extra (无法锁定数据库) 错误:无法升级 community (无法锁定数据库) 错误:无法升级 multilib (无法锁定数据库) 错误:无法升级 archlinuxcn (无法锁定数据库) 错误:未能成功同步所有数据库
从错误提示我能推测出大概率是升级到一半断电导致某个锁文件未被删除,问题是,这个锁文件在哪呢?
还好有 strace
,可以帮我找出锁文件的路径
sudo strace -e openat pacman -Syu --noconfirm 2>&1
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libalpm.so.12", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libarchive.so.13", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libgpgme.so.11", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libcurl.so.4", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libcrypto.so.1.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3 opena