четверг, 13 декабря 2007 г.

RPM weaknesses

RPM Package Manager позволяет работать с вашим компьютером просто и удобно. Она следит за обновлениями дистрибутивов, позволяет динамично переключаться между репозиториями и всегда быть абсолютно уверенным какие файлы на локальной машине были изменены или устарели. RPM это большой шаг в перед, по сравнению с устаревшими механизмами распространения пакетов через исходный код. Для того чтобы получить работающий компьютер теперь нет необходимости иметь квалификацию программиста, знать тонкости сборки ядра под разные версии компиляторов, искать потерянные библиотеки и тратить несколько часов на сборку графической среды. Однако как любая система она нацелена на достижения определенной цели, которая может быть не всегда достижима или быть не эффективна. Я говорю про не достаточную объективность при построении opensource модели.  

Получение данных с внешних источников
Современный рынок услуг до сих пор не стал полностью на путь взаимного доверия с потребителем, и мы по прежнему получаем большую часть продукции из коробки, в которой приложена лицензия ограничивающая нас на большинство действий. Так в частности, на распространение приобретенного продукта. Данная проблема касается не только вопроса про пиратства, который конечно негативно отражается на развитии цивилизованного программного рынка и достойного вознаграждения разработчиков за их труд. Другой стороной этой проблемы стоит необоснованное ограничение моих возможностей как легального пользователя. А это ограничивает работу с проприетарными продуктами и не позволяет применять технологичные решения управления дистрибутивами, которых так много в opensource сообществе. Другими словами модель, которая обязывает хранить всю информацию в одном репозитории уже устарела. Во первых наличие зеркал не решают проблемы распределенности, во вторых современные продукты требуют хранения информации на лицензионном носителе, в то время как настройки для таких систем могут располагаться в репозитории дистрибутива системы. Получается что мы приходим к модели p2p систем в которой носителем защищенного контента являются пользователи а дистрибутив это средство работы с этим контентом. Выходит наша задача построить систему RPM базирующуюся на трех основных компонентах: источник данных, репозиторий, файлы настройки.

Источник данных - это любой ресурс который содержит лицензионный контент. Пользователь в праве сам выбирать откуда он готов предоставить системе получить данные для дистрибутива. В частности это может быть p2p сеть, такая как torrent, emule или лицензионный носитель на компакт диске.

Репозиторий - это централизованное хранилище настроек и информации о том какие данные необходимо получить для работы системы. Для простых данных дистрибутивов это может быть md5 сумма и ссылка на зеркала. Для более надежной защиты и дополнительной проверки целостности источника лучше применять ссылки emule или torrent. Конфигурационные файлы - это набор скриптов позволяющий адаптировать данные для работы в текущем репозитории, включающие перемещение данных, компиляция исходников или наложение пачей на бинарные файлы.

В результате такого преобразования системы мы получим полный контроль и гибкость для построения любых дистрибутивов содержащих любой контент, как закрытый так и открытый и практически удовлетворяющий всем условиям лицензирования.

Таким образом необходимо усовершенствовать yum - поддержка torrent, emule, dc++, cdrom. Поддержка стандартом rpm - внешних ссылок. Создание репозиториев с конфирурациями и информаии контенте дело уже пользователей. Для програмных дистрибутивов подойдет квалификация по типу дистрибутива. К примеру для того чтобы установить quake3 понадобиться файл pak0.pk3 из baseqa3, его можно подписывать по md5, так же источники с более полной информацией такие как DTH (dc++) или ссылка emule. Для создания репоизториев перечисляющих музыкальные композиции подойдет жанр, год, имя группы и так далее, кроме того кодек, его версию и md5 сумма файла, или DTH\emule. В этом случае мы всегда будем уверены что наш компакт диск, с которого происходит копирование данных подлинный!  

Система проверки целостности 
Кроме проблемы распространения, другая менее глобальная. К сожалению в современных дистрибутивах базирующихся на установочных пакетах нет очень важной возможности по контролю за состоянием системы. Любой пакет может быть случайно или умышленно изменен и мы получаем неработоспособную системы. Особенно это чувствительно для пакетов библиотек изменение которых в случае искажения файловой системы могут привести к потерю управления всей системы. Очень не хватает средства позволяющего просматривать все файлы системы и наглядно отображать пакеты дистрибутивов которым они принадлежат. Кроме того, необходимо отражать изменения файлов на диске и лишних файлов, не принадлежащих ни одному из пакетов. В случае обнаружения таких отличий необходимо представить возможность переустановить поврежденный пакет или удалить лишний\временный файл.

yum install amarok prodigy-discography

4 коммент.:

  1. Касательно проверки целостности.

    Существует rpm -V для верификации целостности и rpm -qf для выяснения принадлежности фалов.

    Легкий налет Shell вокруг этого - получается рабочий инструмент, причем RPMDB здесь достаточно эффективна.

    Касательно первой части. Лицензионности недопустимы в RPM. Причем недопустимы просто потому, что RPM - низкоуровневый транзакционный и неинтерактивный инструмент. Соответственно обвязки с концигурацией должны быть (и кстати бывают) на стадии сборки RPM (тоесть к подобному контену можно просто выкладывать SPEC, где RPMbuild реализует нужную функциональность), либо должны вводиться в более высокоуровневые инструменты класса yum.

    ОтветитьУдалить
  2. Для обеспечения целостности, нехватает этого самого средства, а не простой обертки на шеле. То что доступно сейчас крайне не наглядно, и тем самым осложняет диагностику. В частности, у меня уже несколько раз портилась файловая система на низком уровне из за неаккуратной работы с ней. И я незнаю средства позволяющее восстановить мою систему и сделать это наглядно, кроме разве что установочного диска. С некоторыми хитростями так же помогает smart reinstall `rpm -qa`

    Лицензионные ограничения в этом случае никого не беспокоят, так как контент не распространяется с пакетом.

    ОтветитьУдалить
  3. Uh, maybe Google Translate mangled the contents of your post (making me miss your point), but it is already fairly easy to add a custom RPM repository, all the user has to do is install a package like livna-release or calcforge-release, which is relatively easy to create for a developer.

    ОтветитьУдалить
  4. I told about different rpm content, and rpm distribution system, not only source code and media. For example u can put in rpm information about torrent download, and paches for binary content. Alsa yum must correctly download remote torrents links.

    ОтветитьУдалить