[Solved] Unified installer: why remote versions.cfg files?

I'd be nice to include full versions.cfg files in the unified installer (without links to remote versions files), in order to install Plone from a buildout cache. That would allow to install Plone without being connected to Internet, and to ensure that all versions of packages are stable.

For example, Plone-5.2.5-UnifiedInstaller-1.0 contains ./buildout_templates/buildout.cfg that is extended with https://dist.plone.org/release/5.2.5/versions.cfg, which is further extended with https://zopefoundation.github.io/Zope/releases/4.6.3/versions.cfg

Of course I can download the versions.cfg files and repackage the installer (using a fancy script), but I wonder: if there's a good reason to extend the versions from remote files?

1 Like

It's a good question, and I wonder if there is an answer for "local installation"

Ultimately, you're looking for "offline installation" so you can hand someone a DVD (or 12) to install Plone.

But this is a dependency map problem at it's heart, and dependencies are always being updated and changed and every time they are changed the package owner has to broadcast that change somehow.

But you are right that the entire map is pretty 'constant' between Plone releases because of the extreme care taken in version pins.

This is a really good question, and I'm slightly leaning towards the status-quo. Maybe because I remember doing an ultra-paranoid download of Debian woody onto 20+ CD's because I didn't trust my network and was paranoid about mmtm attacks, and that's kind of where this discussion is heading.

Sorry this doesn't answer your question well. It feels more opinion than solid argument.

I won't touch the old installer anymore, but PRs are always welcome.

Alternative 1: If you take the plone-backend Docker image everything is included there.

Alternative 2: With pip wheel you can create a "wheelhouse" (directory with all wheels) and install offline from there.

Hints: update pip, then

pip wheel Paste Plone -c https://dist.plone.org/release/5.2.9/constraints.txt  --wheel-dir=pth-to/wheelhouse

Transfer the folder to an offline machine and install with

pip install --force-reinstall --no-index --no-deps  path-to/wheelhouse/*

You do not have any Zope configuration yet, copy it from buildout or use cookiecutter-zope-instance (this needs cookiecutter to be part of the wheelhouse and the zip from the cookiecutter-zope-instance github repo).

Thanks @jensens for the tips.

Then it's not worth proposing a PR.

I use the Universal Installer when Internet is available, and when the installation is done I create a buildout cache (with a script), then I edit the main installation script (with sed) so it can later use the cache (with or without Internet). For the code that I maintain, it is sourced from local git repos.

With this method I can maintain and reinstall (older versions of) Plone in a VM or a server, but unfortunately Python wheels are targeted to specific systems. Oh well...