А зачем, спросите вы? Ведь в Solaris встроен perl 5.8.8, а если хочется, то на всяких там blastwave можно взять более свежую версию.
А затем, что он везде собран под 32 бита, а у меня, например, openssl собран под 64 бита и понадобились некоторые модули, использующие его. И вообще я придерживаюсь мнения, что гонять 32-х битный код на 64-ом процессоре это не кошерно.
Поэтому традиционно "а мы пойдём другим путём". Качаем с официального сайта исходный код perl 5.10.1, разархивируем его, запускаем:
./Configure -de -Dprefix=/var/perl -Dcc=gcc -Duse64bitall
make
Вроде всё просто и даже по документации. Откидываемся на табуретке и вникаем в великое таинство компиляции... Расслабились? А зря:
[skipped]
cp lib/TAP/Parser/Scheduler/Spinner.pm
../../lib/TAP/Parser/Scheduler/Spinner.pm
./perl -Ilib pod/buildtoc --build-toc -q Can't load
'lib/auto/File/Glob/Glob.so' for module File::Glob: ld.so.1:
perl: fatal: relocation error: R_AMD64_PC32: file
lib/auto/File/Glob/Glob.so: symbol main: value 0x280013f297c does not fit
at lib/XSLoader.pm line 70.
at lib/File/Glob.pm line 96
Compilation failed in require at pod/buildtoc line 171.
BEGIN failed--compilation aborted at pod/buildtoc line 171.
*** Error code 9 make: Fatal error: Command failed for target
`pod/perltoc.pod'
Оказывается мой perlbug 63604 заведённый еще применительно к 5.8.9 до сих пор не исправлен. И не смотря на многочисленные рекомендации в сети по добавлению -fPIC к ключам ld и ldd, после которых собственно компиляция проходит успешно, но зато при выполнении make test
получаем большую кучу ошибок, единственный правильный ответ написан в комментариях к этому самому багу. Поэтому для упрощения процедуры удаляем разархивированный каталог, заново разархивируем и в первую очередь слегка подправляем hints/solaris_2.sh:
mv $(PERL)/hints/solaris_2.sh $(PERL)/hints/solaris_2.sh.orig
sed 's/-G/-shared/g' $(PERL)/hints/solaris_2.sh.orig > $(PERL)/hints/solaris_2.sh
Вот теперь можно выполнять
./Configure -de -Dprefix=/var/perl -Dcc=gcc -Duse64bitall
&& make && make test
и радоваться результату:
[skipped]
All tests successful.
u=3.60 s=2.59 cu=325.96 cs=55.49 scripts=1611 tests=226604
После такого не грех и make install
выполнить.