[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Solutions for the Apache upgrade hell

Jeff Epler wrote:
> Russ Allbery wrote:
> > I use apt dist-upgrade normally and then, periodically, run:
> >     dpkg --get-selections | grep deinstall | awk '{ print $1 }' \
> >         | xargs dpkg --purge
> > 
> > This is obviously somewhat unsafe.  It would be neat to have a tool that
> > would do this properly without involving dodgy greps that might match
> > package names and other obvious issues.
> Slightly better might be
>     dpkg --get-selections | awk '{if ($2 == "deinstall") { print $1 } }'
> though I see there's a way to say this in aptitude to directly say what
> you want.

As long as we are tuning...  I prefer grep-status for this.  This
returns a list of package names of packages that have been removed but
still have config files behind.  Those in the dpkg "rc" state.

  grep-status -sPackage -n -FStatus "deinstall ok config-files"
    -s print only that field, otherwise print full paragraph
    -n no print field name, just value
    -F field to search

If that list is reasonable then this.  It just feels more precise.

  dpkg --purge $(grep-status -sPackage -n -FStatus "deinstall ok config-files")

Don't forget about the "deborphan" and "orphaner" packages either.


P.S. AWK is design to operate by fields.  I am sure I am not the only
one who saw the "if $2" above and thought it should be like this:

  awk '$2=="deinstall"{print$1}'

Attachment: signature.asc
Description: Digital signature

Reply to: