Anything to look out for in a 2.1.9 to 2.1.14-1 upgrade?
Short version: Are there any gotchas in upgrading from 2.1.9 to 2.1.14-1 that I need to look out for? I am, as usual in these cases, looking for the most expedient way to fix a problem I've brought on myself. Some more details... We run the mailman processes on our mail server, a 64-bit Red Hat 5 machine with python 2.4.3. We run the web interface on our web server, which until yesterday was a 32-bit Red Hat 4 machine with python 2.3.4. Yesterday, we replaced the web server hardware with a 64-bit Red Hat 6 machine, which has python 2.6.6, and the web interface stopped working. Delivery to lists is working just fine. In the mailman error log, I see the following: Jan 16 09:53:30 2012 admin(13467): @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ admin(13467): [----- Mailman Version: 2.1.9 -----] admin(13467): [----- Traceback ------] admin(13467): Traceback (most recent call last): admin(13467): File "/opt/mailman/scripts/driver", line 94, in run_main admin(13467): pkg = __import__('Mailman.Cgi', globals(), locals(), [scriptname]) admin(13467): File "/opt/mailman/Mailman/Cgi/listinfo.py", line 27, in <module> admin(13467): from Mailman import MailList admin(13467): File "/opt/mailman/Mailman/MailList.py", line 51, in <module> admin(13467): from Mailman.Archiver import Archiver admin(13467): File "/opt/mailman/Mailman/Archiver/__init__.py", line 17, in <module> admin(13467): from Archiver import * admin(13467): File "/opt/mailman/Mailman/Archiver/Archiver.py", line 32, in <module> admin(13467): from Mailman import Mailbox admin(13467): File "/opt/mailman/Mailman/Mailbox.py", line 21, in <module> admin(13467): import mailbox admin(13467): File "/usr/lib64/python2.6/mailbox.py", line 18, in <module> admin(13467): import email.message admin(13467): ImportError: No module named message I'm trying to figure out if there's an easy way to fix this, that *won't* break delivery to the lists. Any hints much appreciated.
Steve Burling wrote:
Short version:
Are there any gotchas in upgrading from 2.1.9 to 2.1.14-1 that I need to look out for? I am, as usual in these cases, looking for the most expedient way to fix a problem I've brought on myself.
There are no gotcha's in upgrading from 2.1.9 to 2.1.14-1, but there are gotcha's in upgrading a RedHat rpm installation from a source distribution. See the FAQ at http://wiki.list.org/x/KYCB and the patch in the mailman-developers post linked from that FAQ. But, see below. [...]
Yesterday, we replaced the web server hardware with a 64-bit Red Hat 6 machine, which has python 2.6.6, and the web interface stopped working. Delivery to lists is working just fine. In the mailman error log, I see the following:
Jan 16 09:53:30 2012 admin(13467): @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ admin(13467): [----- Mailman Version: 2.1.9 -----] admin(13467): [----- Traceback ------] admin(13467): Traceback (most recent call last): admin(13467): File "/opt/mailman/scripts/driver", line 94, in run_main admin(13467): pkg = __import__('Mailman.Cgi', globals(), locals(), [scriptname]) admin(13467): File "/opt/mailman/Mailman/Cgi/listinfo.py", line 27, in <module> admin(13467): from Mailman import MailList admin(13467): File "/opt/mailman/Mailman/MailList.py", line 51, in <module> admin(13467): from Mailman.Archiver import Archiver admin(13467): File "/opt/mailman/Mailman/Archiver/__init__.py", line 17, in <module> admin(13467): from Archiver import * admin(13467): File "/opt/mailman/Mailman/Archiver/Archiver.py", line 32, in <module> admin(13467): from Mailman import Mailbox admin(13467): File "/opt/mailman/Mailman/Mailbox.py", line 21, in <module> admin(13467): import mailbox admin(13467): File "/usr/lib64/python2.6/mailbox.py", line 18, in <module> admin(13467): import email.message admin(13467): ImportError: No module named message
I'm trying to figure out if there's an easy way to fix this, that *won't* break delivery to the lists. Any hints much appreciated.
You can fix this by removing the email directory from /usr/lib/mailman/pythonlib so that Mailman will use the Python 2.6 email package instead of Mailman's which is not compatible, but this won't fix all the Mailman 2.1.9/Python 2.6.x incompatibilities. However, I have other questions. Is RedHat distributing Mailman 2.1.9 with Python 2.6.6? If so, this is bad, and see http://wiki.list.org/x/OIDD. If not, perhaps there is a RedHat RPM you can use to upgrade. OTOH, from the paths I see in the traceback above (prefix = /opt/mailman), it seems your current Mailman may have been installed from source rather than a RedHat RPM. If this is the case, just configure Mailman 2.1.14-1 with the same options you used for 2.1.9, stop mailman, make install and start mailman and you should be OK. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On 1/16/12 12:09 PM, "Mark Sapiro" mark@msapiro.net wrote:
You can fix this by removing the email directory from /usr/lib/mailman/pythonlib so that Mailman will use the Python 2.6 email package instead of Mailman's which is not compatible, but this won't fix all the Mailman 2.1.9/Python 2.6.x incompatibilities.
Would doing this also break mail delivery, since the contents of /usr/lib64/python2.4/email (on the mail delivery machine) look very different than the contents of /usr/lib64/python2.6/email on the web server?
At this point, the question is academic, though, see below.
However, I have other questions.
Is RedHat distributing Mailman 2.1.9 with Python 2.6.6? If so, this is bad, and see http://wiki.list.org/x/OIDD. If not, perhaps there is a RedHat RPM you can use to upgrade.
OTOH, from the paths I see in the traceback above (prefix = /opt/mailman), it seems your current Mailman may have been installed from source rather than a RedHat RPM. If this is the case, just configure Mailman 2.1.14-1 with the same options you used for 2.1.9, stop mailman, make install and start mailman and you should be OK.
This is, indeed, an installation from source. I've been reading the list long enough that I've never actually used a Red Hat packaged version of mailman.
Red Hat is delivering mailman 2.1.12-17 with Red Hat 6.
What we think is the most straight-forward fix for this, with the least likelihood of breaking mail delivery, is to run a limited httpd on the mail delivery machine as http://lists.our.domain, and add a re-write rule to our main web server to redirect references to http://www.our.domain/mailman/ to http://lists.our.domain/mailman/ instead.
Does that seem like a reasonable approach?
Steve Burling wrote:
On 1/16/12 12:09 PM, "Mark Sapiro" mark@msapiro.net wrote:
You can fix this by removing the email directory from /usr/lib/mailman/pythonlib so that Mailman will use the Python 2.6 email package instead of Mailman's which is not compatible, but this won't fix all the Mailman 2.1.9/Python 2.6.x incompatibilities.
Would doing this also break mail delivery, since the contents of /usr/lib64/python2.4/email (on the mail delivery machine) look very different than the contents of /usr/lib64/python2.6/email on the web server?
No. It should be OK. The email package shipped with Mailman and installed in Mailman's pythonlib is email 2.5.8. The one in Python 2.6.6 is 4.0.1. The contents shouldn't be that different, just mixed case names in 2.5.8 vs. all lower case in 4.0.1, and missing Python 2.1 and 2.2 compatibility modules and MIME constructors moved to a sub directory.
The mixed case names are mapped to the lower case names in the 4.0.1 package, so Mailman works. The incompatibility arose in your case because Mailman's Mailbox module imports Python's mailbox module and get's the Python 2.6.6 mailbox which then imports email.message, but email has already been imported from Mailman's pythonlib and that email only knows email.Message, not email.message.
In fact, configure and make in recent Mailman will not install email in pythonlib and will remove it if it's there if Python's email is 2.5.8 or newer.
At this point, the question is academic, though, see below.
However, I have other questions.
Is RedHat distributing Mailman 2.1.9 with Python 2.6.6? If so, this is bad, and see http://wiki.list.org/x/OIDD. If not, perhaps there is a RedHat RPM you can use to upgrade.
OTOH, from the paths I see in the traceback above (prefix = /opt/mailman), it seems your current Mailman may have been installed from source rather than a RedHat RPM. If this is the case, just configure Mailman 2.1.14-1 with the same options you used for 2.1.9, stop mailman, make install and start mailman and you should be OK.
This is, indeed, an installation from source. I've been reading the list long enough that I've never actually used a Red Hat packaged version of mailman.
Good.
Red Hat is delivering mailman 2.1.12-17 with Red Hat 6.
What we think is the most straight-forward fix for this, with the least likelihood of breaking mail delivery, is to run a limited httpd on the mail delivery machine as http://lists.our.domain, and add a re-write rule to our main web server to redirect references to http://www.our.domain/mailman/ to http://lists.our.domain/mailman/ instead.
Does that seem like a reasonable approach?
That may or may not be viable. You probably would need to also set
DEFAULT_URL_HOST = 'lists.our.domain'
in Mailman and run fix_url. Otherwise, the action URLs in forms are likely to be www.our.domain URLs and the redirect will lose the POST data from form submissions.
If I were you, I would just upgrade Mailman. There should be no problem in upgrading a 2.1.9 source install to 2.1.14-1.
I'm guessing here, but if you have Mailman installed on the mail server and only the web portion running on the web server with the Mailman files shared via NFS or other file sharing, you could just stop sharing Mailman's pythonlib and create an empty directory on the web server. With Python 2.6.6, there is nothing in Mailman's pythonlib that isn't also in Python.
-- Mark Sapiro mark@msapiro.net The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
participants (2)
-
Mark Sapiro
-
Steve Burling