in reply to CygPerl question: what to expect from update when Cygwin releases 5.42

I think I remember that the core language modules will not update, but rather are updated as a separate package from cygwin.com (is this right?).

Like with many OS distros, Cygwin splits core Perl into two packages: perl and perl_base. I don't know what each provides. If you have both installed and you upgrade one, you should upgrade the other one too. Hopefully, that's automatic. Having core modules that don't match your perl would be a problem.

And what about the vendor modules?

Other Perl packages installed with Cygwin's package manager should have dependencies that forces their update when Perl is updated to something incompatible (a different major version). If not, just select to update all the Perl-related packages when you upgrade the core Perl ones. The package manager will make clear what's being updated.

And what about the vendor modules? But mostly, what about the modules in site_perl locations, modules I've built and installed myself?

Cygwin's package manager doesn't know anything about those, so it can't reinstall them for the new Perl. Fortunately, Cygwin appears to use versioned paths. So the modules that need reinstalling will simply vanish from perl's sight rather than malfunction.

For more control, use perlbrew.

Replies are listed 'Best First'.
Re^2: CygPerl question: what to expect from update when Cygwin releases 5.42
by Intrepid (Curate) on Oct 20, 2025 at 18:02 UTC

    Sorry to take so long to acknowledge your reply, ikegami. What I have done so far has merely been to execute in the bash shell this command pipeline:

    find /usr/local/share/perl5/site_perl/5.40 | cpio -p -d -B --dot --force-local --reset-access-time --make-directori +es \ --preserve-modification-time H:/

    Where H:/ is an external USB pendrive. It's an unsophisticated and limited way to try to ensure I can get back to having the site_perl - installed modules re-installable, safely preserved no matter what bone-headed choices I make with my main CygPerl installation (the system Perl provided by Cygwin, in my case). But I confess I am not clear on the how and why of Perl versioning – in this case, perl 5.42 will install modules to /usr/local/share/perl5/site_perl/5.42, right?.

    Cygwin appears to use versioned paths. So the modules that need reinstalling will simply vanish from perl's sight rather than malfunction.

    Yes, ok. I just don't grasp why all of the modules under the versioned dir need to be reinstalled – if they aren't xs (compiled extensions) why wouldn't they behave properly with a newer perl? I've never understood this.

        — Soren

    Oct 20, 2025 at 17:57 UTC

      perl 5.42 will install modules to /usr/local/share/perl5/site_perl/5.42, right?.

      The package manager shouldn't touch site_perl at all. Non-core modules it installs should be installed in the vendor dirs.

      If we're talking about modules you install yourself, then the paths can be configured when perl is built. perl -V:'^install.*' will show the installation dirs used by a perl. That said, /usr/local/share/perl5/site_perl/5.42 seems likely if /usr/local/share/perl5/site_perl/5.40 was previously used.

      I just don't grasp why all of the modules under the versioned dir need to be reinstalled

      Because someone decided to install them in a versioned dir.

      That said, that's a good practice because they might have XS dependencies.

      The package manager shouldn't touch site_perl at all.