https://wiki.archlinux.org/index.php/Pacman_Tips_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 如何恢复Pacman的本地数据库
https://bbs.archlinux.org/viewtopic.php?pid=616234#p616234
升级pacman 3.5 后来跑到/var/lib/pacman 里,不小心把本地数据库目录给删了,后来按上面的方法恢复了本地数据库,结果 pacman -Sh 时发现了一个新的参数
-k, --dbonly 仅修改数据库条目,而非软件包文件
记录一下,不过下回也难得再删一次了
[code]
cat log2pkglist.awk
#!/bin/awk -f
$3 ~ /^(installed|upgraded)$/ {
pkg[$4] = 1
next
}
$3 == "removed" {
pkg[$4] = 0
}
END {
for (i in pkg) if (pkg[i]) print i
}
[/code]
[code]
#!/bin/bash
tmp=./tmp
mkdir -p "${tmp}"
pushd "${tmp}"
dbpath=$(readlink -f ./dbpath)
root=$(readlink -f ./root)
#cache=$(readlink -f ./cache)
cache=$(readlink -f /var/cache/pacman/pkg/)
log=/dev/null
mkdir -p "${dbpath}" "${cache}" "${root}"
popd
echo "dbpath = ${dbpath}"
echo "root= ${root}"
echo "cache = ${cache}"
echo "log = ${log}"
recovery-pacman() {
fakeroot pacman "$@" \
--dbpath "${dbpath}" \
--root "${root}" \
--cache "${cache}" \
--log "${log}" \
--noscriptlet \
--dbonly \
#
}
recovery-powerpill() {
fakeroot powerpill "$@" \
--dbpath "${dbpath}" \
--root "${root}" \
--cache "${cache}" \
--log "${log}" \
--noscriptlet \
--dbonly \
#
}
recovery-all()
{
recovery-pacman -S --nodeps --needed $(< pkglist)
}
[/code]
转载于:https://blog.51cto.com/axlrose/1287258