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

Часть кода было мертвым, часть использовалось непонятно где и все зависело от всего.

Через некоторое время мы распилили его на модули. Каждый для своей задачи. Для модулей сделали порты. Зависимости от наших и чужих модулей стали очевидными, ненужный код ушел, а обновлять их стало проще. Уйти от портов у нас тогда не получилось.

Приходилось следить за портами. Как нашими, так и чужими. В портах FreeBSD версии отстают, многих портов нет, а многие сделаны через жопу.

В попытках решить эту проблему было написано кучу костыльных утилит: App::Pm2Port, генерация аргументов к portinstall для установки зависимостей к проекту, но работать хорошо эти штуки не могли по определению.

И вчера произошло знаменательное событие. В Рамблере подняли локальный CPAN.

Проекты будут разворачиваться после команды “cpanm installdeps .”, а новые модули будут создаваться за 10 минут.

^_^

Для начала расскажу историю. В далёком 2004-м году чувак по имени Vladi Belperchinov-Shabanski “Cade” написал модуль Algorithm::FloodControl. В те дремучие века люди не знали, что такое ООП и их заботила поддержка Perl4 :-)

Сделал апгрейд этому модулю. Сделал его ООП-шным, добавил поддержку backend-ов для Cache::Memcached::Fast, Cache::FastMmap. Сделал и для Cache::Memcached, ибо не сложно три строки написать, но когда 15 процессов инкрементят запись, то срабатывает от силы 10% инкрементов. Ниипу почему.

Наверное, ещё будут бока с документацией. Это я поправлю.

Algorithm-FloodControl-1.90

Красивая обёртка на CPAN-ом

http://cpantools.com/beta/

Blogged with the Flock Browser

Upd: тьфу на этот маковский Perl. Поставил ActiveState. И вам советую

Начиная с Mac OS X 10.3 в системе появился Perl. Для написания праграмм в стиле “Hello world” его вполне достаточно. Для установки модулей на понадобится make, а для сборки XS – gcc со всеми вытекающими последствиями.

Всё это можно найти в пакете Xcode Tools, который скачивается с сайта Apple. Будем считать, что у вас он уже установлен.

Итак, пробуем:


$ sudo cpan Catalyst

Проблемы, которые могут возникнуть:

Регистронезависимость ФС

Как в FAT32 с NTFS-ом, HFS+ регистронезависим. Соответственно INSTALL и install – это один и тот же файл. К примеру, LWP при установке пытается установить бинарник HEAD, который затрёт вам стандартную команду head.

Чтобы этого не происходило, добавляем в конфиг CPAN такие строки:

cpan> o conf makepl_arg "INSTALLBIN=/usr/local/bin INSTALLSCRIPT=/usr/local/bin"
cpan> o conf commit

…и ещё одна непонятная проблема

При запуске make в директории с модулем у меня выдавалась ошибка:

make: *** No rule to make target `/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE/config.h’, needed by `Makefile’. Stop.

Решается всё такой командой:

$ sudo cp /System/Library/Perl/5.8.1/darwin-thread-multi-2level/CORE/* /System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE

содрано частично отсюда: http://sial.org/howto/perl/life-with-cpan/macosx/

© 2012 Андрей Костенко Suffusion theme by Sayontan Sinha