How do I upgrade a Debian/Ubuntu Mailman package from source.
Upgrading the Debian/Ubuntu package from source is not difficult even though various pieces of Mailman are spread throughout the file hierarchy. The package actually configures everything in the $prefix directory (/var/lib/mailman) and directories which aren't actually there are symlinked from there.
The first step is to download the source tarball and unpack it into its own directory. Then you need to decide whether to try to apply any Debian patches. I suggest not doing so. I think the only thing you'll notice is the absence of the 'debian powered' logo at the bottom of Mailman's web pages.
After unpacking and possibly patching, you need to run configure. The appropriate command to run in the unpack directory is
./configure --prefix=/var/lib/mailman --with-username=list --with-groupname=list --with-cgi-gid=www-data --with-mail-gid=list --with-mailhost=YOUR.EMAIL.DOMAIN --with-urlhost=YOUR.WEB.DOMAIN
The values for YOUR.EMAIL.DOMAIN and YOUR.WEB.DOMAIN are not critical and the two options can be omitted entirely as they only set DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in Mailman/Defaults.py and these are normally overridden in Mailman/mm_cfg.py in the Debian package.
If configure complains that you don't have the dnspython package which is required beginning with Mailman 2.1.18, you can install it with
sudo apt-get install python-dnspython
and then rerun configure. Then you run
make sudo service mailman stop sudo make install sudo service mailman start
to complete the installation. This should be all you need, but the first time I did this on a newly installed Ubuntu package, I found that several directories were missing the SETGID bit as were the wrapper files in /usr/lib/cgi-bin/mailman/ and /usr/lib/mailman/mail/ and several files and directories were group root instead of list. Subsequent installs didn't have this problem. If you have problems of this nature, the attached check.py script run via
sudo python check.py
should fix them.