On Wed, Nov 20, 2002 at 05:59:35PM +0200, Alexander Bokovoy wrote: > 2. Структурные изменения путей поиска модулей теперь позволяют этой сборке > Ruby считаться полностью соответствующей File Hierarchy Standard. Дело > в том, что в обычном Ruby предполагается следующая структура каталогов > для модулей: > > /usr/lib/ruby/{версия}/ -- зависящие от версии модули на Ruby > /usr/lib/ruby/{версия}/{архитектура} -- бинарные модули для этой версии > /usr/lib/ruby/site_ruby/{,версия} -- локальные модули (общие для > всех версий и зависящие от конкретной версии) > /usr/lib/ruby/site_ruby/{версия}/{архитектура} -- бинарные локальные > модули для этой версии > > Такая схема нарушает FHS в двух вещах: > > 1. Все, независящее от архитектуры, должно быть расположено в > /usr/share Хочу отметить следующее: по части перла, например, "всё, независящее от архитектуры" может трактоваться по-разному. Архитектурно-зависимые перловые библиотеки состоят из нескольких частей: 1) plaintext *.pm файл, который вызывает DynaLoader; 1a) в этом файле находится документация в формате pod; 2) *.so библиотека, которую загружает DynaLoader. При таком раскладе первый файл является полностью архитектурно независимым, его можно с успехом шарить по сети и т.п. Однако принято, чтобы оба они лежали в каталоге типа i386-linux. > 2. Специфические для конкретной машины компоненты должны находится в > /usr/local. > > Кроме того, эта схема не позволяет четко разделить локальные добавления > от поставляемых тем или иным производителем дистрибутива решений. В > результате получается мешанина файлов, осложняющая обновление пакетов. > > Новая сборка Ruby (1.7.3-alt7) исправляет эти недостатки следующим > образом: > > 1. Все архитектурно-независимые компоненты Ruby размещаются теперь в > /usr/share/ruby, все архитектурно-зависимые -- в /usr/lib/ruby > > 2. Все локальные добавления будут производится в > /usr/local/{lib,share}/ruby > > 3. Все поставляемые в рамках дистрибутива модули будут размещаться в > специфичных для производителя дистрибутива поддеревьях > /usr/{lib,share}/ruby/vendor_ruby/, по аналогии с новым Perl 5.8 Противоречит ли FHS использование поддеревьев типа vendor_ruby? 4.7.1 Applications may use a single subdirectory under /usr/lib. If an application uses a subdirectory, all architecture-dependent data exclusively used by the application must be placed within that subdirectory. > 4. Порядок поиска в обозначенных директориях таков: > /usr/local/lib/ruby/{версия}/{архитектура} > /usr/local/share/ruby/{,версия} > /usr/lib/ruby/vendor_ruby/{архитектура} > /usr/share/ruby/vendor_ruby/{,версия} > /usr/lib/ruby/{версия}/{архитектура} > /usr/share/ruby/{,версия} > > Теперь любые собираемые локально модули Ruby автоматически попадают в > /usr/local, если они используют при сборке подсистему mkmf (100% > модулей с RAA). Автоматически появляется новая feature: независящая от > изменений пакетов в дистрибутиве локальная установка модулей с помощью > rpkg: модули не затрагивают системное дерево каталогов Ruby. -- WBR, Alexey Tourbin "He is a sane man who can have tragedy BIOZAK Ltd., Russia in his heart and comedy in his head." --G.K.Chesterton