[devel] ruby-rake и gems

Mikhail Yakshin =?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Пн Мар 13 19:32:30 MSK 2006


Kirill A. Shutemov wrote:

>>Технических подробностей и нет. В ruby нет версионирования файлов,
>>правильно? Поэтому просто так программа не может потребовать файл
>>такой-то версии такой-то, как тут например (см. выше) - требуется rake
>>
>>>= 0.6.2.
>>
>>Единственный вариант, который я вижу - ломать gems на предмет смотрения
>>в базы RPM - думаю, это совсем крайний случай.
> 
> В базу лесть не обязательно, достаточно дёрнуть rpmquery. Хотя тоже
> костыль.

Ну, да, согласен...

>>>2. Собирать не из gems.
>>
>>Всё ломать на тему отрывания gems - малореально, очень сложно и очень
>>bug-prone. Мы не сможем его оттестировать в достаточной мере, и каждый
>>апдейт будет превращаться в кошмар - все придется по сути переделывать
>>заново. Опять же - потом по сути лишаем юзера любой поддержки, кроме
>>нашей. Всё, что не пройдет через наши руки - будет невозможно установить.
>>
>>У меня есть, как ни банально - предложение решить все третьим вариантом:
>>вернуть сборку ruby-rake из gems и не трогать ее.
> 
> У меня, есть ещё один вариант. Имеет ли смысл вообще оборачивать в rpm
> gem'ы? Может просто собрать rubygems и успокоиться. Всё остальное
> пользователь вытянет с помощью самого gems.

gem сам по себе - отдельный package manager, а не некая панацея.
Допустим, у меня абсолютно изолированная система, не имеющая доступа в
интернет или просто возможности качать несколько мегов пакетов. Так мне
придется сделать:

Принести локально копию Сизифа, поставить rubygems. Попытаться сделать
gem update, понять, что списки пакетов даже я не скачаю, дойти до машины
с интернетом, скачать их там, принести файликом. Поставить наконец-таки
этот список пакетов вручную, сделать gem install rails с некими опциями,
понять, что скачать нельзя, взять (а ля offline apt) список пакетов,
отнести его опять же на другой компьютер, скачать их там,
принести-поставить. Последние несколько шагов, возможно, придется
повторить в несколько итераций. А если еще и пакеты в процессе несения
успеют проапдейтится - вообще начинать все с начала.

В случае наличия пакетов в Сизифе - прихожу, ставлю локальную копию
Сизифа, говорю apt-get install ruby-rails - и работаю.

Думаю, некий смысл в этом есть, нет?

> Можно ещё отделить собраные из gems пакеты от собраных из tar, как
> предложил raorn на .

Да, вариант.

Итого, подвожу черту. Предложены варианты (плюсы и минусы рискну описать
со своей point of view):

1. Форкнуть все хозяйство ruby и иметь 2 варианта: с gem и без.

Плюсы: никто никому не мешает, никто ни с кем не ругается, все работает.
Минусы: куча работы, которая еще и дублируется.

2. Сделать в gems поддержку смотрения на пакеты в RPM.

Плюсы: теоретически эту проблему решим.
Минусы: не факт, что дальше не всплывет что-то еще, для чего критичны
именно rake из gem; несистемность подхода, просто подпорка для лечения
симптома.

3. Собирать не из gems.

Плюсы: все идеально, все работает, все идеологически прямо.
Минусы: малореально; дикое количество работы и стремящееся к
бесконечности (~сложность написания всего заново) сложность поддержки.

4. Собрать rake и все, что потребуется по дороге с gems.

Плюсы: будет работать, минимальные телодвижения.
Минусы: остается спорность неких моментов, относящихся к FHS; raorn@
приводил пример с require vs require_gem;

5. Выкинуть все, что относится к rubygems как таковому из Сизифа, кроме
самого менеджера пакетов.

Плюсы: отдельно имеем 2 пакетные системы, все точно будет работать.
Минусы: нарушаем целостность дистрибутива, с большой вероятностью
получаем полный зоопарк неподдерживаемых файлов; примерный сценарий
счастья, которое можно получить - описан выше.

Сколько у нас заинтересованных лиц и среди заинтересованных - кто за
какой способ решения вопроса?

> И вообще, тебе как мэйнтейнеру rubygems следовало бы пинать upstream.
> Тогда может быть мы когда-нибудь получим, что-то пригодное к
> использованию в package-based дистрибутивах. Сейчас оно таковым не
> является.

Да объясни, почему не является-то? Все их используют - а мы чем такие
уникальные?

-- 
WBR, Mikhail Yakshin AKA GreyCat



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