Bod has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to install Net::Stripe onto shared hosting where I do not have access to compilers.

The module has been downloaded using a technique from marto over here -> Re^5: HTML::Calendar alternative.
I am not really understanding why or what is happening but, using cpanm --look Net::Stripe the modules get downloaded to /home/[user]/.cpan/build/Net-Stripe-0.42-0/lib/Net/. From there I am manually copying the file Stripe.pm and the directory Stripe to /home/[user]/perl/usr/lib/perl5/Net and I can use the module.

It complained that Kavorka wasn't installed so I got that using the same method.

Now it is complaining about PadWalker and I have tried the same again. But instead of saying the the module cannot be found I am getting the error: Can't locate loadable object for module PadWalker in @INC (@INC contains: /home/[user]/perl5/lib/perl5 etc etc etc .) at /home/shoples1/perl5/lib/perl5/Kavorka.pm line 8. Having looked at this post - Can't locate loadable object for module X in @INC (@INC contains: ... ) - and a few others I think I understand the error...

But...there are shared objects in the PadWalker directory:

PadWalker.bs PadWalker.c PadWalker.xs
Any ideas how I can install Net::Stripe given the compiler limitation?

Replies are listed 'Best First'.
Re: Installing PadWalker
by ikegami (Patriarch) on Mar 27, 2021 at 06:12 UTC

    From there I am manually copying

    Those weren't the instructions you were given. You asked how to pass custom options (noxs) to Makefile.PL, so you were told to use

    cpanm --look Date::Simple perl Makefile.PL noxs make make test make install

    This is basically exactly what cpanm Date::Simple does, except it passes noxs to Makefile.PL.

    That wouldn't work here -- noxs is specific to Date::Simple -- but the point is you weren't told to avoid the installer (by that post), and it shouldn't be surprising that doing so can lead to problems.

    Seeking work! You can reach me at ikegami@adaelis.com

Re: Installing PadWalker
by haukex (Archbishop) on Mar 27, 2021 at 08:29 UTC
    shared hosting where I do not have access to compilers

    The options of cross-compiling or building the module on a system that is similar enough to your hosting environment have been discussed before.

    There are also other hosting providers that give you shared hosting with a compiler.

    It also may be worth it to pick up the thought of switching to a VPS again. Yes, it's work, and having a system with root access does mean responsibility, but it's also a lot of freedom - the freedom you're currently lacking, and that is causing you extra work (getting XS modules installed).

    Perhaps an intermediate step would be for you to set up a virtual machine on your local system that you can use to "practice" on, and this can also be your test system that mirrors the production system later on. You can get Ubuntu Server 20.04 LTS here ("Manual server installation"), and getting it running inside a VM like VirtualBox is fairly easy.

      It also may be worth it to pick up the thought of switching to a VPS again. Yes, it's work, and having a system with root access does mean responsibility, but it's also a lot of freedom

      Yes - it probably is...
      You have nailed the reasons why it hasn't happened yet. Work to migrate all the existing domains and tools that live on them, responsibility for having root access and being able to break things I don't understand and the learning curve needed to make it all happen.

      There are similarities to the refactoring I am currently doing - changing an entire site from hard coded to implementing Template. It was a bullet to bite, a learning curve and a fair degree of work but actually, I've found that templates are easier and quicker to create as well as being easier to maintain later on. The reason for refactoring to templates was to be able to implement AB testing into the core of the site but other benefits have been found for which I shall be eternally grateful to The Monastery.

      I plan to set up a Linux box at home and start using it for some of my everyday tasks - mostly as a learning resource. It's something that I have not got around to yet...

        You have nailed the reasons why it hasn't happened yet. Work to migrate all the existing domains and tools that live on them, responsibility for having root access and being able to break things I don't understand and the learning curve needed to make it all happen.

        That's understandable of course.

        If you were to provide the information Corion asked for here, we could perhaps give some tips on how you could compile your modules on a different machine and then upload them to your hosting provider.

        You could always just pay for hosting that provides what you need, rather than pay someone not to provide what you need.

      Can you suggest how I can find out which flavour of *nix is running on the virtual server?

      I've tried:

      cat /etc/os-release lsb_release -a
      They tell me that the file and command respectively do not exist.

      uname -r 10.0-962.3.2.lve1.5.39.el7.x86_64
      Where else might I find more information so I can look into building a virtual machine or even a physical replica?

        10.0-962.3.2.lve1.5.39.el7.x86_64

        I think that's RHEL7 or one of the many OSes based on it, like CentOS*. Perhaps your hosting provider's support would be willing to answer that question more precisely?

        Where else might I find more information so I can look into building a virtual machine or even a physical replica?

        I searched for "redhat linux virtualbox" on YouTube and found a bunch of video tutorials. (Just make sure to download stuff from the official pages only.)

        * Update: I see you just posted 11130454, which gives more hints: uname='linux buildfarm02.cloudlinux.com ...' suggests CloudLinux OS, a CentOS derivative.

        "Where else might I find more information so I can look into building a virtual machine or even a physical replica?"

        Ask the people that you pay for this service?

Re: Installing PadWalker
by LanX (Saint) on Mar 27, 2021 at 01:35 UTC
    XS modules need to be C-compiled.

    I remember talking about the possibility to compile them on similar architecture and copy the binaries manually.

    But that's hearsay beyond my expertise, sorry.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

Re: Installing PadWalker
by ikegami (Patriarch) on Mar 27, 2021 at 06:23 UTC

    Any ideas how I can install Net::Stripe given the compiler limitation?

    You'd have to perform the download (e.g. cpanm --look Date::Simple), perl Makefile.PL and make steps of the installation on a sufficiently-similar machine. Then you'd copy the build directory over to the target machine and perfrom the make test and make install steps there.

    I would first try to install the C compiler (from binaries) on the target machine.

    Seeking work! You can reach me at ikegami@adaelis.com

Re: Installing PadWalker
by Bod (Parson) on Apr 07, 2021 at 13:55 UTC
    I am trying to install Net::Stripe onto shared hosting where I do not have access to compilers

    In case anybody comes across this thread node in future, I have found that Business::Stripe is a simpler implementation of the Stripe payment gateway. Plus, it is pure Perl so doesn't require a compiler and it is working whilst I solve that issue.

Re: Installing PadWalker
by Anonymous Monk on Mar 27, 2021 at 01:45 UTC

    I am trying to install Net::Stripe onto shared hosting where I do not have access to compilers.

    If it needs a compiler, its not gonna happen without a compiler.

    You don't have to have a compiler uploaded on the host...

    But...there are shared objects in the PadWalker directory:

    .dll or .so are loadable objects

      .dll or .so are loadable objects

      So are the .xs and .c files source code to be compiled?

        So are the .xs and .c files source code to be compiled?

        That's correct. If you're not compiling them on the target machine, they need to be complied on a machine with at least the same architecture and the same Perl version as the target machine - optimally as similar to the target machine as possible, since there's a lot of moving parts involved - and only then could you copy the built files over to the target and it should work.