КС:2015:Проект:rpmdb-alien-repos-sync — различия между версиями
Vyacovlev (обсуждение | вклад) (Новая страница: «{| class="wikitable" |- | <big>'''ВНИМАНИЕ!''' При реализации проекта настоятельно рекомендуется исполь…») |
Vyacovlev (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 5: | Строка 5: | ||
</big> | </big> | ||
|} | |} | ||
| + | |||
| + | == Метаданные == | ||
| + | ID проекта: '''rpmdb''' | ||
| + | |||
| + | Презентация проекта: http://1drv.ms/1VmeBQ0 | ||
| + | |||
| + | Ментор проекта: Виктор Яковлев | ||
| + | |||
| + | Аккаунты ментора в git-сервисах: | ||
| + | |||
| + | * [http://GitHub.com GitHub.com]: victor-yacovlev | ||
| + | * [http://GitLab.com GitLab.com]: v-yacovlev | ||
| + | * [http://BitBucket.org BitBucket.org]: victor_yacovlev | ||
== Что это за проект == | == Что это за проект == | ||
| Строка 44: | Строка 57: | ||
1. Познаете устройство механизмов установки и сопровождения ПО | 1. Познаете устройство механизмов установки и сопровождения ПО | ||
| − | 2 | + | 2. Работать с <code>inotify</code> |
| − | + | ||
| − | + | ||
== Начальные требования == | == Начальные требования == | ||
| Строка 53: | Строка 64: | ||
== Критерии оценивания == | == Критерии оценивания == | ||
| − | === | + | === Первая контрольная точка (24 октября 2015 г.) === |
| − | Реализован инструмент, который умеет вносить | + | Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть: |
| + | * Файл README.md, который содержит описание проекта, написанный в расчета на "конечного пользователя". Это описание должно быть написано '''самостоятельно''', а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать. | ||
| + | * Программу, которая генерирует корректный текстовый SPEC-файл, из которого можно собрать RPM-пакет с помощью команды rpmbuild. | ||
| + | * Для тех, кто реализует проект на C++, - проектный файл CMakeLists.txt. | ||
| + | |||
| + | === Вторая контрольная точка (14 ноября 2015 г.) === | ||
| + | Реализован инструмент, который умеет вносить осмысленные изменения в базу данных RPM | ||
=== Итоговая оценка === | === Итоговая оценка === | ||
Текущая версия на 13:58, 19 октября 2015
| ВНИМАНИЕ! При реализации проекта настоятельно рекомендуется использовать отдельную инсталляцию 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