34 lines
921 B
Bash
34 lines
921 B
Bash
#!/bin/bash
|
|
|
|
LOCKFILE=/var/cache/fedoracommunity/fedora-packages-yum.lock
|
|
|
|
rebuild=$(cat <<"EOF"
|
|
echo 'Trying makecache.'
|
|
/usr/bin/yum makecache -c /etc/fedoracommunity/yum-repo.conf --enablerepo=*
|
|
echo 'Releasing $LOCKFILE'
|
|
EOF
|
|
)
|
|
nuke_and_rebuild=$(cat <<"EOF"
|
|
echo 'Nuking.'
|
|
rm /var/cache/fedoracommunity/packages/tmp/var/lib/rpm/__db.*
|
|
/usr/bin/rpmdb --root=/var/cache/fedoracommunity/packages/tmp/var/lib/rpm --rebuilddb
|
|
echo 'Trying makecache again now.'
|
|
/usr/bin/yum makecache -c /etc/fedoracommunity/yum-repo.conf --enablerepo=*
|
|
echo 'Releasing $LOCKFILE'
|
|
EOF
|
|
)
|
|
|
|
|
|
echo "Acquiring $LOCKFILE..."
|
|
flock $LOCKFILE -c "$rebuild"
|
|
|
|
|
|
# If it failed, then try to nuke and rebuild the rpmdb first.
|
|
if [ $? -eq 1 ] ; then
|
|
echo 'makecache failed... sleeping for 10 seconds.'
|
|
sleep 10
|
|
echo 'Waking. Now trying to rebuild the rpmdb.'
|
|
|
|
echo "Acquiring $LOCKFILE..."
|
|
flock $LOCKFILE -c "$nuke_and_rebuild"
|
|
fi
|