2014-01-05 20 views
2

試圖在OS X make test返回錯誤,如安裝Term::ReadLine::GnuPerlbrew - 安裝期限:: ::的ReadLine羚在OS X

t/00checkver.t .. 1/3 panic: free from wrong pool, 62696c2f62696c!=7f8ed2801200 during global destruction. 

經過搜索發現了一個建議編譯的Perl與-DPERL_USE_SAFE_PUTENV。所以,試了下:

perlbrew install perl-5.16.3 --thread --multi --debug -DPERL_USE_SAFE_PUTENV 

需要線程,因爲Padre需要它們。不幸的是,重新編譯沒有幫助,並得到相同的錯誤。接下來,我發現這個問題What is the cause for 「panic: free from wrong pool during global destruction.」 in Term::ReadLine::Gnu?,並且accepted answer建議使用:-Accflags="-DPERL_USE_SAFE_PUTENV"

的問題是:

  • 主要是,如何讓工作期限:: ::的ReadLine羚在OS X與perlbrew
  • 如何編譯/安裝/切換Perl的perlbrew得到工作的Perl爲Padre,什麼需要Term::ReadLine::Gnu

只是在想:

  • 如果perl的需要一些 「SAFE_PUTENV」 爲編譯一些CPAN模塊,爲什麼不開默認?爲什麼有人想要一個不可能編譯一些CPAN模塊的perl?
  • 有人在工作Padre & perlbrew在OS X上?

如果有人需要:

我的perl版本

$ perl -V 
Summary of my perl5 (revision 5 version 16 subversion 3) configuration: 

    Platform: 
    osname=darwin, osvers=13.0.0, archname=darwin-thread-multi-2level 
    uname='darwin medvedik.local 13.0.0 darwin kernel version 13.0.0: thu sep 19 22:22:27 pdt 2013; root:xnu-2422.1.72~6release_x86_64 x86_64 ' 
    config_args='-de -Dprefix=/Users/nemo/perl5/perlbrew/perls/perl-5.16.3 -DPERL_USE_SAFE_PUTENV -Dusethreads -DDEBUGGING -Dusemultiplicity -Aeval:scriptdir=/Users/nemo/perl5/perlbrew/perls/perl-5.16.3/bin' 
    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 ='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include', 
    optimize='-O3 -g', 
    cppflags='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include' 
    ccversion='', gccversion='4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)', 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='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib -L/opt/local/lib' 
    libpth=/usr/local/lib /opt/local/lib /usr/lib 
    libs=-lgdbm -ldbm -ldl -lm -lutil -lc 
    perllibs=-ldl -lm -lutil -lc 
    libc=, so=dylib, useshrplib=false, libperl=libperl.a 
    gnulibc_version='' 
    Dynamic Linking: 
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' ' 
    cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib -fstack-protector' 


Characteristics of this binary (from libperl): 
    Compile-time options: DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS 
         PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT 
         PERL_MALLOC_WRAP PERL_PRESERVE_IVUV 
         PERL_TRACK_MEMPOOL USE_64_BIT_ALL USE_64_BIT_INT 
         USE_ITHREADS USE_LARGE_FILES USE_LOCALE 
         USE_LOCALE_COLLATE USE_LOCALE_CTYPE 
         USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF 
         USE_REENTRANT_API 
    Built under darwin 
    Compiled at Jan 5 2014 12:57:57 
    %ENV: 
    PERLBREW_BASHRC_VERSION="0.67" 
    PERLBREW_HOME="/Users/nemo/.perlbrew" 
    PERLBREW_MANPATH="/Users/nemo/perl5/perlbrew/perls/perl-5.16.3/man" 
    PERLBREW_PATH="/Users/nemo/perl5/perlbrew/bin:/Users/nemo/perl5/perlbrew/perls/perl-5.16.3/bin" 
    PERLBREW_PERL="perl-5.16.3" 
    PERLBREW_ROOT="/Users/nemo/perl5/perlbrew" 
    PERLBREW_VERSION="0.67" 
    @INC: 
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/darwin-thread-multi-2level 
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3 
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/darwin-thread-multi-2level 
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3 
    . 

輸出從T/checkver.t

$ perl -Mblib t/00checkver.t 
1..3 
ok 1 loading 
ok 2 new 
OS: darwin 
Perl version: 5.016003 

Term::ReadLine::Gnu version: 1.20 
GNU Readline Library version: 6.2 
ok 3 done 
panic: free from wrong pool, 686372612f62696c!=7fd3db000000 during global destruction. 

GCC:

$ gcc --version 
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) 
Target: x86_64-apple-darwin13.0.0 
Thread model: posix 

perlbrew

$ perlbrew version 
/Users/nemo/perl5/perlbrew/bin/perlbrew - App::perlbrew/0.67 

人:

  • 使用一些庫和工具的MacPorts。 macports是selfupdated和所有端口升級。

回答

2

如問題聯繫在一起,答案是已經this answer。兼營:

perlbrew install perl-5.16.3 --thread --multi --64all --debug --clang -Accflags="-DPERL_USE_SAFE_PUTENV" 

以及與此perl的將獲得成功安裝:

$ cpanm Term::ReadLine::Gnu 
--> Working on Term::ReadLine::Gnu 
Fetching http://www.cpan.org/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz ... OK 
Configuring Term-ReadLine-Gnu-1.20 ... OK 
Building and testing Term-ReadLine-Gnu-1.20 ... 
Term::ReadLine::Gnu version: 1.20 
GNU Readline Library version: 6.2 
OK 
Successfully installed Term-ReadLine-Gnu-1.20 
1 distribution installed 

在daxim的回答無處比-Accflags作品perlbrew太說。真的需要讀perlbrew help其中明確提出:

-D,-U,-A  Switches passed to perl Configure script. 

不管怎麼說,還是不underdtand爲什麼OS X是-Accflags="-DPERL_USE_SAFE_PUTENV"不是默認,但經驗教訓:

對於OS X時,構建與perlbrew PERL,一個普通用戶應該使用

perlbrew -Accflags="-DPERL_USE_SAFE_PUTENV"` 

得到一個工作perl