[devel] ruby-rake и gems
Mikhail Yakshin
=?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Пн Мар 13 22:16:03 MSK 2006
Dmitry V. Levin wrote:
>>Если в двух словах - то это такой менеджер пакетов и стандарт упаковки
>>всевозможных расширений для Ruby. Ближайшие аналоги - cpan для perl,
>>pear для php, egg для python.
> Спасибо.
>
> Если проводить аналогию с CPAN, то ни у нас, ни в дистрибутивах, за
> которыми я наблюдаю, не предпринимается попытка подменить CPAN'ом нативный
> менеджер пакетов. CPAN просто используется как репозиторий, из которого
> пакуются пакеты. При этом пакет perl-CPAN в Сизифе тоже есть, который
> теоретически позволяет пользоваться CPAN'ом в обход rpm.
>
> Чем принципиально отличается подход к gems от подхода к CPAN?
Принципиально - ничем. Пакет perl-CPAN по той роли, которую он играет -
полностью аналогичен пакету rubygems. Продолжая аналогии - /usr/bin/cpan
- это /usr/bin/gem и т.п. Речь и идет о том, чтобы "оборачивать" взятые
из репозитория gems пакеты в rpm, так же, как это делается для CPAN.
Разница начинается в деталях. Механизм gems - более высокоуровневый, чем
CPAN. В gem включается информация о зависимостях, причем - например -
зачастую не в декларативном виде, а в процедурном. В ruby есть метод
"require", позволяющий подключить содержимое какого-то файла. В gems
предлагается ему замена - метод "require_gem", который подключает нужные
модули не пофайлово, а одной командой позволяет подключить сразу все,
что нужно, причем еще запросить файлы из пакета какой-то определенной
версии и т.п. автоматика.
Внутренняя структура пакета, соответственно, тоже более сложная: в
базовой директории (/usr/lib/ruby/gems/1.8/gems/%name-%version) лежит
обычно дерево из:
bin
configs
doc
examples
lib
test
и еще того, что создатель сочтет нужным туда положить. Очевидно,
конечно, что это бардак - что документация и примеры лежат в %_libdir,
но такой вот стандарт и если его рушить и, скажем, оторвать упаковку gem
у какого-то одного пакета - надо будет рушить и все, его использующие.
Сейчас идет очередной раунд прений на тему, как нам с этим чудом
вражеской техники быть. В Сизифе около 70 пакетов, судьба которых от
этого может косвенно зависеть.
--
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]
Подробная информация о списке рассылки Devel