Показаны сообщения с ярлыком module. Показать все сообщения
Показаны сообщения с ярлыком module. Показать все сообщения

среда, 28 марта 2012 г.

Установка Encode::Locale в perl 5.12 на Solaris 10

Устанавливал тут модули через CPAN, gcc и make в perl, скачанный с ресурса sunfreeware.com. Когда компилировал Encode::Locale, вылезло:
PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/arg.t .. The locale codeset (ansi-1251) isn't one that perl can decode, stopped at /root/.cpan/build/Encode-Locale-1.03-n6CW0f/blib/lib/Encode/Locale.pm line 94.
Я не сильно прошарен по кодировкам и прочей ерунде по этой теме, но кажется в Solaris то, что во всех цивилизованных странах называется cp1251, именуется ansi-1251.

Моё решение — перекомпилировать модуль Encode, исправив файл lib/Encode/Alias.pm. Я внёс исправление в строку, добавляющую алиасы для кодировок cp1251 и других

define_alias(
qr/\b(?:cp|ibm|ms|windows|ansi)[-_ ]?(\d{2,4})$/i => '"cp$1"' );
Скомпилировалось, ядрён батон.

С любовью к продуктам корпорации Oracle,
Руслан

Исправление ошибки unrecognized option для линковщика solaris ld

/usr/local/bin/perl -MCPAN -e "install('Term::ReadKey')"

gcc -B/usr/ccs/bin/ -Wl,-E -G -L/usr/local/lib ReadKey.o -o blib/arch/auto/Term/ReadKey/ReadKey.so \
\

ld: fatal: unrecognized option '-E'

Установил /usr/local/bin/perl -MCPAN -e "install('ExtUtils::MakeMaker')"
В файле /usr/local/lib/perl5/5.12.3/sun4-solaris/Config_heavy.pl убрал -E (не поддерживается линковщиком Solaris) (опция включает то, что и так всегда работает для этого линковщика)

lddlflags=' -Wl,-E -G -L/usr/local/lib'
lddlflags=' -Wl,-G -L/usr/local/lib'