How to Install Plone4.0?

I want to "renovate" an old Plone 4.0 site, but I am having trouble recreating the site on a current system because of missing dependencies, which I can't find on PyPI.

My initial thought was to install Plone 4.0, bring up the site, then gradually upgrade until I'm at 6.0. Eg. I don't know where to get Zope 2.12.1, probably required for Plone 4.0.

Can someone please provide me with a pointer?

Other ideas about how to resurrect the content, which makes heavy use of custom AT content types, are also highly appreciated!

Toni Müller via Plone Community wrote at 2023-12-8 21:46 +0000:

My initial thought was to install Plone 4.0, bring up the site, then gradually upgrade until I'm at 6.0. Eg. I don't know where to get Zope 2.12.1, probably required for Plone 4.0.

You can try to follow
"Installing Zope with zc.buildout — Zope 2 documentation 2.13 documentation".
It is about the installation of Zope 2.13, but replacing Zope 2.12
by Zope 2.13 likely will not make a problem.

1 Like

Thank you for the idea, but it doesn't seem to be that easy because the system required to run this (afaik this version needs Python 2.6) is too old to be compatible with PyPI's and other website's requirements regarding SSL and TLS. If you say that Plone 4.0 should also run on Zope 2.13 and with Python 2.7, the situation is much less dire. I'll definitely give this a try.

There is no "gradual upgrade" from 4 to 6. Get your data out of Plone 4 and import them into Plone 6.
collective.exportimport is your friend. Everything else is a death march project.

Good to know, thank you!

The point is that you need to migrate from Archetypes to Dexterity and from Python 2 to Python 3.
There is not really a reasonable migration path in small steps. Ensure that your content-types are available on Plone 6 under Python 3 with Dexterity, This is the first step for an export-import migration. Supplementary business logic and views are second priority, third-party add-ons are low-priority.

This Plone Upgrade Guide may be helpful.

I got the same Problem. But collective.exportimport does not install on a productive Plone4 Site. And installing another PLone 4 also does not work.
We ended in copying the most important objects of Plone4 handish into the new PLONE6 Site.
Why can PLONE developers not learn from Wordpress or Drupal. where such migrations work easy?

Why not? I've been using collective.exportimport on a couple of Plone 4 sites lately.

We've migrated a bunch of Plone 3,4,5 sites lately to Plone 6.

The Plone stack is much more complicated regarding dependencies as Wordpress or Drupal.
Data migration using collective.exportimport is pretty easy these days. Code migration of your own add-ons from Python 2 to Python 3 is different thing (easy when you are already on Dexterity). Third-party add-ons are a different subject and require special considerations.

We also have seen enough case of Plone mis-use, badly written add-ons, badly designed add-ons that will break your neck at some point.

I reported in ealier Posts serveral times about the Problem insttalling collective.exportimport in PLONE 4. But could not get any Help to make it work.
BTW: Wordpress and Drupal have as many add-ons als PLONE, but migrate quite easy. We only used well known add ons in PLONE.

Thank you all so far! Before I can dive into the ins and outs of collective.exportimport, I need to find a way to install Plone 4.0, I guess. There are a handful of custom AT based products which account for the bulk of the content, and I have source code for these. But once I add Plone 4.0.10 to the minimal buildout which installs only Zope, I somehow incur a ton of version conflicts. The reason for the breakage is that buildout tries to fetch the latest of everything, and so the process I'm following at the moment, is to run buildout, see where the versions conflict, and try to pin them to values that should at least get me an installed system. At the moment, I'm not finding elementtree = 1.2.7-20070827-preview, required for TinyMCE. I'm trying to work around it by creating my own elementtree product (some wrapper around xml.etree.ElementTree, plus boilerplate to make it an egg), because I can't see how to not install TinyMCE. But if anyone would have a list of pinnings to share, that would be great, because I have burnt many hours on pinnings so far.

The easiest way to get all the correct versions is to extend this file :

For elementtree, you can still find this version in various places on the web. Like this one :

Hope it will help !

1 Like

Hi Laurent,

of course I extend this file, but there are many pinnings which look like "> x.y.z", but not "< a.b.c", and then, buildout routinely picks the latest of everything, which should be suitable for Zope 5.9, Plone 5.x or 6.x or so, but not for Zope 2.13 and Plone 4.0. Therefore, I'm running buildout, discover that it wants some flashy new stuff, then pin whatever is too new, down to hopefully match 2.13, then try again. Thank you for the pointer to elementtree!

buildout routinely picks the latest of everything,

Maybe it helps to add the following to your base.cfg or buildout.cfg under [buildout] to prevent the buildout from picking the latest version: newest = false.

Thank you for the suggestion, but it still keeps finding the latest packages if it doesn't have them. So for now, I need to keep iterating through the buildout - pin a package - rinse and repeat process.

Do you have examples of versions conflicts ?
Because all pinnings in versions.cfg are "=", not ">".

1 Like

Brainstorming: Would it be possible to 'just' copy these from the former Plone site (they are probably in the 'buildout-cache' folder)

1 Like

In buildout you can also recreate version pinnings manually from a bin/instance file which lists all the eggs in use.

I was just successfully installing Plone 4.3 using: GitHub - collective/minimalplone4: Minimal buildout configuration for Plone4

git clone
cd minimalplone4
pyenv local 2.7.18
virtualenv -p python2 venv
./venv/bin/pip install -r requirements.txt
./bin/instance fg