Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемpcweek.ru
1 © MIRANTIS 2013PAGE 1© MIRANTIS 2013 О правильной сборке RPM- пакетов Matthew Mosesohn Senior Deployment Engineer
2 © MIRANTIS 2013Стр. 2 О компании Mirantis Лидер в области установки и технической поддержки OpenStack Разработала FUEL для автоматизации развертывания OpenStack В работе со всеми программными решениями использует принцип Open source
3 © MIRANTIS 2013Стр. 3 Сборка пакетов? А как же облако? OpenStack кластер систем Linux Системы Linux представляют собой компиляцию ПО Программы собираются в пакеты Пакеты должны быть собраны правильно Некачественная сборка приводит к проблемам в работе систем
4 © MIRANTIS 2013Стр. 4 Что такое программный пакет? Пакетом называется специальным образом отформатированный файл, содержащий скрипты, правила и файлы, для которого определены требования и функции
5 © MIRANTIS 2013Стр. 5 Getting Started Отличный пример: _RPM_package _RPM_package RPM.org Самостоятельная загрузка и доработка SRPM – начните с основных поставщиков (Red Hat или CentOS) – разработки третьих лиц могут иметь свои особенности/недостатки
6 © MIRANTIS 2013Стр. 6 Кто собирает программные пакеты? Основные поставщики (Red Hat, Ubuntu, SuSE) Вторичные поставщики (CentOS, Mint) Разработчики Сисадмины
7 © MIRANTIS 2013Стр. 7 Зачем пересобирать пакеты? Для установки патчей При смене логотипов / другой графики При добавлении нового функционала Для обеспечения бесшовной сборки
8 © MIRANTIS 2013Стр. 8 Что делает сборщик пакетов: Определяет требования для установки ПО Составляет описание программы Ведет журнал изменений Предварительно компилирует ПО Определяет адреса установочных директорий и способ установки ПО Добавляет вспомогательные скрипты, чтобы обеспечить успешную установку Добавляет скрипты Glue для апгрейда/даунгрейда
9 © MIRANTIS 2013Стр. 9 Система для сборки пакетов Минимальный набор пакетов Система должна быть чистой Должна быть частью более крупной автоматизированной системы
10 © MIRANTIS 2013Стр. 10 Чего следует избегать при сборке: Доступа к сетям Доступа к внешним кодам Влияния на другие пакеты и их файлы Чрезмерной зависимости от системных сервисов Предварительно скомпилированного ПО
11 © MIRANTIS 2013Стр. 11 Пример spec-файла Prep Build Install Pre Post
12 © 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
13 © 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
14 © MIRANTIS 2013Стр. 14 Prep %prep %setup -c %patch0 -p1 Распаковка исходных файлов Использование macro %setup Применение патчей
15 © MIRANTIS 2013Стр. 15 Build %{__python} setup.py build./configure make $BUILD_OPTIONS Компилирование ПО Прописывание опций сборки
16 © 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} Создание «корневой» папки для установки файлов Размещение в ней собранного ПО Добавление дополнительных файлов приложений Удаление ненужных файлов
17 © MIRANTIS 2013Стр. 17 Pre Используется относительно редко Все необходимые шаги по подготовке к установке пакета Некоторые пакеты создают специальный аккаунт пользователя
18 © MIRANTIS 2013Стр. 18 Post Регистрация разделяемых библиотек (ldconfig) Регистрация приложения для запуска Модификация sudoers Добавление glue-кода для апгрейда (при необходимости) Перезагрузить сервисы (при необходимости)
19 © MIRANTIS 2013Стр. 19 «Нужно» и «нельзя» при сборке
20 © MIRANTIS 2013Стр. 20 Нужно: Обеспечить компактность и логичность секций %prep и %install Добавить комментарии, чтобы другим сборщикам были понятны ваши идеи Исходные файлы называть %{SOURCE0}, %{SOURCE1} и т.д. (для упрощения последующих апдейтов) По каждому апдейту составить подробный журнал изменений Использовать %setup -c для извлечения исходных tar- или zip-файлов Использовать mkdir -p /path перед установкой файлов в $RPM_BUILD_ROO
21 © 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)
22 © MIRANTIS 2013Стр. 22 Бэкпортинг
23 © MIRANTIS 2013Стр. 23 Бэкпортинг Применяется для: – Устранения багов – Добавления новых функций – Для адаптации пакетов к работе в системах со старыми версиями библиотек – Интеграции новых, не полностью совместимых с системой пакетов
24 © MIRANTIS 2013Стр. 24 Пример бэкпортинга Программа: dnsmasq версия 2.64 Сервер DHCP и DNS Полезна для управления сетями небольшого масштаба Необходимо было обновить программу до 2.64 для устранения бага unicast DHCP для различных сетевых интерфейсов Последняя версия в CentOS/RHEL 2.48
25 © MIRANTIS 2013Стр. 25 Процедура бэкпортинга Загрузите исходный RPM-файл rpm -i dnsmasq fc18.src.rpm Отредактируйте dnsmasq.spec Добавьте журнал изменений Запустите `rpmbuild -ba dnsmasq.spec` Установите созданный RPM При необходимости проведите отладку
26 © MIRANTIS 2013Стр. 26 Проблемы и недостатки бэкпортинга Отсутствие поддержки SystemD в CentOS Необходимость конвертирования сервисных скриптов в SysV При необходимости приходится использовать старые копии Для исходного скрипта добавляется новый исходный файл Исходный скрипт добавляется в секцию %install По возможности закомментировать строки SystemD
27 © MIRANTIS 2013Стр. 27 Спасибо за внимание! Есть вопросы?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.