ไม่สามารถติดตั้งโมดูลด้วย CPAN Mac - ไม่พบไดเรกทอรี


0

ฉันประสบปัญหาเมื่อพยายามติดตั้งโมดูลด้วย CPAN (และด้วยตนเอง make ) ฉันได้ติดตั้ง Perl ผ่าน Homebrew และเมื่อฉันเรียกใช้ cpan install MODULE_NAME ฉันได้รับข้อผิดพลาดนี้:

ld: warning: directory not found for option '-
L/System/Library/Perl/5.26.1/darwin-thread-multi-2level/CORE'
ld: library not found for -lperl
clang: error: linker command failed with exit code 1 (use -v to see 
invocation)
make[1]: *** [../blib/arch/auto/Verilog/Parser/Parser.bundle] Error 1
make: *** [subdirs] Error 2
WSNYDER/Verilog-Perl-3.448.tar.gz
/usr/bin/make -- NOT OK

ฉันรู้ว่าปัญหานี้เป็นเพราะรุ่น Perl ของฉันตั้งแต่รุ่น Perl ของฉันที่ตำแหน่งต่อไปนี้คือ 5.18 และไม่ใช่ 5.26 (ดู: /System/Library/Perl/5.26.1/darwin-thread-multi-2level/CORE )

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.

แก้ไข:

มีการแสดงผลของสิ่งต่อไปนี้:

$ type cpan
cpan is /usr/local/bin/cpan
$ type make
make is /usr/bin/make
$ where brew
/usr/local/bin/brew
$ echo $PATH
/Users/alexandermann/.nvm/versions/node/v8.9.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/alexandermann/Library/Python/3.6/bin:/Users/alexandermann/Library/Android/sdk/tools:/Users/alexandermann/Library/Android/sdk/platform-tools

บรรทัดแรกใน /usr/local/bin/perl คือ: #!/usr/local/opt/perl/bin/perl

แก้ไข 2:

ดังนั้นฉันได้พบเบาะแสอื่นในการแก้ปัญหานี้ ... ฉันพยายามติดตั้ง Perl ด้วยตนเอง (แพคเกจคือ Verilog-Perl ) ในการติดตามการตั้งค่าทั่วไปเพื่อรับ Makefile ฉันต้องวิ่ง perl Makefile.PL ในไดเรกทอรีรากของแพ็คเกจ มองใน Makefile.PL ฉันหา:

    $out .= "DLEXT = dylib\n";
    if ($^V eq '5.16.2') {
        $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.16.2/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
    } elsif ($^V eq '5.12.4') {
        $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.12/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
    } elsif ($^V eq '5.18.2') {
        $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.18/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
    } else {
        $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/%vd/%s/CORE -lperl -lgcc_eh -L/usr/local/lib\n",$^V,$Config{archname});
    }

คุณจะเห็นว่า -L/System/Library/Perl... ถูกฮาร์ดโค้ดลงใน Makefile.PL. รุ่น Mac Perl ของฉันคือ 5.18 แต่เนื่องจากรุ่น Homebrew Perl ของฉันคือ 5.26มันกำลังมองหา -L/System/Library/Perl/5.26/ เมื่อในความเป็นจริงสิ่งนี้อยู่ใน Homebrew Cellar ของฉัน ณ จุดนี้ฉันไม่แน่ใจว่ามีวิธีแก้ปัญหาที่สะดวก ...


1
คุณแน่ใจหรือว่า perl ซึ่งได้รับการดำเนินการเป็นสิ่งที่ติดตั้งโดย Homebrew สิ่งที่เป็นผลมาจาก type cpan? เหมือนกันสำหรับ make, ดูเหมือนกับ /usr/bin/make ถูกนำมาใช้.
nohillside

@patrix type cpan ผลลัพธ์คือ: cpan is /usr/local/bin/cpan และทำคือ: make is /usr/bin/make
Alex Mann

1
@AlexMann แก้ไขข้อมูลในคำถามที่ไม่ได้เพิ่มความคิดเห็น ความคิดเห็นจะถูกลบออกโดยไม่ส่งผลกระทบต่อ Q และ A นอกจากนี้ perl ที่ cpan หยิบขึ้นมาดูเหมือนว่าระบบ perl ไม่ใช่ของ Homebrew
Mark

บรรทัดแรกคืออะไร /usr/local/bin/cpanทำอะไร type perl พูด? นอกจากนี้สิ่งที่เป็นค่าของ PATH?
nohillside

อะไรของคุณ brew ติดตั้ง PATH (โปรดเพิ่มสิ่งนี้ใน OQ ของคุณ)
daniel Azuelos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.