What's the easiest way to install a missing Perl module?

前端 未结 24 2706
情深已故
情深已故 2020-11-21 05:28

I get this error:

Can\'t locate Foo.pm in @INC

Is there an easier way to install it than downloading, untarring, making, etc?

相关标签:
24条回答
  • 2020-11-21 05:31

    Seems like you've already got your answer but I figured I'd chime in. This is what I do in some scripts on an Ubuntu (or debian server)

    #!/usr/bin/perl
    
    use warnings;
    use strict;
    
    #I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
    $ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';
    
    #Fill this with the perl modules required for your project
    my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);
    
    chomp(my $curl = `which curl`);
    
    if(!$curl){ system('apt-get install curl -y > /dev/null'); }
    
    chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));
    
    #installs cpanm if missing
    if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }
    
    #loops through required modules and installs them if missing
    foreach my $x (@perl){
        eval "use $x";
        if($@){
            system("cpanm $x");
            eval "use $x";
        }
    }
    

    This works well for me, maybe there is something here you can use.

    0 讨论(0)
  • 2020-11-21 05:33

    Try App::cpanminus:

    # cpanm Chocolate::Belgian
    

    It's great for just getting stuff installed. It provides none of the more complex functionality of CPAN or CPANPLUS, so it's easy to use, provided you know which module you want to install. If you haven't already got cpanminus, just type:

    # cpan App::cpanminus
    

    to install it.

    It is also possible to install it without using cpan at all. The basic bootstrap procedure is,

    curl -L http://cpanmin.us | perl - --sudo App::cpanminus
    

    For more information go to the App::cpanminus page and look at the section on installation.

    0 讨论(0)
  • 2020-11-21 05:33

    Even it should work:

    cpan -i module_name
    
    0 讨论(0)
  • 2020-11-21 05:35

    If you want to put the new module into a custom location that your cpan shell isn't configured to use, then perhaps, the following will be handy.

     #wget <URL to the module.tgz>
     ##unpack
     perl Build.PL
    ./Build destdir=$HOME install_base=$HOME
    ./Build destdir=$HOME install_base=$HOME install
    
    0 讨论(0)
  • 2020-11-21 05:36

    Use cpan command as cpan Modulename

    $ cpan HTML::Parser
    

    To install dependencies automatically follow the below

    $ perl -MCPAN -e shell
    cpan[1]>  o conf prerequisites_policy follow
    cpan[2]>  o conf commit
    exit
    

    I prefer App::cpanminus, it installs dependencies automatically. Just do

    $ cpanm HTML::Parser
    
    0 讨论(0)
  • 2020-11-21 05:36

    On Fedora you can use

    # yum install foo
    

    as long as Fedora has an existing package for the module.

    0 讨论(0)
提交回复
热议问题