rpm5

21
RPM5 — основные достижения и планы на будущее Денис Силаков Евгений Буданов ROSA Lab

Upload: rosalab

Post on 05-Jul-2015

735 views

Category:

Documents


0 download

TRANSCRIPT

RPM5 — основные достижения и планы на

будущее

Денис СилаковЕвгений Буданов

ROSA Lab

RPM5: история

● 2005 год — расхождение веток RPM4● 2007 год — официальный запуск RPM5● январь 2008 года — RPM 5.0.0● ...● июль 2012 года — RPM 5.4.10

RPM5: использование

Основной пакетный менеджер:

● Mandriva● ROSA● WindRiver Linux● Unity Linux● OpenPKG● ...

Улучшения для мантейнеров

Реализованные:● Файловые триггеры● «Мягкие» зависимости● Встроенные интерпретаторы● Улучшенная работа с пакетами по сети● Различные подходы к уменьшению размера spec-

файлов

Обсуждаемые:● Локализация описаний пакетов● Использование параллелизма при сборке

Файловые триггеры

Цель — вынести на уровень RPM действия, общие для многих pre- и post-скриптов:

● Вызов ldconfig при установке/удалении библиотек● Обновление кэша иконок● Переконфигурирование загрузчика при установке

ядра ● Перезапуск сервисов (например, Apache) при

установке web-приложения● ...

Файловый триггер — пример grub2

grub2.filter

^./boot/vmlinuz­

grub2.script

#!/bin/sh/usr/sbin/grub2­mkconfig ­o \ /boot/grub2/grub.cfg

Мягкие зависимости

Дополнительный атрибут зависимости - RPMSENSE_MISSINGOK

● Чтобы это заметил пользователь, необходима поддержка со стороны менеджера пакетов более высокого уровня (Urpmi, Smart, …) и соответствующего GUI-инструментария (Rpmdrake, Smart-gui, …)

● Не путать с SUGGESTS вместо REQUIRES

Встроенные интерпретаторы

Цель — возможность использовать в pre- и post-скриптах что-то кроме shell:

● Ruby● Python● Perl● Tcl● Lua● …

+ ODBC, SQL, Git, SVN, ...

Облагораживание spec-файлов

● Генераторы зависимостей● Генераторы списков файлов с переводами● Автоматическое заполнение %name, %buildroot,

...● …

В реальности: + помощь со стороны сред сборки:

● Автогенерация Changelog● Вспомогательные макросы:

%cmake, %gem_build, ...

Работа с сетью

Если какое-то действие можно произвести над локальным файлом, то его же можно выполнить для файла, доступного по HTTP или FTP:

● rpm ­qip http://mysite.com/mypackage.rpm● Указание удаленного источника в полях Source   иPatch

● ...

Локализация описаний пакетов

Существующие подходы:

● Локализация в spec-файлахразрастание размера, трудности совместной работы, ...

● Отдельные пакеты с локализацией(specspo, mandriva-rpm-summary, …)привязка к процессу сборки, трудности с обновлением, ...

Локализация описаний — предложения RPM5

Использование content-addressable storage

Ключ: <id пакета, язык>

Значение:summary/descriptionна указанном языке

Система сборки(ABF)

Системалокализации

(Transifex)

RPM

Использование параллелизма при сборке пакета

● Сборка подпакетов● Использование параллельных алгоритмов сжатия

(gz -> pigz, bz2 -> pbzip2, xz — встроенная поддержка)

Улучшения для пользователей

● Транзакционное управление пакетами (RPM ACID)● Использование параллелизма при установке

пакетов● Использование СКВ (Git, SVN) для отслеживания

изменений файлов конфигурации

Транзакционное управление пакетами

Установка/удаление/обновление пакета как атомарная транзакция:

● Транзакция на уровне rpmdb● Отслеживание производимых системных вызовов ● ● ...

Использование параллелизма при установке

При обработке группы пакетов:● проверка GPG-подписей ● проверка контрольных сумм● проверка зависимостей● …

При обработке отдельного пакета:● параллельное разархивирование

(проблемы: нет реализации для xz, завязки в rpm на callback-функции для отслеживания прогресса, ...)

Config-файлы

Файлы конфигурации, входящие в состав пакетов, которые могут изменяться пользователями.

Что делать при обновлении пакета, в котором есть новый файл?

Текущий подход:а) оставляем старый файл, ставим новый с суффиксом .rpmnewb) сохраняем старый файл с суффиксом .rpmsave и ставим новый вместо него

СКВ для config-файлов

Предлагаемый подход:Храним файлы конфигурации в системе контроля версий (Git, SVN, ...)

● Отслеживаем полную историю, не только на уровне текущий/предыдущий файл

● Возможность слияния (merge) файлов средствами СКВ● Нет замусоривания файловой системы

RPM5 vs RPM4

Параллельное развитие, по возможности — поддержка совместимости(большинство пакетов, собранных с помощью RPM4, установятся в системах с RPM5)

● Поддержка тильды в версиях (чтобы foo-1.0.rpm был новее, чем foo-1.0~beta.rpm)

● Поддержка set-versions● ...

(по данным http://ohloh.net)RPM4

RPM5

RPM5 vs RPM4 — commits per month

Присоединяйтесь к разработке RPM5!

http://rpm5.orghttp://launchpad.net/rpm

E-mail:[email protected]

[email protected]