[sisyphus] I: rubygems and ruby-rails

Mikhail Yakshin =?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Чт Сен 1 01:36:28 MSD 2005


Приветствую!

Во-первых, хочу сказать, что набор из:

rubygems-0.8.11-alt1.src.rpm
ruby-actionmailer-1.0.1-alt1.src.rpm
ruby-actionpack-1.9.1-alt1.src.rpm
ruby-actionwebservice-0.8.1-alt1.src.rpm
ruby-activerecord-1.11.1-alt1.src.rpm
ruby-activesupport-1.1.1-alt1.src.rpm
ruby-rake-0.5.4-alt1.src.rpm
ruby-rails-0.13.1-alt1.src.rpm

ушел в инкаминг. Прошу всех заинтересованных ставить и тестировать. У 
меня все работает очень неплохо - вплоть до того, что поставленные из 
пакетов части gem'ов видятся как настоящие gem'ы и подлежат обработке 
(удалению, обновлению, проходят все проверки и т.п.) штатной утилитой 
менджера пакетов gem.

Во-вторых, хочу представить общественности примерный драфт 
rubygems-полиси для упаковки gem'ов в ALT:

=========================================================================

Преамбула

RubyGems - система упаковки, установки и доставки приложений для Ruby 
(примерно аналогичная таким системам, как CPAN для Perl или PEAR для 
PHP). Приложения и библиотеки ruby распространяются в виде одного файла 
.gem - одного пакета, готового для инсталляции. Во многом - gem - это 
мультиплаформенный аналог rpm с вещами, специфичными для Ruby. У пакетов 
есть все те же атрибуты: имя, версии, зависимости, summary, description 
и т.п. Есть исходники и спек, с помощью которых собирается сам gem.

Примерно такая роль, какую в "большой" операционной системе выполяет 
apt, отведена здесь утилите gem (доступна в пакете rubygems). Она умеет 
все то же самое - использовать удаленные репозитарии, скачивать оттуда 
gem-пакеты'ы, устанавливать их, обновлять, следить за зависимостями.

Для использования внутри систем ALT все gem'ы предполагается опакечивать 
в rpm-пакеты для легкой инсталляции средствами rpm и apt.

Требования, предъявляемые к пакету

Для опакечивания gem'ов рекомендуется пользоваться утилитой gem2spec. 
Она создает шаблонный спек, который при вменяемом исходном gem'е 
практически не приходится править - весь процесс инсталляции возьмет на 
себя утилита gem и типовой макрос %gem_install. Единственное условие 
работы этого макроса - определенность %gem_name. Рассмотрим пример спека:

# Обязательно нужно задать имя исходного gem'а
%define gem_name rake

# Пакеты с gem'ами должны называться именно так: ruby-%gem_name
Name: ruby-%gem_name

# Версия должна соответствовать версии gem'а
Version: 0.5.4
Release: alt1

# Summary и description утилита gem2spec вытащит сама из gem-спека
Summary: Ruby based make-like utility

# А вот лицензия в gem-спеках не задается, придется проставить вручную
License: MIT
Group: Development/Ruby

# Url вытащится автоматически
Url: http://rake.rubyforge.org
Source: %gem_name-%version.gem

# Зависимости тоже вытащатся автоматически из gem'а
BuildRequires: ruby >= 1.8.1-alt9, libruby-devel, rubygems >= 0.8.11
Requires: ruby >= 1.8.1-alt9, libruby-devel, rubygems >= 0.8.11

%description
Rake is a Make-like program implemented in Ruby. Tasks and dependencies
are specified in standard Ruby syntax.

# Если пакет - библиотека, которая идет с документацией rdoc, то
# необходимо создать подпакет doc. По умолчанию он создается, если он не
# нужен - удалите все упоминания о нем.
%package doc
Summary: Documentation files for %gem_name
Group: Documentation

%description doc
Documentation files for %gem_name

# Центральное место всей магии установки. Распаковывает gem'ы в нужное
# место, вытаскивает, если нужны, какие-то внешние скрипты в /usr/bin,
# кладет rdoc-документацию в %buildroot/%name-%version/rdoc.
%install
%gem_install

# В случае, если пакет не порождает внешних скриптов в /usr/bin, то
# умоминание %_bindir/* нужно удалить.
%files
%rubygemsdir/*
%_bindir/*

# Если нет rdoc-документации, эти строки нужно удалить.
%files doc
%doc %name-%version/rdoc

=========================================================================

Утилиту gem2spec я думаю выложить каким-то образом отдельно. Предложите 
название пакета? Или может быть все-таки лучше включить ее куда-нибудь 
сразу?..

-- 
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]



Подробная информация о списке рассылки Sisyphus