Возможно вы искали: 'Golden Years: Way Out ...'

May 15 2025 23:47:03
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96161170
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18360
• Обзор The Walking ... 18804
• Обзор DMC: Devil M... 19880
• Обзор на игру Valk... 15878
• Обзор на игру Stars! 17765
• Обзор на Far Cry 3 17950
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17510
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16620
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14723
• Превью Firefall 13481
• Превью Dead Space 3 16335
• Превью о игре SimC... 14732
• Превью к игре Fuse 15443
• Превью Red Orche... 15542
• Превью Gothic 3 16347
• Превью Black & W... 17355
Главная » Статьи » Разное » Создание собственных RPM пакетов. (linux redhat fedora centos rpm packet)

Создание собственных RPM пакетов. (linux redhat fedora centos rpm packet)

Ключевые слова: linux, redhat, fedora, centos, rpm, packet, (найти похожие документы)

From: Lynz <http://red-hat-moscow-times.blogspot.com>
Date: Mon, 14 Jan 2007 14:31:37 +0000 (UTC)
Subject: Создание собственных RPM пакетов.

Оригинал: http://red-hat-moscow-times.blogspot.com/2007/08/rpm.html

Несколько лет назад, когда Linux использовали на инфраструктурных
серверах и компьютерах энтузиастов, было "модно" собирать ПО из
исходных текстов. Плох тот линуксоид, который не может пройти книжку
LFS и собрать свой дистрибутив.

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

Решение подобной проблемы - использование специального ПО и политики
управления пакетами с целью стандартизации управления жизненным циклом
ПО. Одним из решений для управления ПО является использование формата
RPM, а также одноименного менеджера пакетов.


RPM - что это такое?

Что такое пакет? Прежде всего пакет - это единица управление ПО. Пакет
состоит из:
1. Файлов, исполняемых и конфигурационных
2. Предустановочных действий.
3. Постустановочных действий
4. Действий, необходимых для удаления ПО.
5. Различной служебной информации (списки и контрольные суммы файлов
и т.д.)

Соответственно, пакет - это несколько больше, чем просто архив файлов.
RPM-пакеты - основной способ управления ПО во многих дистрибутивах
Linux. Разумно использовать его и для управления собственным ПО / ПО
третьих лиц, которое не распространяется в виде RPM по умолчанию.
Именно этим мы и займемся. Примеры из данной статьи разобраны и
протестированы на RHEL5, хотя по аналогии будут работать и во многих
других дистрибутивах.


Подготовка окружения для сборки RPM

В любой системе существует стандартная инфраструктура для сборки RPM.
По умолчанию она расположена в /usr/src/redhat/. Если подобного
каталога нет, установите пакет rpm-build. Его наличие позволяет
собирать пакеты, имея административные привилегии, что не всегда
безопасно. Мы будем использовать сборку под непривилегированным
пользователем, которого назовем brewbuilder.

Для демонстрации нам потребуется пакет hello-1.0.tar.gz, который можно
взять с сервера
ftp://62.205.185.52/765591143807cc23efcfb4f1b436ebbc/hello-1.0.tar.gz

Для того, чтобы сделать пользовательско-специфичное окружение для
сборки RPM, нам нужно всего лишь создать директории и переопределить
один макрос.

$ mkdir -p ~/workspace/redhat/{RPMS,SRPMS,SPECS,SOURCES,BUILD}
$ echo '%_topdir /home/brewbuilder/workspace/redhat' > ~/.rpmmacros


Теперь мы готовы к сборке. Для сборки нам необходим единственный файл
hello-1.0.tar.gz, который надо разместить в
~/workspace/redhat/SOURCES.


Часть основная - содержательная. SPEC-файл.

SPEC-файл - центральная часть процесса сборки. Написание корректного
SPEC-файла и является целью нашей сегодняшней работы. Итак приступим.

Есть простой способ обеспечить себе шаблон для сборки - запустите
emacs. =) Сложный - сделайте себе шаблон в вашем любимом редакторе
(читай VIM) или запомните необходимые стадии. Мы приведем сразу весь
SPEC-файл, позже разобрав его построчно. (Нумерация строк приведена
только для удобства, в реальном SPEC-файле нумерация не нужна.)

1. Name: hello
2. Version: 1.0
3. Release: 1
4. Summary: A sample package, saying hello, world
5. Group: Applications/Productivity
6. License: GPL
7. Source0: hello-1.0.tar.gz
8. BuildArch: i386
9. BuildRoot: %{_tmppath}/hello-root
10.
11. %description
12. This package basically does nothing, but it potentially could
13. do something useful.
14.
15.
16. %prep
17. %setup -q -n %{name}-%{version}
18.
19. %build
20. make
21.
22. %install
23. mkdir -p $RPM_BUILD_ROOT/usr/local/{bin,lib,share}
24. mkdir -p $RPM_BUILD_ROOT/usr/local/share/man/man1
25. install libhello.so.1.0 $RPM_BUILD_ROOT/usr/local/lib
26. install hello $RPM_BUILD_ROOT/usr/local/bin
27. gzip -9c hello.1 > hello.1.gz &&
28. install hello.1.gz $RPM_BUILD_ROOT/usr/local/share/man/man1
29.
30. %files
31. %defattr(-,root,root)
32. /usr/local/lib/libhello.so.1.0
33. /usr/local/bin/hello
34. /usr/local/share/man/man1/hello.1.gz
35.
36. %clean
37. make clean
38. rm -rf $RPM_BUILD_ROOT
39.
40. %post
41. echo "/usr/local/lib" " /etc/ld.so.conf
42. ldconfig
43.
44. %changelog
45. * Tue Jul 17 2007 Andrey Meganov
46. - Initial build

Итак, начнем. В строчках [1-6] находится стандартное описание пакета.
Эти поля необходимы, но назначение их чисто описательное за
исключением поля Source0, в котором указано имя архива с исходными
текстами. Помимо поля Source0, могут быть и Source1, Patch0 и далее по
аналогии.

Строчки [11-13] (секция %description) задают описание пакета. Это
стандартное многострочное описание, выводимое командой rpm -qi.

Строки [16-17] (секция %prep) отвечаю за подготовку пакета к сборке.
Единственная строчка в нашем случае - макрос %setup отвечает за
"тихую" (флаг -q) распаковку исходников Source0 в каталог
%{name}-%{version}. В этой секции полагается размещать подготовку
исходников с сборке, применение патчей и т.п.

Строки [19-20] (секция %build) отвечают за сборку исходников. В нашем
случае это делается просто командой make. В общем случае это почти
всегда комманды ./configure -prefix=$RPM_BUILD_ROOT/usr; make.

Секция %install [22-28] отвечает за установку файлов в окружении
сборки. В нашем случае стандартной цели make install нет, поэтому мы
устанавливаем все вручную. В общем случае make install в этой секции
почти всегда решит ваши проблемы. Заметьте, что все пути начинаются с
$RPM_BUILD_ROOT. Это достаточно важно и это главная причина не
собирать пакеты под пользователем root. В случае если вы - root и вы
забудете $RPM_BUILD_ROOT в начале пути, то вместо установки в
"песочнице" ваш файл будет установлен на вашей рабочей системе, чего
вы вряд ли хотите. =)

Секция %files [30-34] - одна из наиболее важных частей нашего
SPEC-файла. Она описывает файлы, входящие в RPM-пакет. В этой секции
желательно определить макросом %defattr(-,root,root) атрибуты по
умолчанию (владелец - root, группа root, доп. атрибутов нет.), иначе
при установке RPM-пакета пользователь увидит жалобы на то, что
пользователь brewbuilder не существует. При создании списка файлов
можно использовать шаблоны с символами '*' и '?', но делать это
следует осмотрительно, так как указание списка файлов как /* приведет
к включению лишних файлов в пакет. Специально можно пометить
конфигурационные файлы (%config), что приведет к специальному
обращению с ними, например при обновлении пакета, документацию (%doc)
и пустые директории, принадлежащие пакету (%dir). Подробнее об
использовании этих и других опций вы сможете прочитать в отдельных
статьях.

Секция %clean [36-38] описывает очистку временного окружения сборки и
обычно ничего кроме двух указанных команд не содержит.

Секция %post [40-42] описывает постинсталляционный скрипт. В нашем
случае мы добавляем /usr/local/lib к пути, по которым доступны
разделяемые библиотеки и успокаиваемся на этом. При написании данной
секции мы сделали очевидную ошибку. Ошибка заключается в том, что мы
не выдержали транзакционность. При удалении пакета мы не можем просто
убрать строчку /usr/local/lib из файла /etc/ld.so.conf, потому что мы
не можем рассчитывать, что никто другой не проверял наличие там этой
строчки. С другой стороны, если мы - последний пакет, которому эта
строчка нужна - неплохо было бы все таки иметь возможность удалить ее
- для чистоты процесса. Для этого придумали директории, вроде
/etc/ld.so.conf.d/. Чтобы добавить путь к библиотекам корректно, нам
просто необходимо создать свой файл со строчкой /usr/local/lib в этой
директории, а при удалении пакета (например, в неописанной в данной
статье секции %preun) удалить этот файл.

И последняя секция %changelog содержит историю пакета. История пишется
записями с фиксированным форматом даты, имени и адреса электронной
почты. Формат дальнейших заметок произволен. Рекомендуется серьезно
отнестись к changelog'ам, дабы избежать проблем в будущем.


Сборка пакета

Сборка пакета осуществляется одной командой

rpmbuild -ba [путь к SPEC-файлу]

После чего вы можете исследовать директории %_topdir/RPMS и
%_topdir/SRPMS, найти там собранные пакеты и исследовать их командами
rpm -q ...., установить и удалить соответственно.

Заключение

Вот мы и собрали наш первый RPM-пакет. Если вы хотите узнать более
тонкие моменты сборки RPM, то рекомендуем прочесть книгу RPM Guide,
доступную по адресу http://docs.fedoraproject.org/drafts/rpm-guide-en/ .
В дальнейшем мы обязательно расскажем о подписи RPM-пакетов и создании
собственных репозитариев для yum.
1035 Прочтений •  [Создание собственных RPM пакетов. (linux redhat fedora centos rpm packet)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Создание собственных RPM пакетов. (... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка