Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Upgrading XS module to later version

by sundialsvc4 (Abbot)
on Jun 19, 2015 at 03:22 UTC ( [id://1131102]=note: print w/replies, xml ) Need Help??


in reply to Upgrading XS module to later version

If you felt that you had to “hack” anything, you definitely strayed down the wrong path.   No such thing should be necessary, and, as you can readily guess, it can get you a lot of trouble.   You should be able to treat this like a “install modules as a non-root user on shard-hosting” situation, specifying (within ordinary cpan/cpanm, and in the usual way) your own “local” package directory and of course your own overrides for PERL5LIB.   At that point, you should be able to install any package, including List::Util, and confirm that the desired copy winds up in that designated place.   You should be able to do all of this with no special privileges at all.   (You want the system libraries, as maintained by the opsys’s package manager, to remain “untouchable,” as they are.)

It should not matter whether the package has any “XS” content or not.

Unfortunately, not every package out there correctly specifies the minimum version that it needs for its prerequisites, and some don’t accurately list the prerequisites that they do have.   The result is that cpan/cpanm does not realize that a later version of something needs to be installed as a pre-/co-requisite.   But you ought to be able to manually install it, then repeat the previous installation, and the manually-installed version ought to be properly seen and incorporated.

Replies are listed 'Best First'.
Re^2: Upgrading XS module to later version
by Anonymous Monk on Feb 11, 2022 at 15:33 UTC
    I ran into the same problem, when trying to install cpan Moose, it says that
    Installing the dependencies failed: Installed version (1.55) of List:: +Util is not in range '1.56'
    Trying to install List::Util with cpanm List::Util seems to work, it show the message
    Successfully installed Scalar-List-Utils-1.60 (upgraded from 1.55)
    But when then trying to run cpan Moose it complains again about error
    Installing the dependencies failed: Installed version (1.55) of List:: +Util is not in range '1.56'
    Obviously, cpanm did not upgrade List::Utils. but installed it in a different directory. When I check the installed packages, I get this
    $ cpan -l |grep List::Util List::Util 1.55 List::Util::XS 1.55 Module::CoreList::Utils 5.20210520 List::Util 1.55 List::Util::XS 1.55 Module::CoreList::Utils 5.20210520 List::Util 1.55 List::Util::XS 1.55 site_perl::List::Util 1.60 site_perl::List::Util::XS 1.60 List::Util 1.60 List::Util::XS 1.60 List::Util 1.60 List::Util::XS 1.60 List::Util 1.55 List::Util::XS 1.55 Module::CoreList::Utils 5.20210520 List::Util 1.55 List::Util::XS 1.55
    It is not clear to me how to ensure that the newer version should used.

      do you have multiple perls installed? Are you using perlbrew or local::lib? What does which cpan and which cpanm show?

        Yes, I've multiple versions of perl.
        There are the perl modules from the operation system (in my case Debian 10, or 11, I tested both)
        Then I've compiled Perl 5.32.1 and 5.34.0 from source, and I'm trying to install Moose as part of any of these version.
        The software will be installed as seperate packages on a computing cluster on an nfs-storage.

        I use neither perlbrew nor local::lib, but install from source with

        export PREFIX=/my/install/directory/perl/5.34.0/ ./Configure -des -Dprefix=$PREFIX \ -Dusethreads \ -Duseshrplib \ -Dinc_version_list=none make -j4 && make test && make install
        Once perl is installed, these environment variables are set:
        export PERL5LIB=$PREFIX/lib export PATH=$PREFIX/bin:$PATH export MANPATH=$PREFIX/man:$PATH export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH
        and cpan is installed with
        curl -L https://cpanmin.us | perl - App::cpanminus
        The command " which cpan cpanm " results in displaying the version in
        $PREFIX/bin/cpan $PREFIX/bin/cpanm

        This is solved now. The packages are installed in $PREFIX/lib/site_perl, and I had to set

        PERL5LIB=$PREFIX/lib/site_perl

        That seems to fix the issue.

        BTW: the information was quite difficult to find, because I did not see any documentation about that, but had to infer this from "man perlrun ->ENVIRONMENT" and from what cpan(m) is doing.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1131102]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (2)
As of 2024-04-19 19:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found