Skip to content

Instantly share code, notes, and snippets.

@jarfil
Created May 2, 2015 06:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jarfil/54387fcca74f67f142da to your computer and use it in GitHub Desktop.
Save jarfil/54387fcca74f67f142da to your computer and use it in GitHub Desktop.
Automate apt-get avoiding major damage, suitable for cron
#!/bin/bash
EMAIL="example@example.com"
DEVEL=false
# clean downloaded packages if none pending for dist-upgrade
if ! $DEVEL ; then apt-get --assume-no dist-upgrade && apt-get clean ; fi
# update, upgrade, autoremove
apt-get --assume-yes update
apt-get --assume-yes upgrade
if ! $DEVEL ; then apt-get --assume-yes autoremove ; fi
# notify packages waiting for dist-upgrade
apt-get --assume-no dist-upgrade || (
echo From: apt-get@$HOSTNAME
echo Subject: apt-get dist-upgrade
apt-get --assume-no dist-upgrade
) | sendmail $EMAIL
# pre-download packages for dist-upgrade
apt-get --assume-no dist-upgrade || apt-get --download-only --assume-yes dist-upgrade
# remove unused libraries
if ! $DEVEL ; then
while deborphan | grep ^lib ; do
deborphan | grep ^lib | xargs apt-get --assume-yes purge
apt-get --assume-yes autoremove
done
fi
# remove unused transitional packages
for f in `deborphan` ; do
dpkg -l $f |
tail -n1 |
grep -i "transitional" &> /dev/null &&
echo $f
done | xargs apt-get --assume-yes purge
if ! $DEVEL ; then apt-get --assume-yes autoremove ; fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment