КС:2015:Проект:rpmdb-alien-repos-sync
ВНИМАНИЕ! При реализации проекта настоятельно рекомендуется использовать отдельную инсталляцию Linux в виртуальной машине,
иначе вы рискуете получить неработоспособную систему! |
Содержание
[убрать]Метаданные
ID проекта: rpmdb
Презентация проекта: http://1drv.ms/1VmeBQ0
Ментор проекта: Виктор Яковлев
Аккаунты ментора в git-сервисах:
- GitHub.com: victor-yacovlev
- GitLab.com: v-yacovlev
- BitBucket.org: victor_yacovlev
Что это за проект
Введение
Современные Linux-системы имеют встроенных пакетный менеджер (rpm или deb), который управляет установкой программного обеспечения и обеспечивает его обновления (включая зависимости).
Однако, многие программне системы имеют свои, альтернативные пакетные системы: pip для Python, gems для Ruby или npm для Node.js. Изменения в установленное программное обеспечение, которые вносятся альтернативными пакетными менеджерами, никак не отражаются в системном пакетном менеджере.
Пример коллизии:
sudo pip3 install numpy # Ok, установлен numpy для Python3 sudo rpm -i python3-matplotlib.rpm # Ошибка! Matplotlib зависит от python3-numpy, который # установлен через pip, но пакетный менеджер про него # ничего не знает
Что требуется
Реализовать инструмент для синхронизации базы данных установленных пакетов RPM с пакетными менеджерами:
1. pip (Python2 и Python3)
2. gem (Ruby)
3. npm (Node.js)
Синхронизация должна выполняться прозрачно для пользователя, то есть не требовать ввода отдельных команд.
Чему вы научитесь
1. Познаете устройство механизмов установки и сопровождения ПО
2. Работать с inotify
Начальные требования
1. Умение разрабатывать программы на C++ или Python
Критерии оценивания
Первая контрольная точка (24 октября 2015 г.)
Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть:
- Файл README.md, который содержит описание проекта, написанный в расчета на "конечного пользователя". Это описание должно быть написано самостоятельно, а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать.
- Программу, которая генерирует корректный текстовый SPEC-файл, из которого можно собрать RPM-пакет с помощью команды rpmbuild.
- Для тех, кто реализует проект на C++, - проектный файл CMakeLists.txt.
Вторая контрольная точка (14 ноября 2015 г.)
Реализован инструмент, который умеет вносить осмысленные изменения в базу данных RPM
Итоговая оценка
- 4 балла. Реализована программа, которая при явном запуске вносит изменения о пакетах pip в базу данных rpm
- 6 баллов. Реализована работа с пакетными менеджерами gem и npm
- 8 баллов. Реализован демон, который отслеживает изменения и вызывает инструмент для синхронизации
- +1 балл. Демон оформлен в виде системной службы для systemd
- +2 балла. Реализована синхронизация в обратную сторону, то есть по данным из rpm выполняется регистрация или удаление программ в
альтернативных пакетных менеджерах
- +1 балл. Демон использует не более 10 обработчиков событий inotify