查看文章 |
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] |

