[26643] in Source-Commits
Re: /svn/athena r25664 - trunk/debathena/config/auto-update/debian
daemon@ATHENA.MIT.EDU (Geoffrey Thomas)
Tue Jul 31 16:34:26 2012
Date: Tue, 31 Jul 2012 13:34:23 -0700 (PDT)
From: Geoffrey Thomas <geofft@MIT.EDU>
To: Jonathan D Reed <jdreed@MIT.EDU>
cc: source-commits@MIT.EDU
In-Reply-To: <201207271721.q6RHL7a7026341@drugstore.mit.edu>
Message-ID: <alpine.DEB.2.00.1207311333550.11524@dr-wily.mit.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Plausible. Does this work on all apt-get versions that we support? I feel
like some of this apt-get behavior is new-ish.
--
Geoffrey Thomas
geofft@mit.edu
On Fri, 27 Jul 2012, Jonathan D Reed wrote:
> Author: jdreed
> Date: 2012-07-27 13:21:07 -0400 (Fri, 27 Jul 2012)
> New Revision: 25664
>
> Modified:
> trunk/debathena/config/auto-update/debian/athena-auto-update
> trunk/debathena/config/auto-update/debian/changelog
> Log:
> In auto-update:
> * Give up and switch to apt-get, because aptitude is incompetent (Trac:
> #1020, #1026, #1145
> * Drop support for reactivate-1.x machines.
>
>
> Modified: trunk/debathena/config/auto-update/debian/athena-auto-update
> ===================================================================
> --- trunk/debathena/config/auto-update/debian/athena-auto-update 2012-07-27 14:40:33 UTC (rev 25663)
> +++ trunk/debathena/config/auto-update/debian/athena-auto-update 2012-07-27 17:21:07 UTC (rev 25664)
> @@ -1,6 +1,7 @@
> #!/bin/sh
>
> complain() {
> + echo "ERROR: $*"
> logger -t "athena-auto-update" -p user.notice "$*"
> updstatus="failed"
> updmsg="$*"
> @@ -15,6 +16,7 @@
> else
> updstatus="warning"
> updmsg="$*"
> + echo "WARNING: $*"
> fi
> }
>
> @@ -137,7 +139,6 @@
> echo "** Ending Athena auto-update at $(date)"
> echo "-----"
> echo
> - rm -f /etc/apt/apt.conf.d/99zzzzzdebathena-inhibit-pre-and-post-hooks
> rm -f $pidfile
> rm -f /var/run/athena-nologin
> save_state
> @@ -226,10 +227,10 @@
> fi
> fi
>
> -echo "Running aptitude install"
> -if ! v aptitude --quiet --assume-yes install; then
> - # Don't fail, because make dpkg --configure -a will save us
> - echo "ERROR: aptitude install failed, but continuing anyway"
> +echo "Running apt-get install"
> +if ! v apt-get --fix-broken --assume-yes install; then
> + # Don't fail, because maybe dpkg --configure -a will save us
> + echo "ERROR: apt-get install failed, but continuing anyway"
> fi
>
>
> @@ -265,9 +266,9 @@
> exit
> fi
>
> -# Update the aptitude cache.
> -if ! v aptitude --quiet --assume-yes update; then
> - complain "aptitude update failed"
> +# Update the apt cache.
> +if ! v apt-get --assume-yes update; then
> + complain "apt-get update failed"
> exit
> fi
>
> @@ -293,44 +294,29 @@
>
> # Exit quietly (except for perhaps rebooting) if there are no upgrades
> # to take.
> -pattern='^0 packages upgraded, 0 newly installed, 0 to remove'
> -if v aptitude --simulate --assume-yes full-upgrade | grep -q "$pattern"; then
> +pattern='^0 upgraded, 0 newly installed, 0 to remove'
> +if v apt-get --simulate --assume-yes dist-upgrade | grep -q "$pattern"; then
> echo "Nothing to do!"
> save_success "No updates"
> maybe_reboot
> exit
> fi
>
> -echo "Inhibiting dpkg-preconfigure to work around aptitude bugs..."
> -cat > /etc/apt/apt.conf.d/99zzzzzdebathena-inhibit-pre-and-post-hooks <<APTCONF
> -// This file should only exist while an auto-update is in progress.
> -// It will be removed without notice. You have been warned.
> -#clear DPkg::Pre-Install-Pkgs;
> -#clear DPkg::Post-Invoke;
> -#clear DPkg::Pre-Invoke;
> -APTCONF
> -
> # Download packages first.
> -if ! v withtimeout aptitude --quiet --assume-yes --download-only full-upgrade; then
> +echo "Downloading packages..."
> +if ! v apt-get --quiet --assume-yes --download-only dist-upgrade; then
> complain "download failed"
> exit
> fi
>
> -# If the debathena-reactivate package is installed, call into the
> -# login snapshot script to create a root snapshot for the next update.
> -if [ -x /usr/sbin/athena-login-snapshot ]; then
> - echo "** Creating root snapshot"
> - /usr/sbin/athena-login-snapshot update-start
> -fi
> -
> -APTITUDE_OPTS=
> +APTGET_OPTS=
> case $UPDATE_FORCE_CONFFILE in
> old)
> - APTITUDE_OPTS="-o Dpkg::Options::=--force-confold"
> + APTGET_OPTS="-o Dpkg::Options::=--force-confold"
> export UCF_FORCE_CONFFOLD=1
> ;;
> new)
> - APTITUDE_OPTS="-o Dpkg::Options::=--force-confnew"
> + APTGET_OPTS="-o Dpkg::Options::=--force-confnew"
> export UCF_FORCE_CONFFNEW=1
> ;;
> *)
> @@ -340,37 +326,26 @@
> esac
>
>
> -# Perform the update. In some corner cases, aptitude might decide
> +# Perform the update. In some corner cases, apt-get might decide
> # that the best course of action is to remove the Debathena
> # metapackage, so be paranoid about that.
> -v aptitude --quiet --assume-yes keep-all
> -v withtimeout aptitude --quiet --assume-yes --download-only dist-upgrade
> -rm -f /etc/apt/apt.conf.d/99zzzzzdebathena-inhibit-pre-and-post-hooks
> -if result=$(aptitude -F "%p" search '?action(remove) (^debathena-cluster$ | ^debathena-workstation$ | ^debathena-login$ | ^debathena-standard$ | ^openafs-modules-~D^linux-image-)')
> - [ -n "$result" ]; then
> - echo "** metapackages would be removed by the update, aborting:" $result
> - v aptitude --quiet --assume-yes keep-all
> - complain "metapackages would be removed by update:" $result
> -elif result=$(aptitude -F "%p" search '~b')
> - [ -n "$result" ]; then
> - echo "** packages would be broken by the update, aborting:" $result
> - v aptitude --quiet --assume-yes keep-all
> - complain "packages would be broken by update:" $result
> +result="$(apt-get --quiet --assume-yes --simulate dist-upgrade)"
> +if [ $? -ne 0 ]; then
> + complain "apt-get simulation failed!"
> +elif echo "$result" | egrep -q '^Remv debathena-(cluster|workstation|login-graphical|login|standard|auto-update) '; then
> + complain "metapackages would be removed by update:" $result
> else
> - if v aptitude $APTITUDE_OPTS --quiet --assume-yes install; then
> + if v apt-get $APTGET_OPTS --quiet --assume-yes dist-upgrade; then
> # Successful update, reset $updlast
> updlast=$(date +"%s")
> save_success "Successful update"
> + else
> + complain "Simulation was successful, but update failed (shouldn't happen)"
> fi
> fi
>
> # Finally, update the apt-file cache
> v apt-file update
>
> -if [ -x /usr/sbin/athena-login-snapshot ]; then
> - echo "** Cleaning up root snapshot"
> - /usr/sbin/athena-login-snapshot update-end
> -fi
> -
> maybe_reboot
> exit
>
> Modified: trunk/debathena/config/auto-update/debian/changelog
> ===================================================================
> --- trunk/debathena/config/auto-update/debian/changelog 2012-07-27 14:40:33 UTC (rev 25663)
> +++ trunk/debathena/config/auto-update/debian/changelog 2012-07-27 17:21:07 UTC (rev 25664)
> @@ -1,11 +1,13 @@
> debathena-auto-update (1.37) unstable; urgency=low
>
> * Bump debian/compat to 6
> - * Inhibit all dpkg pre- and post- hooks during the download phase (Trac: #1020)
> * Be more verbose in auto-upgrade
> * rotate auto-upgrade logs
> + * Give up and switch to apt-get, because aptitude is incompetent (Trac:
> + #1020, #1026, #1145
> + * Drop support for reactivate-1.x machines.
>
> - -- Jonathan Reed <jdreed@mit.edu> Fri, 27 Jul 2012 10:40:22 -0400
> + -- Jonathan Reed <jdreed@mit.edu> Fri, 27 Jul 2012 13:14:14 -0400
>
> debathena-auto-update (1.36) unstable; urgency=low
>
>
>