Exit installer if dpkg lock is held for more then 30 seconds

Signed-off-by: Christian König <ckoenig@posteo.de>
This commit is contained in:
Christian König 2022-04-04 16:38:30 +02:00
parent 0d74b27101
commit cd3c97f113
No known key found for this signature in database
GPG Key ID: 4CDA6F249DD2B485
1 changed files with 21 additions and 16 deletions

View File

@ -259,6 +259,27 @@ os_check() {
fi
}
# This function waits for dpkg to unlock, which signals that the previous apt-get command has finished.
test_dpkg_lock() {
i=0
# fuser is a program to show which processes use the named files, sockets, or filesystems
# So while the lock is held,
while fuser /var/lib/dpkg/lock >/dev/null 2>&1
do
# we wait half a second,
sleep 0.5
# increase the iterator,
((i=i+1))
# exit if waiting for more then 30 seconds
if [[ $i -gt 60 ]]; then
echo "*** Error: Could not verify package manager finished and released lock. Attempt to install packages manually and retry.";
exit 1;
fi
done
# and then report success once dpkg is unlocked.
return 0
}
# Compatibility
package_manager_detect() {
# First check to see if apt-get is installed.
@ -302,22 +323,6 @@ package_manager_detect() {
# and config file
LIGHTTPD_CFG="lighttpd.conf.debian"
# This function waits for dpkg to unlock, which signals that the previous apt-get command has finished.
test_dpkg_lock() {
i=0
# fuser is a program to show which processes use the named files, sockets, or filesystems
# So while the lock is held,
while fuser /var/lib/dpkg/lock >/dev/null 2>&1
do
# we wait half a second,
sleep 0.5
# increase the iterator,
((i=i+1))
done
# and then report success once dpkg is unlocked.
return 0
}
# If apt-get is not found, check for rpm.
elif is_command rpm ; then
# Then check if dnf or yum is the package manager