© MIRANTIS 2013PAGE 1© MIRANTIS 2013 О правильной сборке RPM- пакетов Matthew Mosesohn Senior Deployment Engineer.

Презентация:



Advertisements
Похожие презентации
Сервисы Google в образовании. Почему Google? 10 аргументов «за» 1. Бесплатность. 2 доступны все базовые возможности; отсутствие ограничений на период.
Advertisements

К построению и контролю соблюдения политик безопасности распределенных компьютерных систем на основе механизмов доверия А. А. Иткес В. Б. Савкин Институт.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ Работа с ОС GNU/Linux в терминальных классах Кафедры ВС Старший преподаватель Кафедры ВС, к.т.н. Поляков Артем.
Особенности технической подготовки аудиторий к КЕГЭ и его проведения 2 октября 2012 года.
П рограммное обеспечение (англ. software) – это совокупность программ, обеспечивающих функционирование компьютеров и решение с их помощью задач предметных.
Многоуровневое мандатное управление доступом в многооконной графической среде ОС класса Linux Авторы: к.т.н., доцент Д. В. Ефанов * аспирант кафедры 36.
1 Диаграммы реализации (implementation diagrams).
Тема 11 Медицинская помощь и лечение (схема 1). Тема 11 Медицинская помощь и лечение (схема 2)
Лекция 3 Раздел 3,1 Windows Phone Темы раздела 3.
Лекция 1 Раздел 1 Windows Phone Темы раздела 3 Windows Phone Устройство на платформе Windows Phone 4.
Модуль переноса решений Как средство распространения партнерских решений Варфоломеев Антон Директор по производству DocsVision.
Преимущества 1. Четыре базовых дистрибутива Linux: Debian (Xandros, Knoppix, Ubuntu и др.), Red Hat (Red Hat, Fedora, CentOS и др.), Slackware (Slackware.
Программная система «Портал научной группы» (разработано в рамках ПНР-5) 24 марта 2011 г. Челябинск Южно-Уральский государственный университет 1.
Инструкция по развертыванию и настройке системы дистанционного обучения Moodle.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
1 Программное обеспечение (ПО) или «софт» (software) По назначению Системное Прикладное Инструментальное По способу распространения Проприетарное Открытое.
Использование Amazon Web Services Соболев Д.Н. (ВМИ-115)
Краткая инструкция по настройке сетевого режима работы ПП «СТЭК-ТРАСТ». АРМ «ТРАСТ-Клиент» (Система «СТЭК-ТРАСТ») ©ЗАО «НТЦ СТЭК» Сайт:
Подготовка компьютера к практической работе на языке Java Первый этап: установка платформы языка Второй этап: установка редактора.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРА Ключевые слова программа программное обеспечение (ПО) системное ПО прикладное ПО система программирования.
Транксрипт:

© MIRANTIS 2013PAGE 1© MIRANTIS 2013 О правильной сборке RPM- пакетов Matthew Mosesohn Senior Deployment Engineer

© MIRANTIS 2013Стр. 2 О компании Mirantis Лидер в области установки и технической поддержки OpenStack Разработала FUEL для автоматизации развертывания OpenStack В работе со всеми программными решениями использует принцип Open source

© MIRANTIS 2013Стр. 3 Сборка пакетов? А как же облако? OpenStack кластер систем Linux Системы Linux представляют собой компиляцию ПО Программы собираются в пакеты Пакеты должны быть собраны правильно Некачественная сборка приводит к проблемам в работе систем

© MIRANTIS 2013Стр. 4 Что такое программный пакет? Пакетом называется специальным образом отформатированный файл, содержащий скрипты, правила и файлы, для которого определены требования и функции

© MIRANTIS 2013Стр. 5 Getting Started Отличный пример: _RPM_package _RPM_package RPM.org Самостоятельная загрузка и доработка SRPM – начните с основных поставщиков (Red Hat или CentOS) – разработки третьих лиц могут иметь свои особенности/недостатки

© MIRANTIS 2013Стр. 6 Кто собирает программные пакеты? Основные поставщики (Red Hat, Ubuntu, SuSE) Вторичные поставщики (CentOS, Mint) Разработчики Сисадмины

© MIRANTIS 2013Стр. 7 Зачем пересобирать пакеты? Для установки патчей При смене логотипов / другой графики При добавлении нового функционала Для обеспечения бесшовной сборки

© MIRANTIS 2013Стр. 8 Что делает сборщик пакетов: Определяет требования для установки ПО Составляет описание программы Ведет журнал изменений Предварительно компилирует ПО Определяет адреса установочных директорий и способ установки ПО Добавляет вспомогательные скрипты, чтобы обеспечить успешную установку Добавляет скрипты Glue для апгрейда/даунгрейда

© MIRANTIS 2013Стр. 9 Система для сборки пакетов Минимальный набор пакетов Система должна быть чистой Должна быть частью более крупной автоматизированной системы

© MIRANTIS 2013Стр. 10 Чего следует избегать при сборке: Доступа к сетям Доступа к внешним кодам Влияния на другие пакеты и их файлы Чрезмерной зависимости от системных сервисов Предварительно скомпилированного ПО

© MIRANTIS 2013Стр. 11 Пример spec-файла Prep Build Install Pre Post

© MIRANTIS 2013Стр. 12 Пример spec-файла Name:python-osnagios Version:1.1 Release:4%{?dist} Summary:Nagios plugins for OpenStack Group:System/networking Source0:%{name}.tar.gz Requires:python >= 2.6, python-argparse, python-amqplib, libvirt-python, openstack-swift, python-simplejson, python- httplib2, python-setuptools BuildRequires: python-setuptools %description Nagios plugins for OpenStack

© MIRANTIS 2013Стр. 13 Пример spec-файла %prep %setup -c %build %{__python} setup.py build %install %{__python} setup.py install -O1 --skip-build --root %{buildroot} %files %defattr(-,root,root,-) %{python_sitearch}/os_nagios-0.2.egg-info %{python_sitearch}/os_nagios/* %changelog * Wed Jan Mirantis Product Initial release

© MIRANTIS 2013Стр. 14 Prep %prep %setup -c %patch0 -p1 Распаковка исходных файлов Использование macro %setup Применение патчей

© MIRANTIS 2013Стр. 15 Build %{__python} setup.py build./configure make $BUILD_OPTIONS Компилирование ПО Прописывание опций сборки

© MIRANTIS 2013Стр. 16 Install %{__python} setup.py install -O1 --skip-build --root %{buildroot} make install /usr/bin/install -d $RPM_BUILD_ROOT %{_datadir}/%{name} /usr/bin/install -m 755 $RPM_BUILD_ROOT myapplication %{_datadir}/%{name}/myapplication gem install --local --install-dir %{gembuilddir} --force %{SOURCE0} Создание «корневой» папки для установки файлов Размещение в ней собранного ПО Добавление дополнительных файлов приложений Удаление ненужных файлов

© MIRANTIS 2013Стр. 17 Pre Используется относительно редко Все необходимые шаги по подготовке к установке пакета Некоторые пакеты создают специальный аккаунт пользователя

© MIRANTIS 2013Стр. 18 Post Регистрация разделяемых библиотек (ldconfig) Регистрация приложения для запуска Модификация sudoers Добавление glue-кода для апгрейда (при необходимости) Перезагрузить сервисы (при необходимости)

© MIRANTIS 2013Стр. 19 «Нужно» и «нельзя» при сборке

© MIRANTIS 2013Стр. 20 Нужно: Обеспечить компактность и логичность секций %prep и %install Добавить комментарии, чтобы другим сборщикам были понятны ваши идеи Исходные файлы называть %{SOURCE0}, %{SOURCE1} и т.д. (для упрощения последующих апдейтов) По каждому апдейту составить подробный журнал изменений Использовать %setup -c для извлечения исходных tar- или zip-файлов Использовать mkdir -p /path перед установкой файлов в $RPM_BUILD_ROO

© MIRANTIS 2013Стр. 21 Нельзя: Делать ссылки на другие директории; ваша текущая рабочая папка в %prep новая папка с исходными файлами Использовать cp для перемещения исходных файлов из папки- источника в $RPM_BUILD_ROOT. – Использовать install -m 0755 source $RPM_BUILD_ROOT/path/to/target Загружать исходные файлы с URL. Собирайте пакеты в собственной системе в rpm с исходной строкой: Source0: %{name}- %{version}.tar.gz Рассчитывать на сетевое подключение для работы секций %pre и %post в пользовательской системе Пытаться заменить файл, принадлежащий другому RPM Забывать о зависимостях (sudo, bash, gcc, autoconf, python- setuptools)

© MIRANTIS 2013Стр. 22 Бэкпортинг

© MIRANTIS 2013Стр. 23 Бэкпортинг Применяется для: – Устранения багов – Добавления новых функций – Для адаптации пакетов к работе в системах со старыми версиями библиотек – Интеграции новых, не полностью совместимых с системой пакетов

© MIRANTIS 2013Стр. 24 Пример бэкпортинга Программа: dnsmasq версия 2.64 Сервер DHCP и DNS Полезна для управления сетями небольшого масштаба Необходимо было обновить программу до 2.64 для устранения бага unicast DHCP для различных сетевых интерфейсов Последняя версия в CentOS/RHEL 2.48

© MIRANTIS 2013Стр. 25 Процедура бэкпортинга Загрузите исходный RPM-файл rpm -i dnsmasq fc18.src.rpm Отредактируйте dnsmasq.spec Добавьте журнал изменений Запустите `rpmbuild -ba dnsmasq.spec` Установите созданный RPM При необходимости проведите отладку

© MIRANTIS 2013Стр. 26 Проблемы и недостатки бэкпортинга Отсутствие поддержки SystemD в CentOS Необходимость конвертирования сервисных скриптов в SysV При необходимости приходится использовать старые копии Для исходного скрипта добавляется новый исходный файл Исходный скрипт добавляется в секцию %install По возможности закомментировать строки SystemD

© MIRANTIS 2013Стр. 27 Спасибо за внимание! Есть вопросы?