Perl-Toolchain-Gang / local-lib

local::lib - create and use a local lib/ for perl modules with PERL5LIB
Other
24 stars 10 forks source link

Install local::lib with --bootstrap requires local::lib? #11

Closed wiraki closed 2 years ago

wiraki commented 2 years ago

Hello,

I am working on a system where I do not have root privileges. I am trying to install local::lib so that I can then install other perl modules locally.

I was following the bootstrap instructions and tried the 2 following commands: perl Makefile.PL --bootstrap perl Makefile.PL --bootstrap=~/perl5

Both fail with:

Can't locate local/lib.pm in @INC (@INC contains: lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 110.

I am confused as it seems it is then asking for local::lib, which is is precisely what I am trying to install?

Thanks in advance for the help.

haarg commented 2 years ago

Can you share the output of perl -V?

The error shows that @INC includes lib, which is where it should be loading local::lib from. Are you using a normal extracted tarball?

wiraki commented 2 years ago

which is where it should be loading local::lib from

I probably misunderstand something, but how could it load it, if it's what I am trying to install?

Yes, I downloaded the tarball from: wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000028.tar.gz

perl -V output:

Summary of my perl5 (revision 5 version 10 subversion 1) configuration:

  Platform:
    osname=linux, osvers=2.6.18-406.el5, archname=x86_64-linux-thread-multi
    uname='linux x86-032.build.eng.bos.redhat.com 2.6.18-406.el5 #1 smp fri may 1 10:37:57 edt 2015 x86_64 x86_64 x86_64 gnulinux '
    config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DDEBUGGING=-g -Dversion=5.10.1 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 -Dprivlib=/usr/share/perl5 -Darchlib=/usr/lib64/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl -Dvendorarch=/usr/lib64/perl5/vendor_perl -Dinc_version_list=5.10.0 -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dusesitecustomize'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.4.7 20120313 (Red Hat 4.4.7-16)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -fstack-protector'
    libpth=/usr/local/lib64 /lib64 /usr/lib64
    libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.12'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL
                        USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                        USE_PERLIO USE_REENTRANT_API USE_SITECUSTOMIZE
  Built under linux
  Compiled at Oct  1 2015 08:57:45
  @INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5
    .
haarg commented 2 years ago

The tarball includes lib/local/lib.pm. That is what it is trying to load. It does not need to be installed to be loaded. The bootstrapping process uses the module to do part of its work.

wiraki commented 2 years ago

I see.

❯ tree
.
├── Changes
├── inc
│   ├── CheckVersion.pm
│   └── CPANBootstrapper.pm
├── LICENSE
├── Makefile.PL
├── MANIFEST
├── META.json
├── META.yml
├── README
└── t
    ├── bad_variables.t
    ├── carp-mismatch.t
    ├── classmethod.t
    ├── de-dup.t
    ├── lib-core-only.t
    ├── pipeline.t
    ├── shell.t
    ├── stackable.t
    ├── subroutine-in-inc.t
    └── taint-mode.t

This doesn't seem to have it. I will try to download it from here, rather than the cpan site.

wiraki commented 2 years ago

Ok, cloning from here works.

Thanks a lot!

haarg commented 2 years ago

You seem to be missing a number of files there. On a fresh extract of the tarball, I get this:

$ tree
.
|-- Changes
|-- LICENSE
|-- MANIFEST
|-- META.json
|-- META.yml
|-- Makefile.PL
|-- README
|-- eg
|   `-- scripted_install.pl
|-- inc
|   |-- CPANBootstrapper.pm
|   `-- CheckVersion.pm
|-- lib
|   |-- POD2
|   |   |-- DE
|   |   |   `-- local
|   |   |       `-- lib.pod
|   |   `-- PT_BR
|   |       `-- local
|   |           `-- lib.pod
|   |-- lib
|   |   `-- core
|   |       `-- only.pm
|   `-- local
|       `-- lib.pm
|-- maint
|   `-- Makefile.PL.include
|-- t
|   |-- bad_variables.t
|   |-- carp-mismatch.t
|   |-- classmethod.t
|   |-- de-dup.t
|   |-- lib
|   |   |-- ENVDumper.pm
|   |   `-- TempDir.pm
|   |-- lib-core-only.t
|   |-- pipeline.t
|   |-- shell.t
|   |-- stackable.t
|   |-- subroutine-in-inc.t
|   `-- taint-mode.t
`-- xt
    |-- author
    |   |-- cpan-changes.t
    |   `-- pod-syntax.t
    |-- bootstrap.t
    |-- cpan-bootstrap.pl
    |-- cpan-bootstrap.t
    |-- install.t
    |-- lib
    |   `-- dist_util.pm
    `-- release
        |-- eol.t
        `-- no-tabs.t

18 directories, 36 files