КС:2015:Проект:rpmdb-alien-repos-sync — различия между версиями
Vyacovlev (обсуждение | вклад) |
Vyacovlev (обсуждение | вклад) |
||
Строка 49: | Строка 49: | ||
1. Познаете устройство механизмов установки и сопровождения ПО | 1. Познаете устройство механизмов установки и сопровождения ПО | ||
− | 2 | + | 2. Работать с <code>inotify</code> |
− | + | ||
− | + | ||
== Начальные требования == | == Начальные требования == |
Версия 11:03, 10 октября 2015
ВНИМАНИЕ! При реализации проекта настоятельно рекомендуется использовать отдельную инсталляцию Linux в виртуальной машине,
иначе вы рискуете получить неработоспособную систему! |
Содержание
Метаданные
ID проекта: rpmdb
Презентация проекта: http://1drv.ms/1VmeBQ0
Что это за проект
Введение
Современные 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
Критерии оценивания
Требования на зачет в конце 1-го модуля
Реализован инструмент, который умеет вносить какие-либо изменения в базу данных RPM
Итоговая оценка
- 4 балла. Реализована программа, которая при явном запуске вносит изменения о пакетах pip в базу данных rpm
- 6 баллов. Реализована работа с пакетными менеджерами gem и npm
- 8 баллов. Реализован демон, который отслеживает изменения и вызывает инструмент для синхронизации
- +1 балл. Демон оформлен в виде системной службы для systemd
- +2 балла. Реализована синхронизация в обратную сторону, то есть по данным из rpm выполняется регистрация или удаление программ в
альтернативных пакетных менеджерах
- +1 балл. Демон использует не более 10 обработчиков событий inotify