From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <431622DC.5080307@altlinux.org> Date: Thu, 01 Sep 2005 01:36:28 +0400 From: Mikhail Yakshin User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050512) X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: [sisyphus] I: rubygems and ruby-rails X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Aug 2005 21:36:29 -0000 Archived-At: List-Archive: Приветствую! Во-первых, хочу сказать, что набор из: 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]