вторник, 7 декабря 2010 г.

Upgrade Perl 5.8.8 to 5.12.3 (Обновляем perl вручную)

Приспичело меня обновить perl в CentOS 5.5 для моих нужд, т.к. последний perl 5.8.8 и ждать пока редхатовцы раскачаются времени тоже нет. В общем порыскав по инету сутки, другие, я ничего особо детального не нашел. Пришлось рыть и, в принципе, все получилось. Сразу оговорюсь, что порядок моих действий с реальными может немного не совпадать, но постараюсь :).
У меня 64-bit-ная система.

1. Установим необходимые пакеты в систему для дальнейшей сборки модулей PERL:

Сначала поставим mysql-devel.x86_64 для установки DBD::mysql (после этого нужно пересобирать perl, если вы уже пробовали собирать perl):
# yum install mysql-devel.x86_64

Установим поддержку ldb (BerkeleyDB) библиотеки (после этого нужно пересобирать perl)
# yum install db4-devel.x86_64
Установим компилятор gcc, если он отсутствует:
# yum install gcc

Качаем самую новую libidn с оф. сайта:
# mkdir -p /root/MY/libidn
# cd /root/MY/libidn
# wget ftp://ftp.gnu.org/gnu/libidn/libidn-1.20.tar.gz
# tar -zxvf libidn-1.20.tar.gz
# cd libidn-1.20
Это небольшое отступление - http://cpansearch.perl.org/src/THOR/Net-LibIDN-0.12/README
Мне помогла именно установка самой новой libidn.
# ./configure
# make
# make install

2. Качаем и собираем перл из исходников
# mkdir -p /root/MY/perl
# cd /root/MY/perl

Ссылку на последний стабильный perl можно найти здесь:
http://search.cpan.org/dist/perl/
# wget http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/perl-5.12.3.tar.gz
# tar -zxvf perl-5.12.3.tar.gz perl-5.12.3
# cd perl-5.12.3

Собираем perl (я собирал вместе с доп. модулями "-Dextras="Bundle::LWP DBI DBD::mysql Bundle::DBD::mysql"  сразу, но их можно и отдельно поставить)
# sh Configure -de -Dusethreads -Dextras="Bundle::LWP DBI DBD::mysql Bundle::DBD::mysql"
# make && make test && make install

Для пересборки perl снова надо предварительно выполнить:
# make distclean

3. Заменяем старую версию на новую. (ЭТОТ ПУНКТ БЫЛ АКТУАЛЕН в CentOS 5.5 при апа до 5.12.2. Сейчас настраивал на CentOS 5.6 и апал до 5.12.3)

Смотрим куда у нас ссылается команда perl
# which perl
Смотрим какую версию у нас сейчас perl выдает
# perl -V

Во избежания некорректной отработки скриптов, поставим символическую ссылку на наш новый perl:
# mv /usr/bin/perl /usr/bin/perl58
# ln -s /usr/local/bin/perl /usr/bin/perl

А теперь какую выдает :) (если новую, то идем дальше):
# perl -V

Кстати, сравнивать конфигурацию старого и нового perl'a бывает полезно, т.к. в это может помочь в разрешении проблем при установке модулей (у меня в основном была проблема только в devel пакетах, которые мы уже поставили):
# /usr/bin/perl58 -V
# /usr/bin/perl -V

4. Добавим одну строчку в конфиг yum, чтобы у нас perl больше не обновлялся:
# nano /etc/yum.conf
exclude=perl

5. Настроим CPAN (автоматическая конфигурация):
# perl -MCPAN -e shell
y
y

6. Ставим необходимые модули (некоторые модули у нас уже стоят, но я думаю ничего страшного, если они у нас проверятся еще разок):

В одну строчку не захотела установка Term::ReadKey отрабатывает, так что входим в шел:
#perl -MCPAN -e shell
install Term::ReadKey

# perl -MCPAN -e 'install Net::LibIDN, Data::ShowTable, DBD::mysql, DateTime, File::MimeInfo::Magic, BerkeleyDB, Test::YAML, MIME::Parser, Crypt::Blowfish, Crypt::PasswdMD5, HTML::Entities, MIME::Entity, DBI, Term::ReadPassword, Crypt::CBC, File::Copy::Recursive'

P.S. вот вроде бы и все. Если при выполнении перловских скриптов потребуются еще какие-то модули, просто поставим их.

6 комментариев:

  1. Очень большое спасибо!!!

    ОтветитьУдалить
  2. Рад помочь, отпишись как прошло. Мож статейку подкоректирую ...

    ОтветитьУдалить
  3. Я делал по другому.

    # cd /usr/local/src/
    # wget http://www.cpan.org/src/stable.tar.gz
    # gunzip stable.tar.gz
    # tar xvf stable.tar
    # cd perl-5.12.2
    # ./Configure -de
    # make && make test
    # make install

    Ну а потом сим-линки фигачим и отключаем апдейты. Почему-то по твоему мануалу не получилось, в итоге так и не нашел новую версию Perl'a. Собирал так по старинке

    ОтветитьУдалить
  4. И чем же моя инструкция отличается от твоей?

    1) Качаеше ты тоже стабильный, хоть немного и по другому, но версия одна и таже.

    2) "./Configure -de" - и у меня тоже самое, только я добавил еще использование нитей и компиляцию сразу доп модулей, т.е. достаточно и того, что ты написал.

    Скорей всего у тебя затык случился из-за того что пакеты девовские пакеты не стояли в системе такие как:
    # yum install mysql-devel.x86_64
    # yum install db4-devel.x86_64

    ОтветитьУдалить
  5. всё отлично прошло, спасибо за статью

    только непонятен п. 5

    что за y, y?

    у меня сразу выдало приглашение
    cpan[1]> y
    Unknown shell command 'y'. Type ? for help.

    ОтветитьУдалить
  6. п.5 это для первоначальной настройки, когда perl спрашивает про автоматическую настройку

    ОтветитьУдалить