简体   繁体   中英

Perl a cpan installation into a specific repository

Hel lo, I'm actually installing a perl module called HmmCleaner here :

https://metacpan.org/pod/HmmCleaner.pl

for that I use :

/beegfs/data/me/perl-5.30.1/localperl/bin/cpan Bio::MUST::Apps::HmmCleaner

But I'm actually into a shared cluster where we have 2 principal directories :

/beegfs/home/me

And

/beegfs/data/me 

and in the home repository I have a threshold of number of chunk files to not

I have a threshold that I cannot exceed of the number of chunk files and when I run the /beegfs/data/me/perl-5.30.1/localperl/bin/cpan Bio::MUST::Apps::HmmCleaner command, for some reason some files are created into the home directory and when I look into the log file I see that something is wrong at this moment :

! Installing Bio::MUST::Core::Utils failed. See /beegfs/home/me/.cpanm/work/1580931498.36405/build.log for details. Retry with --force to force install it.
Warning: unable to close filehandle $out properly: Disk quota exceeded at /beegfs/data/me/perl-5.30.1/localperl/bin/cpanm line 49.
Warning: unable to close filehandle $out properly: Disk quota exceeded at /beegfs/data/me/perl-5.30.1/localperl/bin/cpanm line 49.
Warning: unable to close filehandle $out properly: Disk quota exceeded at /beegfs/data/me/perl-5.30.1/localperl/bin/cpanm line 49.

But when I look into the disk quota in data , both memory and chuck file limit is not reached, but for the home the number of chunk files is exceeded!

Does someone know how can I force to run all the files created in the installation into the data repository instead of home?

Thank you for your help.

for polarbear :

When I do :

/beegfs/data/me/perl-5.30.1/localperl/bin/cpan -D local::lib

I get : Loading internal logger. Log::Log4perl recommended for better logging

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] yes
Fetching with LWP:
http://www.cpan.org/authors/01mailrc.txt.gz
Reading '/beegfs/home/me/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
http://www.cpan.org/modules/02packages.details.txt.gz
Reading '/beegfs/home/me/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Thu, 06 Feb 2020 08:41:03 GMT
.............
  New CPAN.pm version (v2.27) available.
  [Currently running version is v2.22]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


...............................................................DONE
Fetching with LWP:
http://www.cpan.org/modules/03modlist.data.gz
Reading '/beegfs/home/me/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /beegfs/home/me/.cpan/Metadata
local::lib
-------------------------------------------------------------------------
    (no description)
    H/HA/HAARG/local-lib-2.000024.tar.gz
    (no installation file)
    Installed: not installed
    CPAN:      2.000024  Not up to date
    Graham Knop (HAARG)
    haarg@haarg.org

Lets follow next scenario

mv ~/.cpam /beegfs/data/me
ln -s /beegfs/data/me/.cpan ~/.cpan
HOME=/beegfs/data/me perl -Mlocal::lib > ~/.lib_perl

these commands will

  • move $HOME/.cpan directory from $HOME to /beegfs/data/me
  • symlink it in $HOME directory
  • run perl with local::lib module
  • it will check for $SHELL
  • output configuration variables to $HOME/.lib_perl file

Now source $HOME/.lib_perl in your shell environment according your $SHELL (bash - .bashrc, csh - .cshrc, ...) on login into system.

As you work remotely you have to logout and login to pickup changes (do it in separate terminal just in case if you do something wrong and you need back door to revert your changes).

At this point you should be able to use cpan to install modules into /beegfs/data/me/perl5 directory.

Check if local::lib is installed with following command

cpan -D local::lib

If it is installed then head to following webpage local::lib and do some reading - pay attention to point #4.

Otherwise check if cpanm is available in your system.

As an option you can set variables manually

PERL_MB_OPT
PERL_MM_OPT
PERL5LIB
PATH
PERL_LOCAL_LIB_ROOT

Before setting private library check that you have write permission on storage directory.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM