docker / docker-install

Docker installation script
https://get.docker.com
Apache License 2.0
2.46k stars 783 forks source link

Ubuntu 20.04 apt-get update fails - cannot get apt lists lock #366

Open atheiman opened 1 year ago

atheiman commented 1 year ago

Installing docker on AWS EC2 on an Ubuntu 20.04.6 AMI using https://get.docker.com/ is failling for me with the below error:

+ sudo -E sh -c apt-get-update -qq >/dev/null
E; Could not get lock /var/lib/apt/lists/lock. It is held by process 2023 (apt-get)
E: Unable to lock directory /var/lib/apt/lists/

Looks like as of apt 1.9.11 there is an option to wait for the lock to be released rather than failing immediately: apt-get -o DPkg::Lock::Timeout=60 install FOO.

Could -o DPkg::Lock::Timeout=120 be added to any apt-get commands?

This can be used for apt version checking and adding the arg if apt version > 1.9:

APT_VERSION="$(apt --version | tr ' ' '\n' | grep -E '[0-9]+\.[0-9]+\.[0-9]+')"
APT_ARGS=""

if [ "$(echo $APT_VERSION | cut -d '.' -f 1)" -gt 1 ]; then
  # apt version 2.0 or newer
  APT_ARGS="-o DPkg::Lock::Timeout=120"
elif [ "$(echo $APT_VERSION | cut -d '.' -f 2)" -gt 9 ]; then
  # apt version 1.10 or newer
  APT_ARGS="-o DPkg::Lock::Timeout=120"
fi

echo "APT_ARGS: '$APT_ARGS'"
echo apt-get $APT_ARGS update -q
apt-get $APT_ARGS update -q
easy-and-simple commented 1 year ago

Reboot and try again. This issue happens if packet manager is opened by some reason