Skip Menu |

This queue is for tickets about the local-lib CPAN distribution.

Report information
The Basics
Id: 85667
Status: resolved
Priority: 0/
Queue: local-lib

People
Owner: Nobody in particular
Requestors: nmi [...] tpg.com.au
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: 2.000003



Subject: local lib environment variable setting problems
Date: Tue, 28 May 2013 15:37:32 +1000
To: bug-local-lib [...] rt.cpan.org
From: Chris McCowage <nmi [...] tpg.com.au>
Hi Having difficulty installing local-lib. Environment variables generated seem to have circular references and cause tcsh interpretation errors liz:~/xxx/local-lib-1.008009% perl -I$HOME/perl5/lib/perl5 -Mlocal::lib setenv PERL_LOCAL_LIB_ROOT "$PERL_LOCAL_LIB_ROOT:/home/lxz/yyy/perl5" setenv PERL_MB_OPT "--install_base /home/lxz/yyy/perl5" setenv PERL_MM_OPT "INSTALL_BASE=/home/lxz/yyy/perl5" setenv PERL5LIB "/home/lxz/yyy/perl5/lib/perl5:$PERL5LIB" setenv PATH "/home/lxz/yyy/perl5/bin:$PATH" liz:~/xxx/local-lib-1.008009% more ~/.cshrc setenv PERL_LOCAL_LIB_ROOT "$PERL_LOCAL_LIB_ROOT:/home/lxz/yyy/perl5" setenv PERL_MB_OPT "--install_base /home/lxz/yyy/perl5" setenv PERL_MM_OPT "INSTALL_BASE=/home/lxz/yyy/perl5" setenv PERL5LIB "/home/lxz/yyy/perl5/lib/perl5:$PERL5LIB" setenv PATH "/home/lxz/yyy/perl5/bin:$PATH" liz:~/xxx/local-lib-1.008009% source ~/.cshrc Bad : modifier in $ (/). enclosing the arguments in elipses for tsch causes the following: liz:~/xxx/local-lib-1.008009% setenv PERL_LOCAL_LIB_ROOT "${PERL_LOCAL_LIB_ROOT}:/home/lxz/yyy/perl5" PERL_LOCAL_LIB_ROOT: Undefined variable. Have made a number of previous local-lib-1.008004 installations on other linux boxen without issue. I have spent some time researching this issue without success. Apologies if this is not the appropriate forum, please redirect me if appropriate. I suspect that there are some quite old versions of packages and modules on the host computer. However getting an IT department to update packages can be a bit like extracting teeth from a crocodile. Thanks for developing such a useful facility for working on machines without root access. Regards, Chris Commands: liz:~/xxx/local-lib-1.008009% perl Makefile.PL --bootstrap liz:~/xxx/local-lib-1.008009% make test liz:~/xxx/local-lib-1.008009% make install I was unsure of what was meant by distribution, linux?? liz:~/xxx/local-lib-1.008009% more /etc/debian_version 6.0.4 liz:~/xxx/local-lib-1.008009% uname -a Linux liz 2.6.32-5-amd64 #1 SMP Thu Mar 22 17:26:33 UTC 2012 x86_64 GNU/Linux liz:~/xxx/local-lib-1.008009% perl -V Summary of my perl5 (revision 5 version 10 subversion 1) configuration: Platform: osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-gnu-thread-multi uname='linux barber 2.6.32-5-amd64 #1 smp thu nov 3 03:41:26 utc 2011 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -des' 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='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.4.5', 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='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.11.3.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1 gnulibc_version='2.11.3' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector' 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 Locally applied patches: DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to /etc/perl as /usr may not be writable. DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN. DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check. DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information. DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories. DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes. DEBPKG:debian/extutils_hacks - Various debian-specific ExtUtils changes DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets. DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor. DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy. DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable. DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS. DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy DEBPKG:debian/perl_synopsis - http://bugs.debian.org/278323 Rearrange perl.pod DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need. DEBPKG:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File. DEBPKG:fixes/assorted_docs - http://bugs.debian.org/443733 [384f06a] Math::BigInt::CalcEmu documentation grammar fix DEBPKG:fixes/net_smtp_docs - http://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net::SMTP 'Port' option DEBPKG:fixes/processPL - http://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules. DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local DEBPKG:fixes/pod2man-index-backslash - http://bugs.debian.org/521256 Escape backslashes in .IX entries DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in Compress::Raw::Zlib DEBPKG:fixes/kfreebsd_cppsymbols - http://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD. DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default. DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl. DEBPKG:fixes/kfreebsd-filecopy-pipes - http://bugs.debian.org/537555 [16f708c] Fix File::Copy::copy with pipes on GNU/kFreeBSD DEBPKG:fixes/anon-tmpfile-dir - http://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file DEBPKG:fixes/abstract-sockets - http://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets. DEBPKG:fixes/hurd_cppsymbols - http://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd. DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc DEBPKG:fixes/archive-tar-instance-error - http://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive::Tar instance error strings from each other DEBPKG:fixes/positive-gpos - http://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \G crash on first match DEBPKG:debian/devel-ppport-ia64-optim - http://bugs.debian.org/548943 Work around an ICE on ia64 DEBPKG:fixes/trie-logic-match - http://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626] DEBPKG:fixes/hppa-thread-eagain - http://bugs.debian.org/554218 make the threads-shared test suite more robust, fixing failures on hppa DEBPKG:fixes/crash-on-undefined-destroy - http://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method DEBPKG:fixes/tainted-errno - http://bugs.debian.org/574129 [perl #61976] [be1cf43] fix an errno stringification bug in taint mode DEBPKG:fixes/safe-upgrade - http://bugs.debian.org/582978 Upgrade Safe.pm to 2.25, fixing CVE-2010-1974 DEBPKG:fixes/tell-crash - http://bugs.debian.org/578577 [f4817f3] Fix a tell() crash on bad arguments. DEBPKG:fixes/format-write-crash - http://bugs.debian.org/579537 [perl #22977] [421f30e] Fix a crash in format/write DEBPKG:fixes/arm-alignment - http://bugs.debian.org/289884 [f1c7503] Prevent gcc from optimizing the alignment test away on armel DEBPKG:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed DEBPKG:fixes/hurd-ccflags - http://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts DEBPKG:fixes/lc-numeric-docs - http://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes DEBPKG:fixes/lc-numeric-sprintf - http://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants DEBPKG:fixes/concat-stack-corruption - http://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding' DEBPKG:fixes/cgi-multiline-header - http://bugs.debian.org/606995 [CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and multiline header vulnerabilities DEBPKG:fixes/casing-taint-cve-2011-1487 - http://bugs.debian.org/622817 [perl #87336] fix unwanted taint laundering in lc(), uc() et al. DEBPKG:fixes/safe-reval-rdo-cve-2010-1447 - [PATCH] Wrap by default coderefs returned by rdo and reval DEBPKG:fixes/encode-heap-overflow - [PATCH] Fix decode_xs n-byte heap-overflow security bug in DEBPKG:fixes/digest_eval_hole - Close the eval "require $module" security hole in DEBPKG:fixes/unregister_signal_handler - [PATCH] main: Unregister signal handler before destroying my_perl DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-17squeeze3 in patchlevel.h Built under linux Compiled at Dec 21 2011 09:15:46 @INC: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .
On 2013-05-27 22:38:00, nmi@tpg.com.au wrote: Show quoted text
> Hi > > Having difficulty installing local-lib. > > Environment variables generated seem to have circular references and cause > tcsh interpretation errors > > liz:~/xxx/local-lib-1.008009% perl -I$HOME/perl5/lib/perl5 -Mlocal::lib > setenv PERL_LOCAL_LIB_ROOT "$PERL_LOCAL_LIB_ROOT:/home/lxz/yyy/perl5" > setenv PERL_MB_OPT "--install_base /home/lxz/yyy/perl5" > setenv PERL_MM_OPT "INSTALL_BASE=/home/lxz/yyy/perl5" > setenv PERL5LIB "/home/lxz/yyy/perl5/lib/perl5:$PERL5LIB" > setenv PATH "/home/lxz/yyy/perl5/bin:$PATH" > > liz:~/xxx/local-lib-1.008009% more ~/.cshrc > setenv PERL_LOCAL_LIB_ROOT "$PERL_LOCAL_LIB_ROOT:/home/lxz/yyy/perl5" > setenv PERL_MB_OPT "--install_base /home/lxz/yyy/perl5" > setenv PERL_MM_OPT "INSTALL_BASE=/home/lxz/yyy/perl5" > setenv PERL5LIB "/home/lxz/yyy/perl5/lib/perl5:$PERL5LIB" > setenv PATH "/home/lxz/yyy/perl5/bin:$PATH" > > liz:~/xxx/local-lib-1.008009% source ~/.cshrc > Bad : modifier in $ (/). > > enclosing the arguments in elipses for tsch causes the following: > > liz:~/xxx/local-lib-1.008009% setenv PERL_LOCAL_LIB_ROOT > "${PERL_LOCAL_LIB_ROOT}:/home/lxz/yyy/perl5" > PERL_LOCAL_LIB_ROOT: Undefined variable.
My memories of (t)csh are getting hazy (it isn't even installed on my system for me to check its manpage!). Could it be that it does not cleanly handle undefined variables? If so, then we just need to use the proper shell construct for "use this variable, if it exists, or "" if it doesn't."
I have a fix for this in my refactor branch. If we don't go ahead with the refactor, we can port over that fix.
From: ppisar [...] redhat.com
Dne Pá 25.říj.2013 14:16:38, haarg napsal(a): Show quoted text
> I have a fix for this in my refactor branch. If we don't go ahead > with the refactor, we can port over that fix.
I got bitten with this issue too. I tried haarg/refactor branch, but the CSH output is still wrong: [petr@dhcp-0-146 ~/local-lib]$ git describe 1.008026-28-g0241826 [petr@dhcp-0-146 ~/local-lib]$ perl -Ilib -Mlocal::lib setenv PATH "/home/petr/perl5/bin:$PATH"; setenv PERL5LIB "/home/petr/perl5/lib/perl5:$PERL5LIB"; setenv PERL_LOCAL_LIB_ROOT "/home/petr/perl5:$PERL_LOCAL_LIB_ROOT"; setenv PERL_MB_OPT "--install_base "\""/home/petr/perl5"\"""; setenv PERL_MM_OPT "INSTALL_BASE=/home/petr/perl5"; I'm not CSH expert, but I guess one has to check for a shell variable existence explicitly (${?VARIABLE). -- Petr
On Wed Nov 20 09:31:59 2013, ppisar wrote: Show quoted text
> Dne Pá 25.říj.2013 14:16:38, haarg napsal(a):
> > I have a fix for this in my refactor branch. If we don't go ahead > > with the refactor, we can port over that fix.
> > I got bitten with this issue too. I tried haarg/refactor branch, but > the CSH output is still wrong: > > [petr@dhcp-0-146 ~/local-lib]$ git describe > 1.008026-28-g0241826 > [petr@dhcp-0-146 ~/local-lib]$ perl -Ilib -Mlocal::lib > setenv PATH "/home/petr/perl5/bin:$PATH"; > setenv PERL5LIB "/home/petr/perl5/lib/perl5:$PERL5LIB"; > setenv PERL_LOCAL_LIB_ROOT "/home/petr/perl5:$PERL_LOCAL_LIB_ROOT"; > setenv PERL_MB_OPT "--install_base "\""/home/petr/perl5"\"""; > setenv PERL_MM_OPT "INSTALL_BASE=/home/petr/perl5"; > > I'm not CSH expert, but I guess one has to check for a shell variable > existence explicitly (${?VARIABLE). > > -- Petr
That's what it does in the branch, although there was a bug in the implementation. Fixed now.
From: ppisar [...] redhat.com
Dne Út 28.Květen.2013 01:38:00, nmi@tpg.com.au napsal(a): Show quoted text
> enclosing the arguments in elipses for tsch causes the following: > > liz:~/xxx/local-lib-1.008009% setenv PERL_LOCAL_LIB_ROOT > "${PERL_LOCAL_LIB_ROOT}:/home/lxz/yyy/perl5" > PERL_LOCAL_LIB_ROOT: Undefined variable. >
This is problem even with Bourn shell. Not because of syntax or run-time error, but because of security: Empty PATH variable component denotes current directory. E.g if PATH is not defined, export PATH=/foo:$PATH results into PATH="/foo:" which is equivalent to PATH="/foo:." which means that all commands are search in ./ since now.
On Wed Nov 20 10:58:20 2013, ppisar wrote: Show quoted text
> Dne Út 28.Květen.2013 01:38:00, nmi@tpg.com.au napsal(a):
> > enclosing the arguments in elipses for tsch causes the following: > > > > liz:~/xxx/local-lib-1.008009% setenv PERL_LOCAL_LIB_ROOT > > "${PERL_LOCAL_LIB_ROOT}:/home/lxz/yyy/perl5" > > PERL_LOCAL_LIB_ROOT: Undefined variable. > >
> This is problem even with Bourn shell. Not because of syntax or run- > time error, but because of security: > > Empty PATH variable component denotes current directory. E.g if PATH > is not defined, > > export PATH=/foo:$PATH > > results into PATH="/foo:" which is equivalent to PATH="/foo:." which > means that all commands are search in ./ since now.
That's such a small edge case I'm not sure we really care about it, but I do have a fix for it.
On Wed Nov 20 10:58:20 2013, ppisar wrote: Show quoted text
> Dne Út 28.Květen.2013 01:38:00, nmi@tpg.com.au napsal(a):
> > enclosing the arguments in elipses for tsch causes the following: > > > > liz:~/xxx/local-lib-1.008009% setenv PERL_LOCAL_LIB_ROOT > > "${PERL_LOCAL_LIB_ROOT}:/home/lxz/yyy/perl5" > > PERL_LOCAL_LIB_ROOT: Undefined variable. > >
> This is problem even with Bourn shell. Not because of syntax or run- > time error, but because of security: > > Empty PATH variable component denotes current directory. E.g if PATH > is not defined, > > export PATH=/foo:$PATH > > results into PATH="/foo:" which is equivalent to PATH="/foo:." which > means that all commands are search in ./ since now.
I've gone over this and have about as close to a solution as is possible. Everywhere but the bourne shell, it treats empty vars the same nonexistent vars, omitting the extra splitter. In bourne shell, empty vars are treating as a distinct value, so that adding "/foo" to "" gives "/foo:". The code is in my refactor branch.
This should be fixed now. In bash, existing but empty values in env variables are preserved when adding to them. In all other shells, empty values are treated the same as nonexistent values, and are excluded when adding to the variables. Included in dev release 2.000_000.
Resolved in 2.000003