deepin-community-live-cd/cd-tools/pardus-boot-repair/usr/bin/fix-broken-packages

33 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
set +e
while [[ ! -b /dev/$disk ]] ; do
echo $(ls /sys/block/* | grep "[0-9]$")
echo -n "Rootfs partition >>> "
read disk
done
mount /dev/$disk /mnt
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
[[ ! -d /mnt/var/lib/dpkg ]] && exit 1
cat /etc/resolv.conf > /mnt/etc/resolv.conf
rm -rf /mnt/etc/apt/sources.list.d
mkdir -p /mnt/etc/apt/sources.list.d
rm -rf /mnt/var/lib/apt/lists/*
export DEBIAN_FRONTEND=noninteractive
chroot /mnt apt update
chroot /mnt apt install -f -y
chroot /mnt dpkg -l | grep "^i[A-Z]" | tr -s " " | cut -f 2 -d " " | while read package ; do
chroot /mnt dpkg --configure -a
chroot /mnt dpkg -r --force-depends $package
chroot /mnt apt install -f --allow-downgrades --allow-change-held-packages -o Dpkg::Options::="--force-confnew" -y
done
sync
for dir in dev/pts dev sys proc ; do
while umount -lf "/mnt/$dir" 2>/dev/null; do : ;done
done
umount -lf /mnt 2>/dev/null
echo -en "\033[32;1mPress any key to continue\033[;0m"
read -n 1