2012-02-22 5 views
0

Я запускаю на Solaris 10.Не удалось установить perl CPAN-модули на Solaris 10

Скачано и установлено perl от sunfreeware.

Когда я пытаюсь выполнить команду CPAN, я получил следующую ошибку.

# perl -MCPAN -e shell 
Now you need to choose your CPAN mirror sites. You can let me 
pick mirrors for you, you can select them from a list or you 
can enter them by hand. 

Would you like me to automatically choose the best CPAN mirror 
sites for you? (This means connecting to the Internet and could 
take a couple minutes) [yes] 

Trying to fetch a mirror list from the Internet 
    LWP not available 
    LWP not available 
Fetching with Net::FTP: 
ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY 
ld.so.1: perl: fatal: relocation error: file /usr/local/lib/perl5/5.12.3/i86pc-solaris/auto/Socket/Socket.so: symbol inet_aton: referenced symbol not found 
Killed 
# 

LDD, кажется, не имеют проблему

# ldd /usr/local/lib/perl5/5.12.3/i86pc-solaris/auto/Socket/Socket.so 
     libc.so.1 =>  /lib/libc.so.1 
     libm.so.2 =>  /lib/libm.so.2 

Любая идея, что мне не хватает?

+3

Это может помочь вам http://stackoverflow.com/questions/3751656/why -cant-i-build-perl-modules-that-load-socket-so-on-solaris-10 – Ilion

+0

Спасибо. Но я все еще не могу понять решение, пройдя через него. Означает ли это, что мне приходится составлять модуль и его зависимости один за другим вручную? – conandor

ответ

1

Чтобы избежать ручной перекомпиляции всего, configure CPANmake_arg с LIBS=-lresolv и mbuild_arg с --config libs=-lresolv. (Это добавляет библиотеку во всем мире для всех прогонов компиляции дистрибутива Perl.) Затем выполните команду CPAN recompile. Я не тестировал это. Сначала экспериментируйте с запасной системой, сможете восстановить дерево Perl, если что-то пойдет не так.

Если вы думаете, что только сокет дистрибутиву нужен дополнительный параметр ЛИЭСА, то лучше пересобрать эту вручную:

$ cpan 
cpan> look Socket 
Socket$ perl Makefile.PL LIBS=-lresolv ; make ; make test 
Socket$ sudo make install 
+0

Я думаю, что это должно быть 'LIBS = -lresolv' вместо' LIBS = -lresolve' – conandor

+0

Typo fixed, спасибо. Получите некоторую репутацию, затем вы можете редактировать вещи самостоятельно. :) – daxim

Смежные вопросы