diff options
author | Andy Dougherty (via RT) <perlbug-followup@perl.org> | 2009-07-16 14:19:38 -0700 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2009-07-24 16:13:09 +0100 |
commit | 8be81670efd5c716b867a67eb0b5cd714615ee01 (patch) | |
tree | 512b0a3e955abb12f7c31b7e0726216600e3a177 /INSTALL | |
parent | 204c62e5157169ca4f697bec7688e0289db7d771 (diff) | |
download | perl-8be81670efd5c716b867a67eb0b5cd714615ee01.tar.gz |
Proposed INSTALL patches for 5.10.1 @INC discussion
# New Ticket Created by Andy Dougherty
# Please include the string: [perl #67630]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=67630 >
Here is my proposal for how to update the "Coexistence with earlier
versions of perl 5" section for 5.10.1. I welcome comments and
corrections.
(Note that to actually get this @INC my previous patch [perl #67628] will
need to be applied. I'm awaiting verification that it works for others
before applying it.)
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 75 |
1 files changed, 27 insertions, 48 deletions
@@ -2266,8 +2266,9 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html =head1 Coexistence with earlier versions of perl 5 -Perl 5.10 is not binary compatible with earlier versions of Perl. -In other words, you will have to recompile your XS modules. +This version is not binary compatible with releases of Perl prior +to 5.10.0. In other words, you will have to recompile any XS modules +installed under version 5.8.9 (or earlier). In general, you can usually safely upgrade from one version of Perl (e.g. 5.X.Y) to another similar minor version (e.g. 5.X.(Y+1))) without @@ -2278,60 +2279,38 @@ Usually, most extensions will probably not need to be recompiled to be used with a newer version of Perl. Here is how it is supposed to work. (These examples assume you accept all the Configure defaults.) -Suppose you already have version 5.8.7 installed. The directories -searched by 5.8.7 are typically like: +Suppose you already have versions 5.8.9 and 5.10.0 installed, and you +are now installing 5.10.1. The directories searched by version 5.10.1 +will be: - /usr/local/lib/perl5/5.8.7/$archname - /usr/local/lib/perl5/5.8.7 - /usr/local/lib/perl5/site_perl/5.8.7/$archname - /usr/local/lib/perl5/site_perl/5.8.7 + /usr/local/lib/perl5/5.10.1/$archname + /usr/local/lib/perl5/5.10.1 + /usr/local/lib/perl5/site_perl/5.10.1/$archname + /usr/local/lib/perl5/site_perl/5.10.1 -Now, suppose you install version 5.8.8. The directories -searched by version 5.8.8 will be: + /usr/local/lib/perl5/site_perl/5.10.0/$archname + /usr/local/lib/perl5/site_perl/5.10.0 + /usr/local/lib/perl5/site_perl/5.8.9 + /usr/local/lib/perl5/site_perl - /usr/local/lib/perl5/5.8.8/$archname - /usr/local/lib/perl5/5.8.8 - /usr/local/lib/perl5/site_perl/5.8.8/$archname - /usr/local/lib/perl5/site_perl/5.8.8 - - /usr/local/lib/perl5/site_perl/5.8.7/$archname - /usr/local/lib/perl5/site_perl/5.8.7 - /usr/local/lib/perl5/site_perl/ - -Notice the last three entries -- Perl understands the default structure +Notice the last four entries -- Perl understands the default structure of the $sitelib directories and will look back in older, compatible -directories. This way, modules installed under 5.8.7 will continue -to be usable by 5.8.7 but will also accessible to 5.8.8. Further, -suppose that you upgrade a module to one which requires features -present only in 5.8.8. That new module will get installed into -/usr/local/lib/perl5/site_perl/5.8.8 and will be available to 5.8.8, -but will not interfere with the 5.8.7 version. - -The last entry, /usr/local/lib/perl5/site_perl/, is there so that -5.6.0 and above will look for 5.004-era pure perl modules. - -Lastly, suppose you now install 5.10.1, which is not binary compatible -with 5.8.x. The directories searched by 5.10.1 (if you don't change the -Configure defaults) will be: - - /usr/local/lib/perl5/5.10.1/$archname - /usr/local/lib/perl5/5.10.1 - /usr/local/lib/perl5/site_perl/5.10.1/$archname - /usr/local/lib/perl5/site_perl/5.10.1 +directories. It will load up architecture-dependent modules from your +5.10.0 installation, and pure perl modules from either your 5.10.0 or +5.8.9 installations. The last entry, /usr/local/lib/perl5/site_perl/, +is there for 5.004-era pure perl modules. - /usr/local/lib/perl5/site_perl/5.8.8 - - /usr/local/lib/perl5/site_perl/5.8.7 - - /usr/local/lib/perl5/site_perl/ - -Note that the earlier $archname entries are now gone, but pure perl -modules from earlier versions will still be found. +Next, suppose that you now upgrade a module to one which requires +features present only in 5.10.1. That new module will get installed into +/usr/local/lib/perl5/site_perl/5.10.1 and will be available to 5.10.1, +but will not interfere with the 5.10.0 version. This way, you can choose to share compatible extensions, but also upgrade to a newer version of an extension that may be incompatible with earlier versions, without breaking the earlier versions' installations. +This search order is scheduled for revision starting in version 5.11.0. + =head2 Maintaining completely separate versions Many users prefer to keep all versions of perl in completely @@ -2340,9 +2319,9 @@ won't interfere with another version. (The defaults guarantee this for libraries after 5.6.0, but not for executables. TODO?) One convenient way to do this is by using a separate prefix for each version, such as - sh Configure -Dprefix=/opt/perl5.10.0 + sh Configure -Dprefix=/opt/perl5.10.1 -and adding /opt/perl5.10.0/bin to the shell PATH variable. Such users +and adding /opt/perl5.10.1/bin to the shell PATH variable. Such users may also wish to add a symbolic link /usr/local/bin/perl so that scripts can still start with #!/usr/local/bin/perl. |