КС:2015:Проект:rpmdb-alien-repos-sync

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
ВНИМАНИЕ! При реализации проекта настоятельно рекомендуется использовать отдельную инсталляцию 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. Работать с базами данных в формате Berkley DB

3. Работать с inotify

Начальные требования

1. Умение разрабатывать программы на C++ или Python

Критерии оценивания

Требования на зачет в конце 1-го модуля

Реализован инструмент, который умеет вносить какие-либо изменения в базу данных RPM

Итоговая оценка

  • 4 балла. Реализована программа, которая при явном запуске вносит изменения о пакетах pip в базу данных rpm
  • 6 баллов. Реализована работа с пакетными менеджерами gem и npm
  • 8 баллов. Реализован демон, который отслеживает изменения и вызывает инструмент для синхронизации
  • +1 балл. Демон оформлен в виде системной службы для systemd
  • +2 балла. Реализована синхронизация в обратную сторону, то есть по данным из rpm выполняется регистрация или удаление программ в

альтернативных пакетных менеджерах

  • +1 балл. Демон использует не более 10 обработчиков событий inotify