Arch Linuxでは、rsyncを使用してシステムをバックアップして復元しましたが、私のアプローチ(Arch Wikiから入手しましたが、間違っていることは間違いありませんか?)がPacmanによって削除された古いファイルを保存しているようです。duplicated database entry
アップグレードシステムを使用しようとするとエラーが発生しますpacman -Syu
。どうすればいいですか?
答え1
答え2
答え3
@Schooledと@maulinglawnsの答えを試しましたが、どちらも基本的に私のシステムをブロックしました。
その理由は、source
ランニングlinux-5.4.71
とdest
ランニングがlinux-5.4.72
わずか1日間隔でリリースされたためです。
実行すると、rsync --delete
すべてのカーネルモジュールが削除され、dest/lib/5.4.72/
デフォルトでシステムがレンガになり、重要なファイルシステムがマウントされないなどの問題が発生します。
スナップショットから復元した後btrfs
(神に感謝します!)、次の解決策が見つかりました。
# From https://github.com/hopeseekr/BashScripts/blob/master/arch-pacman-dupe-cleaner
# Copyright © 2020 Theodore R. Smith <[email protected]>
# GPG: 4BF8 2613 1C34 87AC D28F 2AD8 EB24 A91D D612 5690
# License: Creative Commons Attribution v4.0 International
# @see https://unix.stackexchange.com/a/615578/15780
# 0. Login as root.
sudo -s
# 1. Remove the latest dupes from your Pacman DB.
pacman -Syu 2>&1 | grep "duplicated database entry" > /tmp/dupes
for latest in $(for dupe in $(cat /tmp/dupes | awk '{print $5}'); do
ls /var/lib/pacman/local/$dupe* -d | tail -n1; done); do
rm -rvf $latest;
done
rm /tmp/dupes
# 2. Remove system of dupe files.
pacman -Syu 2>&1 > /tmp/update-dupes
cat /tmp/update-dupes | grep "exists in file system" | awk '{print $2}' | xargs rm -vf
# 3. Reinstall everything (this will restore anything deleted in #2.).
pacman -Syu
内容が多いので内容を追加しました。バッシュスクリプトリポジトリ〜のようにarch-pacman-dupe-cleaner
。
答え4
このコマンドは、ディレクトリを/var/lib/pacman/localに変更した後に有効でした。
ls | sort | awk -v re='(.*)-[^-]*-[^-]*$' 'match($0, re, a) { if (!(a[1] in p)){p[a[1]]} else {print} }' | xargs sudo rm -rf