Доброго времени суток уважаемые пользователи ! Хотелось бы с вами поделиться своими переживаниями по поводу одного проекта и передать его в добрые руки.
Несколько лет занимаясь сборкой RPM пакетов для CentOS и ведя свой общедоступный репозиторий пакетов CentALT, я постоянно сталкивался с одной и той же проблемой. Многие пользователи просили включать в сборку пакет с взаимоисключающими опциями, аргументация могла быть различной, но факт имел место быть.
Рассуждая на данную тему, я пришел в выводу, что решить ее в пределах одного репозитория не представляется возможным, т.е. каждому из пользователей необходимо предоставить возможность самостоятельного выбора опций сборки и на выходе получить готовый RPM пакет с нужными ему опциями и модулями.
Обсудив эту тему с комрадом Wendor, мы прикинули, что проект будет востребован и полезен людям. Обмозговав затею и прикинув техническую часть мы со словами «Г… о вопрос сделаем.» приступили к работе. Если говорить честно, то к работе приступил Wendor, а я все время мешал ему давая свои «ценные» советы.
В проект мы закладывали очень простую философию — «Собери свой репозиторий». Пользователь мог бы выбрать необходимые ему пакеты, с необходимыми ему модулями, а на выходе получить ссылку на готовый к употреблению репозиторий. При обновлении пакета, он бы автоматически пересобирался для всех репозиториев пользователей. В планах было добавление возможности запила собственного конфига в пакет. Мы с упоением представляли как будет удобно обновлять парк серверов прямо из репозитория.
Через два дня сервис был написан Антоном от и до (он хоть и тоже админ, но немного кодит). Для начала решили собирать пакет nginx, отладить на нем всю систему, а уже после начать добавлять другие. Поправив SRPMS пакет Nginx я внес в БД опции которые можно было выбирать при сборке. Вуаля — сервис заработал, на выходе мы получили RPM пакет под нужную ОС (CentOS5/CentOS 6) с нужными нам опциями сборки. Мы внесли в список опция порядка 50 сторонних модулей для Nginx и в 95% процентов случаев сборка проходила успешно. Оставшиеся 5% составляли случаи когда мы выбирали несовместимые друг с другом опции типа «отключить поддержку http» и например «поддержка gzip». В систему были внесены всевозможные форки и доработки Nginx такие и сейчас можно осуществлять сборку следующих пакетов:
- Nginx
- Nginx-stable
- Tengine (TaoBao Nginx fork https://github.com/alibaba/tengine)
- OpenResty (http://openresty.org/)
Поигравшись со сборкой мы поняли, что вдвоем на голом энтузиазме волочить такой проект и развивать его нам не удастся. Проект забросили на пару месяцев «до лучших времен». Время текло, а воз и ныне там.
В конце концов мы решили, что проектом заниматься больше у нас не получится. Сегодня мы приняли решение отдать все наработки проекта в добрые руки.
Если найдутся люди желающие поддержать данное начинание, то мы с радостью объясним и покажем как развернуть им всю систему сборки с нуля и передадим все исходные коды.
Монетизация. Заинтересованный читатель скажет а «Где деньги Зин? (с)». Видятся простые и прозрачные схемы монетизации сервиса:
- Поставить ограничение для бесплатных аккаунтов в 5 пакетов в репозитории.
- В платных аккаунтах добавить возможность сборки с редкими, но нужными модулями например passenger для Nginx.
- Можно ограничить обновления на бесплатных учетных записях.
Ссылка на работающий сервис http://repobuild.com/.
Для тех, кто не хочет регистрироваться:
username: user
password: user
Создаем репозиторий, добавляем пакеты, выбираем опции для сборки выбранных пакетов
Ждем пока пакет соберется и получаем ссылку на репозиторий
Если сборка неуспешна, то ищем где в опциях мы накосячили (к сожалению сейчас еще не все взаимоисключающие опции внесены в список).
Вот как-то так. Если есть желающие продолжить наше дело, просим вас откликнуться.
Автор: CentALT