<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>FreeSource - AltLinux/Sisyphus/ruby</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby</link>
<description>History/revisions of FreeSource/AltLinux/Sisyphus/ruby</description>
<language>en-us</language>
<item>
<title>2008-07-26 14:46:32</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-26+14%3A46%3A32</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a name=".altlinux.sisyphus.ruby" href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-26+14%3A46%3A32">2008-07-26 14:46:32&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby">2008-07-29 11:30:37&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;div class="action" style="float:right; width:250px">&lt;div class="action-content">Эта&amp;nbsp;страница была перенесена на&amp;nbsp;&lt;a href="http://altlinux.org/Ruby_Packaging_mini-HOWTO" target="_blank" title="" class="outerlink">altlinux.org&lt;/a>. Текст на&amp;nbsp;freesource.info заморожен.&lt;/div>&lt;/div>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;div class="action" style="float:right; width:250px">&lt;div class="action-content">Эта&amp;nbsp;страница была перенесена на&amp;nbsp;&lt;a href="http://altlinux.org/ruby" target="_blank" title="" class="outerlink">altlinux.org&lt;/a>. Текст на&amp;nbsp;freesource.info заморожен.&lt;/div>&lt;/div>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-25 02:20:10</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-25+02%3A20%3A10</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-25+02%3A20%3A10">2008-07-25 02:20:10&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-26+14%3A46%3A32">2008-07-26 14:46:32&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;div class="action" style="float:right; width:250px">&lt;div class="action-content">Эта&amp;nbsp;страница была перенесена на&amp;nbsp;&lt;a href="http://altlinux.org/ruby" target="_blank" title="" class="outerlink">altlinux.org&lt;/a>. Текст на&amp;nbsp;freesource.info заморожен.&lt;/div>&lt;/div>&lt;br />
Документация в&amp;nbsp;формате RI&amp;nbsp;генерируется при&amp;nbsp;помощи утилиты &lt;tt>rdoc&lt;/tt>, находящейся в&amp;nbsp;пакете &lt;tt>ruby-tool-rdoc&lt;/tt>.  Для&amp;nbsp;этого существует стандартный макрос &lt;tt>%rdoc&lt;/tt> предназначенный для&amp;nbsp;использования в&amp;nbsp;секции &lt;tt>%install&lt;/tt> (обычно одной из&amp;nbsp;последних строк).  В&amp;nbsp;качестве аргументов этого макроса перечисляются файлы и&amp;nbsp;каталоги с&amp;nbsp;исходниками и&amp;nbsp;при необходимости другие опции утилиты &lt;tt>rdoc&lt;/tt>.&lt;br />
Pure-ruby модули помещаются в&amp;nbsp;&lt;tt>%ruby_sitelibdir&lt;/tt>, бинарные модули в&amp;nbsp;&lt;tt>%ruby_sitearchdir&lt;/tt>, документация в&amp;nbsp;формате RI&amp;nbsp;в &lt;tt>%ruby_ri_sitedir&lt;/tt> (при этом файл &lt;tt>%ruby_ri_sitedir/created.rid&lt;/tt> упаковывать не&amp;nbsp;нужно).&lt;a name="h8599-1">&lt;/a>&lt;h2>Добро пожаловать в&amp;nbsp;реальный мир&lt;/h2>
В&amp;nbsp;теории всё выглядит красиво, однако на&amp;nbsp;практике среднего размера модуль представляет собой &amp;laquo;нечто&amp;raquo;, что&amp;nbsp;может работать в&amp;nbsp;любой помойке.  Однако мы&amp;nbsp;делаем не&amp;nbsp;помойку, поэтому местечковые хаки нам&amp;nbsp;не&amp;nbsp;нужны.&lt;a name="h8599-2">&lt;/a>&lt;h3>Не загрязняем &lt;tt>$LOAD_PATH&lt;/tt> (&lt;tt>$:&lt;/tt>)&lt;/h3>
Очень часто в&amp;nbsp;коде можно увидеть конструкции вида:&lt;br />
$:.unshift File.join(File.dirname(&lt;u>FILE&lt;/u>), '..', 'lib')&lt;!--notypo-->&lt;textarea class="code" rows="13" readonly="readonly">Эта конструкция добавляет в ##$LOAD_PATH## некоторый путь.  Сделано это для того, чтобы модуль (или исполняемый скрипт) можно было использовать из любого места.  Поскольку в нашем случае все файлы пакуются в стандартные места, подобные конструкции не нужны.  В большинстве случаев такие конструкции можно безболезненно удалить.
====Используем существующие модули и размаскируем зависимости====
Поскольку наша помойка не является &amp;quot;любой&amp;quot;, её ТТХ нам известны.  Например, известно что это Linux, есть Iconv и так далее.  Поэтому специфичный код, предназначенный для работы на других платформах в наших пакетах не нужен (а иногда бывает и вреден, поскольку даже &amp;quot;мёртвый&amp;quot; код может порождать зависимости, которые в некоторых случаях превращаются в unmet'ы).
Также мы можем превратить опциональную зависимость в явную.  Пример:
begin
  require 'iconv'
rescue LoadError
  module Iconv
    # Далее следует некоторый код, который в результате предоставляет API
    # похожий на API модуля iconv, возможно урезанный функционально.
  end
end&lt;/textarea>&lt;!--/notypo-->&lt;br />
В&amp;nbsp;данном случае &lt;strong>всю&lt;/strong> эту&amp;nbsp;сложную конструкцию можно заменить на&amp;nbsp;одну строку &lt;tt>require 'iconv'&lt;/tt>.  Как&amp;nbsp;бонус мы&amp;nbsp;получаем зависимость на&amp;nbsp;&lt;tt>ruby(iconv)&lt;/tt> и&amp;nbsp;полную функциональность данного модуля.&lt;br />
Реальные примеры можно посмотреть в&amp;nbsp;пакете &lt;a href="http://git.altlinux.org/people/raorn/packages/?p=ruby-gettext.git" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink">&lt;img src="http://freesource.info/wiki/themes/coffee/icons/web.gif" alt="" border="0" />ruby-gettext&lt;/a>.&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Документация в&amp;nbsp;формате RI&amp;nbsp;генерируется при&amp;nbsp;поможи утилиты &lt;tt>rdoc&lt;/tt>, находящейся в&amp;nbsp;пакете &lt;tt>ruby-tool-rdoc&lt;/tt>.  Для&amp;nbsp;этого существует стандартный макрос &lt;tt>%rdoc&lt;/tt> предназначенный для&amp;nbsp;использования в&amp;nbsp;секции &lt;tt>%install&lt;/tt> (обычно одной из&amp;nbsp;последних строк).  В&amp;nbsp;качестве аргументов этого макроса перечисляются файлы и&amp;nbsp;каталоги с&amp;nbsp;исходниками.&lt;br />
Pure-ruby модули помещаются в&amp;nbsp;&lt;tt>%ruby_sitelibdir&lt;/tt>, бинарные модули в&amp;nbsp;&lt;tt>%ruby_sitearchdir&lt;/tt>, документация в&amp;nbsp;формате RI&amp;nbsp;в &lt;tt>%ruby_ri_sitedir&lt;/tt>.&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-25 01:22:05</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-25+01%3A22%3A05</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-25+01%3A22%3A05">2008-07-25 01:22:05&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-25+02%3A20%3A10">2008-07-25 02:20:10&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Далее используются макросы &lt;tt>%ruby_config&lt;/tt>, &lt;tt>%ruby_build&lt;/tt> и&amp;nbsp;&lt;tt>%ruby_install&lt;/tt>.&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Далее используются макросы &lt;tt>%ruby_config&lt;/tt>, &lt;!--notypo-->&lt;textarea class="code" rows="2" readonly="readonly">%ruby_build&lt;/textarea>&lt;!--/notypo--> и&amp;nbsp;&lt;tt>%ruby_install&lt;/tt>.&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-24 20:28:30</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-24+20%3A28%3A30</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-24+20%3A28%3A30">2008-07-24 20:28:30&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-25+01%3A22%3A05">2008-07-25 01:22:05&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;a name="h8599-1">&lt;/a>&lt;h3>&lt;tt>Rakefile&lt;/tt> и&amp;nbsp;остальные случаи&lt;/h3>
Если task &lt;tt>install&lt;/tt> не&amp;nbsp;определён или&amp;nbsp;вообще отсутствует установочный скрипт (в случае pure-ruby модуля), можно использовать &lt;tt>setup.rb&lt;/tt> из&amp;nbsp;пакета &lt;tt>ruby-tool-setup&lt;/tt> примерно следующим образом:&lt;br />
%prep&lt;br />
%setup&lt;br />
%patch -p1&lt;br />
cp&amp;nbsp;%_datadir/ruby-setup/setup.rb .&lt;!--notypo-->&lt;textarea class="code" rows="2" readonly="readonly">Далее используются макросы ##%ruby_config##,&lt;/textarea>&lt;!--/notypo-->%ruby_build&lt;!--notypo-->&lt;textarea class="code" rows="6" readonly="readonly">и ##%ruby_install##.
===Пакуем документацию===
Документация в формате RI генерируется при поможи утилиты ##rdoc##, находящейся в пакете ##ruby-tool-rdoc##.  Для этого существует стандартный макрос ##%rdoc## предназначенный для использования в секции ##%install## (обычно одной из последних строк).  В качестве аргументов этого макроса перечисляются файлы и каталоги с исходниками.
Для pure-ruby модулей как правило используется конструкция:
%rdoc lib/&lt;/textarea>&lt;!--/notypo-->&lt;br />
Если присутствуют бинарные модули:&lt;br />
%rdoc *.c lib/&lt;!--notypo-->&lt;textarea class="code" rows="4" readonly="readonly">Документацию желательно паковать в подпакет ##%name-doc##.  При этом паковать следует только документацию для основных классов модуля, описание расширений сторонних классов паковать не нужно.
===Складываем файлы в пакеты===
Pure-ruby модули помещаются в ##%ruby_sitelibdir##, бинарные модули в ##%ruby_sitearchdir##, документация в формате RI в ##%ruby_ri_sitedir##.&lt;/textarea>&lt;!--/notypo-->(comments)  vim: set&amp;nbsp;wrap lbr&amp;nbsp;spell spelllang=ru,en: %%&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;a name="h8599-1">&lt;/a>&lt;h3>&lt;tt>Rakefile&lt;/tt>&lt;/h3>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-20 15:29:26</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-20+15%3A29%3A26</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+15%3A29%3A26">2008-07-20 15:29:26&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-24+20%3A28%3A30">2008-07-24 20:28:30&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;ul>&lt;li> &lt;strong>test/&lt;/strong> &amp;ndash; unit-тесты;&lt;/li>&lt;/ul>
Также как&amp;nbsp;правило присутствует один или&amp;nbsp;несколько &amp;laquo;сценариев сборки&amp;raquo;, о&amp;nbsp;них расскажу далее.&lt;br />
Аналог configure, использует модуль &lt;tt>mkmf&lt;/tt>, входящий в&amp;nbsp;стандартную поставку ruby.  Внутри скрипта проверяется наличие необходимых заголовочных файлов и&amp;nbsp;библиотек, на&amp;nbsp;выходе генерится Makefile, который обрабатывается стандартным make.  Используется только в&amp;nbsp;тех проектах, где&amp;nbsp;есть бинарные модули.  Если &amp;laquo;рядом&amp;raquo; с&amp;nbsp;&lt;tt>extconf.rb&lt;/tt> находится файл &lt;tt>depend&lt;/tt>, его&amp;nbsp;содержимое добавляется к&amp;nbsp;&lt;tt>Makefile&lt;/tt>.  Исходные тексты и&amp;nbsp;заголовочные файлы бинарного модуля как&amp;nbsp;правило тоже лежат &amp;laquo;рядом&amp;raquo; с&amp;nbsp;&lt;tt>extconf.rb&lt;/tt>.&lt;br />
Типичные секции &lt;tt>%build&lt;/tt> и&amp;nbsp;&lt;tt>%install&lt;/tt> выглядят следующим образом:&lt;br />
&lt;!--notypo-->&lt;textarea class="code" rows="6" readonly="readonly">%build
%ruby_configure &amp;lt;опции extconf.rb&amp;gt;
%make_build
%install
%make_install DESTDIR=%buildroot install&lt;/textarea>&lt;!--/notypo-->&lt;a name="h8599-1">&lt;/a>&lt;h3>&lt;tt>setup.rb&lt;/tt> имени Minero Aoki&lt;/h3>
Скрипт сборки и&amp;nbsp;установки общего назначения.  Как&amp;nbsp;правило используется для&amp;nbsp;сборки и&amp;nbsp;установки pure-ruby модулей.  Имеет некоторое количество стандартных опций, может собирать бинарные модули, находящиеся в&amp;nbsp;каталоге &lt;strong>ext/&lt;/strong> (как правило там&amp;nbsp;присутствует &lt;tt>extconf.rb&lt;/tt>, см.&amp;nbsp;выше).&lt;br />
Типичные секции &lt;tt>%build&lt;/tt> и&amp;nbsp;&lt;tt>%install&lt;/tt> выглядят следующим образом:&lt;br />
&lt;!--notypo-->&lt;textarea class="code" rows="6" readonly="readonly">%build
%ruby_config &amp;lt;опции setup.rb&amp;gt;
%ruby_build
%install
%ruby_install&lt;/textarea>&lt;!--/notypo-->&lt;a name="h8599-2">&lt;/a>&lt;h3>&lt;tt>install.rb&lt;/tt>&lt;/h3>
Иногда это&amp;nbsp;самописный скрипт, иногда встречается одна из&amp;nbsp;первых версий &lt;tt>setup.rb&lt;/tt>.  Как&amp;nbsp;правило используется только для&amp;nbsp;установки pure-ruby модулей.  Стандартных макросов для&amp;nbsp;поддержки &lt;tt>install.rb&lt;/tt> нет.&lt;a name="h8599-3">&lt;/a>&lt;h3>&lt;tt>Rakefile&lt;/tt>&lt;/h3>
Сценарий для&amp;nbsp;&lt;tt>rake&lt;/tt>.  Обычно может иметь task'и &lt;tt>build&lt;/tt> (если есть бинарные модули) и&amp;nbsp;&lt;tt>test&lt;/tt>, но&amp;nbsp;последнее время не&amp;nbsp;имеет task'а &lt;tt>install&lt;/tt>.  Зато использует &lt;tt>rubygems&lt;/tt>.&lt;br />
Для&amp;nbsp;вызова &lt;tt>rake&lt;/tt> и&amp;nbsp;&lt;tt>rake install&lt;/tt> есть два&amp;nbsp;стандартных макроса &lt;tt>%rake&lt;/tt> и&amp;nbsp;&lt;tt>%rake_install&lt;/tt> соответственно.&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Аналог configure, использует модуль &lt;tt>mkmf&lt;/tt>, входящий в&amp;nbsp;стандартную поставку ruby.  Внутри скрипта проверяется наличие необходимых заголовочных файлов и&amp;nbsp;библиотек, на&amp;nbsp;выходе генерится Makefile, который обрабатывается стандартным make.&lt;br />
&lt;em>...&lt;/em>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-20 14:56:56</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-20+14%3A56%3A56</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+14%3A56%3A56">2008-07-20 14:56:56&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+15%3A29%3A26">2008-07-20 15:29:26&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Есть два&amp;nbsp;способа сборки модулей.  При&amp;nbsp;помощи rubygems (который мы&amp;nbsp;не рассматриваем по&amp;nbsp;ряду причин), и&amp;nbsp;&amp;laquo;нативная&amp;raquo; сборка, с&amp;nbsp;помещением файлов в&amp;nbsp;специальные каталоги, которые находятся в&amp;nbsp;&lt;tt>$LOAD_PATH&lt;/tt>.&lt;br />
Модули устанавливаются в&amp;nbsp;так называемый vendor dir.  В&amp;nbsp;ALT Linux это&amp;nbsp;&lt;tt>/usr/share/ruby/vendor_ruby/RUBY.VERSION&lt;/tt> и&amp;nbsp;&lt;tt>/usr/lib/ruby/RUBY.VERSION/ARCHITECTURE&lt;/tt>.  Поскольку по&amp;nbsp;умолчанию установка модулей идёт в&amp;nbsp;site dir, при&amp;nbsp;сборке пакета надо использовать модуль &lt;tt>vendor_specific&lt;/tt>, вызывая интерпретатор ruby как&amp;nbsp;&lt;tt>ruby -rvendor_specific&lt;/tt>.  Для&amp;nbsp;этого есть макрос &lt;tt>%ruby&lt;/tt>.&lt;br />
Внутри тарбола с&amp;nbsp;модулем (или программой) могут находиться следующие файлы и&amp;nbsp;каталоги:&lt;br />
&lt;ul>&lt;li> &lt;strong>bin/&lt;/strong> &amp;ndash; скрипты, будут установлены в&amp;nbsp;&lt;tt>%_bindir&lt;/tt>;
&lt;/li>&lt;li> &lt;strong>ext/&lt;/strong> &amp;ndash; компилируемые модули (при использовании &lt;tt>setup.rb&lt;/tt>), будут установлены в&amp;nbsp;&lt;tt>%ruby_sitearchdir&lt;/tt>;
&lt;/li>&lt;li> &lt;strong>lib/&lt;/strong> &amp;ndash; pure-ruby модули, будут установлены в&amp;nbsp;&lt;tt>%ruby_sitelibdir&lt;/tt>;
&lt;/li>&lt;li> &lt;strong>data/&lt;/strong> &amp;ndash; произвольные данные(при использовании &lt;tt>setup.rb&lt;/tt>), будут установлены в&amp;nbsp;&lt;tt>%_datadir/ИМЯМОДУЛЯ&lt;/tt>;&lt;/li>&lt;/ul>&lt;a name="h8599-1">&lt;/a>&lt;h3>&lt;tt>extconf.rb&lt;/tt> AKA&amp;nbsp;MkMf&lt;/h3>
Аналог configure, использует модуль &lt;tt>mkmf&lt;/tt>, входящий в&amp;nbsp;стандартную поставку ruby.  Внутри скрипта проверяется наличие необходимых заголовочных файлов и&amp;nbsp;библиотек, на&amp;nbsp;выходе генерится Makefile, который обрабатывается стандартным make.&lt;br />
&lt;em>...&lt;/em>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Есть два&amp;nbsp;способа сборки модулей.  При&amp;nbsp;помощи rubygems (который мы&amp;nbsp;не рассматриваем по&amp;nbsp;ряду причин), и&amp;nbsp;&amp;laquo;нативная&amp;raquo; сборка, с&amp;nbsp;помещением файлов в&amp;nbsp;специальные каталоги, которые находятся в $LOAD_PATH.&lt;br />
...&lt;a name="h8599-1">&lt;/a>&lt;h3>extconf.rb AKA&amp;nbsp;MkMf&lt;/h3>
Аналог configure, использует модуль mkmf, входящий в&amp;nbsp;стандартную поставку ruby.  Внутри скрипта проверяется наличие необходимых заголовочных файлов и&amp;nbsp;библиотек, на&amp;nbsp;выходе получается Makefile, который обрабатывается стандартным make.&lt;br />
&lt;em>иду спать, продолжение следует&lt;/em>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-20 01:52:51</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-20+01%3A52%3A51</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+01%3A52%3A51">2008-07-20 01:52:51&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+14%3A56%3A56">2008-07-20 14:56:56&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;a name="h8599-1">&lt;/a>&lt;h2>Внутри тарбола&lt;/h2>
...&lt;a name="h8599-2">&lt;/a>&lt;h2>Собираем модуль&lt;/h2>&lt;a name="h8599-3">&lt;/a>&lt;h3>extconf.rb AKA&amp;nbsp;MkMf&lt;/h3>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;a name="h8599-1">&lt;/a>&lt;h2>extconf.rb AKA&amp;nbsp;MkMf&lt;/h2>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-20 01:52:07</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-20+01%3A52%3A07</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+01%3A52%3A07">2008-07-20 01:52:07&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+01%3A52%3A51">2008-07-20 01:52:51&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;a name="h8599-1">&lt;/a>&lt;h2>extconf.rb AKA&amp;nbsp;MkMf&lt;/h2>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;a name="h8599-1">&lt;/a>&lt;h2>extconf.rb AKA&amp;nbsp;&lt;span class="missingpage">Mk&amp;nbsp;Mf&lt;/span>&lt;a href="http://freesource.info/wiki/MkMf/edit?add=1&amp;" title="Создать эту страницу">?&lt;/a>&lt;/h2>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2008-07-20 00:42:07</title>
<link>http://freesource.info/wiki/AltLinux/Sisyphus/ruby/show?time=2008-07-20+00%3A42%3A07</link>
<description>&lt;div class="pageBefore">&lt;img src="http://freesource.info/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby&amp;" class="">/Alt&amp;nbsp;Linux&amp;nbsp;/&amp;nbsp;Sisyphus&amp;nbsp;/&amp;nbsp;ruby&lt;/a> за &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+00%3A42%3A07">2008-07-20 00:42:07&lt;/a> и &lt;a href="http://freesource.info/wiki/AltLinux/Sisyphus/ruby?time=2008-07-20+01%3A52%3A07">2008-07-20 01:52:07&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Основные правила сборки приложений и&amp;nbsp;модулей ruby изложены в&amp;nbsp;&lt;span class="missingpage">Ruby Packaging Policy&lt;/span>&lt;a href="http://freesource.info/wiki/Policy/Ruby/edit?add=1&amp;" title="Создать эту страницу">?&lt;/a>.  Цель же&amp;nbsp;этого документа &amp;ndash; об'яснить на&amp;nbsp;простых примерах как&amp;nbsp;следует поступать в&amp;nbsp;различных ситуациях а&amp;nbsp;также показать как&amp;nbsp;можно собирать простые модули.&lt;br />
Я&amp;nbsp;не рассматриваю rubygems, так&amp;nbsp;как эта&amp;nbsp;система включает в&amp;nbsp;себя свой пакетный менеджер, не&amp;nbsp;совместимый с&amp;nbsp;дистрибутивным.  Про&amp;nbsp;отношение Debian к&amp;nbsp;rubygems можно прочитать &lt;a href="http://pkg-ruby-extras.alioth.debian.org/rubygems.html" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink">&lt;img src="http://freesource.info/wiki/themes/coffee/icons/web.gif" alt="" border="0" />тут&lt;/a>, рекомендации апстриму изложены &lt;a href="http://pkg-ruby-extras.alioth.debian.org/upstream-devs.html" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink">&lt;img src="http://freesource.info/wiki/themes/coffee/icons/web.gif" alt="" border="0" />тут&lt;/a>.  У&amp;nbsp;нас ситуация в&amp;nbsp;общем аналогичная.&lt;br />
&lt;em>Тут пока находится поток сознания, который я&amp;nbsp;буду приводить к&amp;nbsp;нормальному виду.&lt;/em>&lt;br />
&lt;!--notypo-->&lt;fieldset>&lt;legend>&lt;strong> Оглавление документа   &lt;/strong>&lt;/legend>&lt;div class="toc1">&lt;a href="#h8599-2">Общие принципы сборки модулей&lt;/a>&lt;/div>&lt;div class="toc1">&lt;a href="#h8599-3">Внутри тарбола&lt;/a>&lt;/div>&lt;div class="toc1">&lt;a href="#h8599-4">Собираем модуль&lt;/a>&lt;/div>&lt;div class="toc2">&lt;a href="#h8599-5">extconf.rb AKA&amp;nbsp;MkMf&lt;/a>&lt;/div>&lt;div class="toc2">&lt;a href="#h8599-6">setup.rb имени Minero Aoki&lt;/a>&lt;/div>&lt;div class="toc2">&lt;a href="#h8599-7">install.rb&lt;/a>&lt;/div>&lt;div class="toc2">&lt;a href="#h8599-8">Rakefile и&amp;nbsp;остальные случаи&lt;/a>&lt;/div>&lt;div class="toc1">&lt;a href="#h8599-9">Пакуем документацию&lt;/a>&lt;/div>&lt;div class="toc1">&lt;a href="#h8599-10">Складываем файлы в&amp;nbsp;пакеты&lt;/a>&lt;/div>&lt;div class="toc1">&lt;a href="#h8599-11">Добро пожаловать в&amp;nbsp;реальный мир&lt;/a>&lt;/div>&lt;div class="toc2">&lt;a href="#h8599-12">Не загрязняем $LOAD_PATH ($:)&lt;/a>&lt;/div>&lt;div class="toc2">&lt;a href="#h8599-13">Используем существующие модули и&amp;nbsp;размаскируем зависимости&lt;/a>&lt;/div>&lt;/fieldset>&lt;!--/notypo-->&lt;a name="h8599-1">&lt;/a>&lt;h2>Общие принципы сборки модулей&lt;/h2>
Есть два&amp;nbsp;способа сборки модулей.  При&amp;nbsp;помощи rubygems (который мы&amp;nbsp;не рассматриваем по&amp;nbsp;ряду причин), и&amp;nbsp;&amp;laquo;нативная&amp;raquo; сборка, с&amp;nbsp;помещением файлов в&amp;nbsp;специальные каталоги, которые находятся в $LOAD_PATH.&lt;br />
Сборка пакета включает в&amp;nbsp;себя:&lt;br />
&lt;ul>&lt;li> компиляцию бинарных модулей (если они&amp;nbsp;есть);
&lt;/li>&lt;li> выполнение тестов (если они&amp;nbsp;есть и&amp;nbsp;их выполнение возможно в&amp;nbsp;hasher);
&lt;/li>&lt;li> установку файлов в&amp;nbsp;соответствующие каталоги;
&lt;/li>&lt;li> генерацию документации в&amp;nbsp;формате ri&amp;nbsp;(class reference);&lt;/li>&lt;/ul>
Существует несколько, различного уровня &amp;laquo;стандартности&amp;raquo;, способов сборки модулей ruby.&lt;a name="h8599-2">&lt;/a>&lt;h2>extconf.rb AKA&amp;nbsp;&lt;span class="missingpage">Mk&amp;nbsp;Mf&lt;/span>&lt;a href="http://freesource.info/wiki/MkMf/edit?add=1&amp;" title="Создать эту страницу">?&lt;/a>&lt;/h2>
Аналог configure, использует модуль mkmf, входящий в&amp;nbsp;стандартную поставку ruby.  Внутри скрипта проверяется наличие необходимых заголовочных файлов и&amp;nbsp;библиотек, на&amp;nbsp;выходе получается Makefile, который обрабатывается стандартным make.&lt;br />
&lt;em>иду спать, продолжение следует&lt;/em>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Основные правил сборки приложений и&amp;nbsp;модулей ruby изложены в&amp;nbsp;&lt;span class="missingpage">Ruby Packaging Policy&lt;/span>&lt;a href="http://freesource.info/wiki/Policy/Ruby/edit?add=1&amp;" title="Создать эту страницу">?&lt;/a>.  Цель же&amp;nbsp;этого документа &amp;ndash; об'яснить на&amp;nbsp;конкретных примерах как&amp;nbsp;следует поступать в&amp;nbsp;различных ситуациях а&amp;nbsp;также на&amp;nbsp;простых примерах показать как&amp;nbsp;можно собирать простые модули.&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>
