Отвечает ли Gentoo Wiki на вопрос «как опакетить гем?»
https://wiki.gentoo.org/wiki/Project:Ruby
https://wiki.gentoo.org/wiki/Ruby
https://wiki.gentoo.org/wiki/Project:Ruby/Packaging_RubyGems
по-хорошему - нет, не отвечает. Например, если есть возможность опакечивать из исходников, почему надо опакечивать из гемов?
Соответствует ли опакечивание из гемов гайдлайнам генту, которые сделаны так, чтобы в distfiles хранились исходные тексты,
и была возможна установка без интернета?
Гемы:
- содержат код (который может быть использован в других Ruby-проектах)
- могут быть установлены и обновлены с помощью команды gem в командной строке
Чтобы упаковать гем для Gentoo, можно использовать утилиту gem2ebuild, которая автоматически создает ebuild-файлы для Gentoo из гемов.
Об этой утилите говорится в этом сообщении:
https://archives.gentoo.org/gentoo-dev/message/e36124a81656122b9492ebcbeebac7b4
Однако найти гуглом её невозможно, только поиском по github:
https://github.com/p8952/gem2ebuild
И к ней нет .ebuild-файла.
И вообще не ясно, нормально ли такую утилиту писать на языке программирования Ruby, учитывая, что всё остальное в Gentoo написано на Python. Мне-то всё равно, я не знаю ни руби ни питона, но какой язык должен был бы быть выбран? Считаю, что python, потому что кроме ruby ещё есть javascript/npm, rust/cradle и другие языки, работающие по принципу модулей. Написание для всех них генераторов на одном языке, выбранном дистрибутивом, позволило бы использовать код многократно и сократить кривую обучения мейнтейнеров.
Прочитал также
https://guides.rubygems.org/what-is-a-gem/
Вопросов стало только больше.
- Например, учитывая, что гемы содержат бинарные файлы, то как деплоймент этих бинарных файлов соответствует спецификации FHS?
- И если сборка в Gentoo должна идти из исходников, то как потом сделать чтобы ruby-проект работал с бинарными файлами установленными глобально - делать симлинки?
- Внутри спецификации гема написано, где у гема домашняя страница. Но не написано где репозиторий с исходным кодом. Есть ли гарантированный способ найти? (Если такого документированного способа нет, то это недоработка рубистов, поэтому нужен тег #ruby). Для рубистов надо написать багу, об отсутствии стандарта на эту операцию