- Установка и удаление программ
- Содержание
- Программа управления приложениями
- Установка и удаление программ
- Фильтры пакетов при разных способах запуска
- Установка обновлений
- Дополнительные приложения
- Опытным пользователям. Консольные инструменты управления пакетами
- Коротко о программах
- urpmi
- urpme
- urpmq и urpmf
- urpmi.addmedia и urpmi.removemedia
- Опытным пользователям. Репозитории backports и testing
- Опытным пользователям. Альтернативные способы установки программного обеспечения
- Сторонние репозитории
- Пересборка с помощью source RPM более позднего релиза РОСА Linux
- Установка программ с использование исходных кодов
- ROSAForum
- Можно ли DEB превратить в RPM?
- Можно ли DEB превратить в RPM?
- Re: Можно ли DEB превратить в RPM?
- Re: Можно ли DEB превратить в RPM?
- Re: Можно ли DEB превратить в RPM?
- Re: Можно ли DEB превратить в RPM?
- Re: Можно ли DEB превратить в RPM?
- Re: Можно ли DEB превратить в RPM?
- Основы RPM
- Содержание
- Предисловие
- Установка программного обеспечения
- Основы
- Сборка пакетов для ROSA Desktop
- Предварительные задачи
- Создание требуемых папок
- Не создавайте файл .rpmmacros
- Сборка RPM
- Из существующих «исходников» RPM
- Сборка из исходных текстов
- Предварительные проверки
- Внутри spec-файла
- Раздел заголовка (header)
- Раздел подготовки к сборке (prep)
- Раздел сборки (build)
- Раздел установки (install)
- Раздел очистки (clean)
- Раздел файлов (files)
- Раздел журнала изменений (changelog)
- Что такое журналы изменений
- История изменений в системе контроля версий
- Сборка
- Оптимизация процесса сборки
- Проверка RPM-пакета
- Основные проверки
- Запуск Rpmlint
- Install test
- Что-то пошло не так?
- Предустановочные и постустановочные сценарии
- Основы
- Работа с обновлениями
- Файловые триггеры
- More macros
- Interaction with urpmi and rpmdrake
- Группы пакетов ROSA
- Лицензии
- Alternative: checkinstall
Установка и удаление программ
Содержание
Программа управления приложениями
В системе имеется несколько программ, помогающих в управлении программным обеспечением. Наиболее важными являются программы установки, удаления приложений ( rpmdrake / drakrpm).
Установка и удаление программ
Программа управления программным обеспечением называется rpmdrake / drakrpm.
С её помощью также можно управлять сетевыми репозиториями (источниками программ) и репозиториями на сменных носителях. rpmdrake / drakrpm можно запустить несколькими способами:
- Выбрать в системном меню пункт «Установка и удаление программ»;
- Запустить параметры системы и выбрать там значок
- Запустить эмулятор терминала (например, konsole ), набрать в командной строке эмулятора терминала нужную команду:
- rpmdrake или drakrpm — «установка и удаление программ»;
- drakrpm-edit-media — изменение списка источников программ (репозиториев)
Фильтры пакетов при разных способах запуска
Подробнее об интерфейсе программы управления пакетами написано в этой статье.
В РОСА версии 2010.2 ) и более поздних rpmdrake / drakrpm запускается с фильтром «пакеты с графическим интерфейсом».
Команда rpmdrake-remove запускает rpmdrake / drakrpm с фильтром «установлен». Использование этого фильтра позволяет получить пользователю список всех установленных в системе пакетов, что является наиболее удобным способом представления списка для операций удаления пакетов из системы.
«Просмотр доступного программного обеспечения» (в «Управлении программами») запускает rpmdrake / drakrpm без прав администратора. В этом случае пользователь может просматривать установленные в системе пакеты, а также просматривать пакеты, доступные для установки, но ни удалять ни устанавливать пакеты в этом режиме нельзя.
Выбрав в «Управлении программами» (в «Центре управления РОСА») пункт «Установка и удаление программ» , можно изменять вид списка пакетов с помощью выпадающего меню, которое включает в себя следующие элементы: всё, метапакеты, пакеты с графическим интерфейсом, установлено, не установлено, все обновления, обновления безопасности, баг-фиксы (исправления ошибок) , обычные обновления и бэкпорты (backports).
Установка обновлений
Для поддержания системы в актуальном состоянии необходимо регулярно производить её обновление. Для решения этих задач в РОСА предусмотрен инструмент, помогающий в установке обновлений. Запустить его можно так:
- запустить «Центре управления РОСА», перейти к вкладке «Управление программами» — «Обновление системы»
Если программа обновления была запущена впервые с момента установки РОСА Linux на ваш компьютер, она спросит разрешения на подключение к серверам РОСА, чтобы получить список зеркал, с которых можно загружать обновления. После получения вашего согласия на подключение, программа попросит выбрать наиболее географически близкое к вам месторасположение зеркала. После того, как зеркало выбрано, программа получит список доступных обновлений. По умолчанию программа получает список пакетов, исправляющих проблемы с безопасностью и критически важные ошибки (баг-фиксы).
Дополнительные приложения
После процедуры установки РОСА Linux на компьютер пользователь будет иметь доступ только к программному обеспечению, находящемуся на CD или DVD (в зависимости от того, с какого носителя была произведена установка). Конечно, количество доступных программ в таком случае невелико. Для того, чтобы получить доступ к дополнительным приложениям, необходимо настроить систему на использование общедоступных репозиториев, содержащих пакеты для РОСА Linux.
Настройку репозиториев можно произвести в любой момент, в том числе и отказавшись от предложения rpmdrake настроить источники программ при первом запуске. Подробную инструкцию можно найти на этой странице.
После того как процесс добавления репозиториев завершился, запустив rpmdrake , можно увидеть, что список доступных пакетов стал гораздо больше.
Опытным пользователям. Консольные инструменты управления пакетами
Кроме средств с графическим интерфейсом существуют инструменты управления пакетами, использующие интерфейс командной строки. Список доступного программного обеспечения не зависит от выбора инструмента.
Полное описание этих приложений выходит за рамки этой страницы. Более подробную информацию можно получить на этой странице.
Коротко о программах
urpmi
urpmi — это инструмент установки программ. Его использование требует обладания правами администратора. Для установки пакета и всех его зависимостей, выполните команду urpmi packagename . Если ввести не полное имя пакета, а лишь его часть, urpmi выполнит поиск и выдаст предложения. Другая полезная команда — urpmi —auto-update — обновит все доступные пакеты из всех репозиториев и установит все доступные обновления.
urpme
urpme — это инструмент для удаления программ. Его использование требует обладания правами администратора. Для удаления пакета и всех его зависимостей, выполните команду urpme packagename . Если ввести не полное имя пакета, а лишь его часть, urpme выполнит поиск и выдаст предложения.
urpmq и urpmf
urpmq и urpmf являются средствами поиска. Они могут быть использованы с правами обычного пользователя. urpmf используется для поиска пакета, содержащего определённый файл. urpmq используется для всех других поисковых операций. Вызываемый без параметров urpmq ищет имена пакетов. Обратитесь к страницам руководства (man-страницам) для получения дополнительной информации.
urpmi.addmedia и urpmi.removemedia
Эти инструменты предназначены для добавления и удаления репозиториев. Обратитесь к страницам руководства (man-страницам) для получения информации об использовании необходимых параметров. Существует несколько веб-сайтов, которые помогут сгенерировать команды для добавления репозиториев программ с помощью urpmi.addmedia. Два наиболее популярных веб-ресурса: официальный поиск зеркал Mandriva и поддерживаемые сообществом веб-сайты EasyUrpmi, urpmi.mandriva.ru.
Опытным пользователям. Репозитории backports и testing
Для РОСА существуют несколько официальных репозиториев программного обеспечения различного типа. Для получения полного перечня репозиториев и их описания, обратитесь к этой странице.
Всё программное обеспечение, доступное в РОСА, разделено по различным «веткам». Таких ветки всего три: main , contrib и non-free . Ветка main содержит свободное программное обеспечение, поддерживаемое официальными обновлениями. Contrib содержит свободное программное обеспечение, которое не поддерживается официальными обновлениями по безопасности. В ветку non-free попадает программное обеспечение, использование которого ограничено лицензионными соображениями (проще говоря, несвободные программы и пакеты).
Каждая вышеописанная ветка делится на четыре репозитория: release , updates , testing и backports . Release является основным репозиторием, который содержит все пакеты в том состоянии, в котором они находились на момент официального выпуска релиза. Updates содержит обновления по безопасности. В репозиторий backports попадают новые версии пакетов, то есть в этом репозитории содержатся новые версии программ, а не обновления по безопасности и критически важных ошибок. Приведём пример: в РОСА Linux 2010.2 пакеты Mozilla Firefox в репозиториях /main/release и /main/updates имели одну и ту же версию 4.5 , а в /main/backports — 5.0 , но в отличие от версии 4.5 , версия 5.0 официально не поддерживалась обновлениями по безопасности, так как находилась в /main/backports .
Репозитории testing содержат тестовые версии пакетов. Если в пакете РОСА найдена ошибка, необходимо сообщить об этом мэйнтейнеру пакета. Обновлённый пакет загружается мэйнтейнером в соответствующий репозиторий testing . Пользователи, испытывающие неудобства от использования пакета с ошибкой, могут подключить репозиторий testing , воспользоваться обновлённым пакетом и помочь в проверке того, что данный пакет действительно исправляет найденную ошибку и не приводит к возникновению других ошибок. Для сообщений используется централизованная система сбора сообщений о найденных ошибках Helpdesk.
Рекомендуется не оставлять репозитории testing и backports постоянно включенными. Если нужно установить какой-то определённый пакет, находящийся в одном из этих репозиториев, можно включить эти репозитории, установить необходимый пакет, и снова отключить.
Если вы выбрали для добавления репозитории /backports и (или) /contrib , вы должны регулярно обновлять списки доступных пакетов, так как эти репозитории регулярно обновляются. Обновить список доступных пакетов можно используя пункт «Обновить источник» из меню «Файл».
Опытным пользователям. Альтернативные способы установки программного обеспечения
Порой может возникнуть потребность в установке приложения, которого нет в официальном репозитории, или в приложении более новой версии. В этом случае можно использовать альтернативные методы установки программного обеспечения.
Сторонние репозитории
Можно поискать сторонние репозитории для РОСА/Mandriva Linux. Они могут содержать программы, версии которых новее чем те, что содержатся в официальных репозиториях. Кроме того, можно найти пакеты, которых вообще нет в официальных репозиториях.
В основном, рекомендуется использовать официальные репозитории в тех случаях, когда это возможно, но если действительно появляется необходимость в приложениях (или их новых версиях), которых нет в официальных репозиториях, использование сторонних репозиториев является более безопасным вариантом, чем использование пакетов, предназначенных для других дистрибутивов, или сборка и установка программ с использованием исходных кодов.
РОСА/Mandriva не может предоставить какую-либо поддержку для пакетов, предоставляемых третьими сторонами. При возникновении проблем, связанных с использованием таких пакетов, просьба обращаться за поддержкой к стороннему поставщику этих пакетов.
Очень многие пользователи жалуются: «Это приложение не работает!» На этот счёт можно дать несколько рекомендаций. Старайтесь использовать приложения из официальных репозиториев. Помните, что приоритетным является использование именно официальных репозиториев. Кроме того, использование новейшей версии пакета (и, возможно, содержащей ошибки) не так важно, как использование более старой, но лучше оттестированной версии. Если использование программы более новой версии так критично, её можно найти в backports.
Пересборка с помощью source RPM более позднего релиза РОСА Linux
Если необходим какой-либо пакет или его версия, отсутствующий в официальном или стороннем репозиториях для данного релиза РОСА Linux, но доступный для последующих релизов (включая Cooker), можно попробовать перекомпилировать SRPM из более позднего релиза. Source RPM можно найти на любом официальном зеркале РОСА в подкаталоге релиза /SRPMS, где имеется необходимый вам пакет. Для создания source RPM, следуйте инструкциям из Основы RPM: Вам нужно будет выполнить шаги из раздела «Предварительные задачи», а затем, следовать инструкциям раздела «Из существующих «исходников» RPM».
Установка программ с использование исходных кодов
Если нужное приложение отсутствует в официальных и сторонних репозиториях, его можно установить, загрузив и скомпилировав исходный код этого приложения. Это — наименее предпочтительный способ установки программного обеспечения, к нему следует прибегать только в случае крайней необходимости. Для получения более подробной информации о процедуре установки приложений с использованием их исходного кода обратитесь к этой странице.
Источник
ROSAForum
Forum about ROSA Linux Distros
- Темы без ответов
- Активные темы
- Поиск
- Наша команда
Можно ли DEB превратить в RPM?
Можно ли DEB превратить в RPM?
Сообщение DELTA-79 » 17 янв 2012, 11:19
Re: Можно ли DEB превратить в RPM?
Сообщение PastorDi » 17 янв 2012, 15:44
Потом установить появившийся .rpm пакет.
Re: Можно ли DEB превратить в RPM?
Сообщение DELTA-79 » 17 янв 2012, 17:06
Re: Можно ли DEB превратить в RPM?
Сообщение PastorDi » 17 янв 2012, 17:44
Re: Можно ли DEB превратить в RPM?
Сообщение DELTA-79 » 17 янв 2012, 23:07
Re: Можно ли DEB превратить в RPM?
Сообщение DELTA-79 » 17 янв 2012, 23:23
Re: Можно ли DEB превратить в RPM?
Сообщение PastorDi » 18 янв 2012, 00:42
судя по листингу, создайте дерево каталогов в папке root/
/rpmbuild/BUILD
/rpmbuild/RPMS
/rpmbuild/RPMS/i586
/rpmbuild/RPMS/x86_64
/rpmbuild/RPMS/noarch
/rpmbuild/SOURCES
/rpmbuild/SPECS
/rpmbuild/SRPMS
/rpmbuild/tmp
Почитать здесь про дерево можно.
И заного запустите конвертацию.
Источник
Основы RPM
ROSA Desktop — дистрибутив операционной системы GNU/Linux — выпускается и издаётся компанией РОСА, силами различных добровольцев, тестеров, переводчиков.
Содержание
Предисловие
Предполагается, что читатель имеет опыт использования Linux. Ему должны быть известны основные команды, структура каталогов, и ему уже приходилось использовать rpm хотя бы для установки пакетов.
Этот документ построен таким образом, чтобы провести читателя шаг за шагом к получению rpm-пакета, который смог бы хорошо интегрироваться в ROSA Desktop.
В первом приближении, RPM обозначает три понятия:
- программу, предназначенную для установки или создания пакетов;
- формат, использующийся в пакетах (двоичных или исходного кода), созданных программой rpm ;
- файл, который называется «пакетом», содержащий бинарный или исходный код, и информационный заголовок. Заголовок содержит инструкции по установке и удалению программы.
Программа rpm , с пользовательской точки зрения — мощный менеджер пакетов. Она играет роль посредника для любых действий, выполняемых с пакетами rpm. Кроме того, она может:
- установить или обновить пакет, учитывая зависимости;
- во время установки пакета подготовить действия, чтобы сделать установленную программу готовой к использованию;
- восстановить случайно удалённые файлы, принадлежащие пакету;
- показать информацию о том, что данный пакет уже установлен;
- найти пакет, к которому относится определённый файл;
- проверить текущую установку на выполнение требования зависимостей уже установленных пакетов;
- др.
С точки зрения программиста, программа rpm — упаковщик, скрывающий в одном единственном rpm-файле всю информацию, необходимую для установки программы на данную платформу.
Важно различать с самого начала пакеты с исходным кодом .src.rpm , и бинарные пакеты (пакеты, содержащие двоичный код) ..rpm .
Первые содержат полное дерево исходного кода, т. е. кода написанного программистом, плюс весь материал, добавленный упаковщиком, необходимый для настройки, компиляции и установки программы. Как правило, этот материал состоит из спек-файла и патчей (если они есть).
Вторые содержат откомпилированный бинарный код и все файлы (документация, файлы настроек, пиктограммы, . ), которые должны устанавливаться на целевой системе. Он также содержит процедуру, используемую для помещения файлов в соответствующие каталоги файловой системы, и действия, которые необходимо выполнить, чтобы получить нормально функционирующую программу.
Установка программного обеспечения
Основы
Хотя изначально программа rpm была разработана для дистрибутива Red Hat Linux, она также работает и в других дистрибутивах, основанных на rpm: OpenMandriva, Suse, Fedora и т. д.; на всех этих системах программа rpm уже установлена.
Бинарный rpm-пакет, который вы будете собирать для ROSA, может не работать в других дистрибутивах.
Сборка пакетов для ROSA Desktop
Сборка пакетов для Cooker (т. е. разрабатываемой версии ROSA Desktop) всегда сопровождается применением патчей и прочих улучшений со стороны rpm . Перед началом сборки убедитесь, что в системе установлены все перечисленные ниже пакеты:
- rpm — сам rpm;
- rpm-build — содержит сценарии, используемые при сборке пакетов;
- spec-helper — инструмент для минимализации спек-файлов с помощью некоторой автоматизации: разбор бинарных файлов, сжатие страниц руководств (man-страниц);
- libtool — используется некоторыми конфигурационными сценариями для сборки совместно используемых библиотек;
- rpmlint — используется для проверки корректности сгенерированного файла src.rpm .
Предварительные задачи
Создание требуемых папок
Перед тем, как приступить к сборке, нужно позаботиться об организации «рабочего места»: программе rpm необходимо определённое дерево каталогов в вашем «домашнем» каталоге. Это дерево можно создать с помощью следующей команды: mkdir -p
Замените $ARCH на название архитектуры, для который планируется выполнять сборку. Обычно это i586 или x86_64, но может быть также sparc, alpha или ppc.
Дерево каталогов должно иметь следующую структуру:
/rpm/BUILD : каталог для собранных исходников.
/rpm/RPMS : содержит каталоги, по одному каталогу на каждую архитектуру, куда кладутся бинарные пакеты после сборки.
/rpm/RPMS/i586 : каталог для хранения rpm-пакетов для процессоров i586.
/rpm/RPMS/x86_64 : каталог для хранения rpm-пакетов для процессоров x86_64.
/rpm/RPMS/noarch : каталог для хранения rpm-пакетов, не зависящих от архитектуры процессора.
/rpm/SOURCES : файлы исходного кода (например, mypackage.tar.bz2 ).
/rpm/SPECS : спек-файлы, которые мы должны построить.
/rpm/SRPMS : собранные src.rpm-пакеты.
/rpm/tmp : для временных файлов, которые создаются программой rpm во время сборки пакетов.
/rpm/RPMS. Если они отсутствуют, вы получите сообщение об ошибке.
Не создавайте файл .rpmmacros
Ряд руководств по сборке пакетов RPM советуют создать в «домашнем» каталоге файл конфигурации .rpmmacros с персональной информацией, которая будет добавлена в метаданные пакета, такой как значения %packager, %vendor и другие. Не делайте этого. Все подобные поля заполняются автоматически системой сборки. Однако, Вы все-таки можете создать этот файл, если Вы хотите указать другую директорию для сборки, отличную от /home/user/rpm. В этом случае укажите значения только для %_topdir и %_tmppath макросам. Не указывайте значения для других макросов.
Сборка RPM
Из существующих «исходников» RPM
Сборка с использованием существующих исходных кодов возможна в том случае, если пакет уже есть в репозиториях дистрибутива.
Последнюю версию rpm-файла можно взять из Cooker. Список зеркал Cooker находится на странице зеркала Cooker. Там можно найти:
SRPMS Каталог для хранения rpm с «исходниками» ( main , contrib , non-free , др.) для различных процессорных архитектур (i586, x86_64, …); media/main Для бинарных rpm из main ; media/contrib Для бинарных rpm из contrib ; media/non-free Для бинарных rpm из non-free ;
* ‘media/jpackage для бинарных rpm noarch. (jpackage нет)
Чтобы изменить source rpm для ROSA Linux, введите команду rpm -ivh мой_пакет.src.rpm . Эта команда установит все файлы с исходными кодами в созданный вами каталог
Из приведённого выше примера видно, что программа rpm установила в rpm-дерево файл с исходными кодами ktron-1.0.1.tar.bz2 и спек-файл. Было бы полезным пересобрать текущую версию пакета, чтобы понять, как он компилируется. Для этого нужно воспользоваться программой rpmbuild , запустив её с опцией buildall :
Если сборка завершилась без ошибок (а она, кстати, может длиться несколько часов, если собирается какой-нибудь сложный пакет, например, ядро), собранный пакет и пакет с исходными кодами будут находиться в каталогах
/rpm/SRPMS/ соответственно. Для того, чтобы установить собранный пакет, необходимо получить права суперпользователя. Для этого нужно ввести в терминале команду su и ввести пароль суперпользователя. Чтобы выйти из режима суперпользователя используйте клавиатурное сочетание клавиш «Ctrl+D» или наберите команду exit . Для сборки и пересборки пакетов с «исходниками» привилегий суперпользователя не требуется.
Журнал сборки может быть достаточно объёмным, его можно сохранить для последующего просмотра.
/rpm/BUILD обычно можно получить доступ к пропатченным «исходникам» (если один или более патчей находились в каталоге
/rpm/SOURCES ), бинарникам, скомпилированным библиотекам, страницам руководств и т. д. Спек-файл описывает исходный код и патч-файлы, способы сборки и установки пакета.
Теперь, чтобы исправить ktron , нужно лишь внести изменения в спек-файл, а затем пересобрать пакет.
Каждый спек-файл хранится в модуле SPECS/
. К нему можно получить доступ на cvs.mandriva.com.
Сборка из исходных текстов
Допустим, вы нашли интересную программу на сайте Freshmeat или Sourceforge, и вы хотите, чтобы эта программа стала доступной для всех пользователей ROSA Desktop.
Скачайте архив с исходным кодом и поместите его в каталог SOURCES .
Предварительные проверки
Внутри spec-файла
Вот мы и добрались до одной из важнейших глав этого документа. Spec-файл содержит всю необходимую информацию для:
- компиляции программы, сборки исходного кода и бинарного rpm-пакета;
- установки и удаления программы.
Короче говоря, спек-файл описывает моделируемую компиляцию и установку, говорит rpm , какие файлы, полученные в результате инсталляции, должны быть упакованы, и как они должны в итоге устанавливаться в системе. Команды выполняются с использованием командной оболочки /bin/sh , таким образом, конструкции команд вида [ -f configure.in ] && autoconf являются корректными и их можно применять.
Мы рассмотрим основные возможности, используемые в одном из спек-файлов. По мере того, как вы будете собирать всё больше и больше rpm-пакетов, вы поймёте, что существуют некоторые дополнительные параметры, о которых мы не рассказывали. Более подробную информацию можно получить в книге Maximum RPM (см. раздел 7).
Рассмотрим следующий пример спек-файла, взятого из Cooker:
Символ «%» в начале строки может означать:
- начало секции (раздела) (prep, build, install, clean);
- встроенный макрос сценария командной оболочки (setup, patch);
- директива, используемая специальными секциями (разделами) (defattr, doc, . ).
Раздел заголовка (header)
Эти три строки автоматически определяют константы, которые можно использовать в других разделах спек-файла, называемые %
Кроме того, есть несколько тегов, о которых вы, возможно, захотели бы узнать, но которых нет в примере спек-файла. Есть некоторые теги, которые вы можете встретить. Никто не требует, чтобы вы помнили все теги, если вы только приступили к сборке rpm-пакетов, но после некоторого времени этот список может послужить хорошей отправной точкой!
Теперь настало время объяснить, как формируется имя пакета. Очень важно всегда следовать этому соглашению, чтобы ваша работа была понятной для остальных.
- Бинарный пакет обозначается следующим образом: имя-версия-релиз.arch.rpm (name—version—release.arch.rpm)
- Пакет с исходным кодом обозначается следующим образом: имя-версия-релиз.src.rpm (name—version—release.src.rpm) (т. е. в нашем случае — gif2png-2.0.1-1mdk.src.rpm )
Имя, в основном, выбирается, исходя из названия главного бинарного пакета, хотя, при наличии веских причин, можно использовать другое имя.
Версия — это номер в имени оригинального исходного файла архива: name-version.tar.gz .
Релиз — это число, следующее за версией, увеличиваемое с каждой новой сборкой пакета, которая может быть связана с применением дополнительных патчей, изменениями внесёнными в спек-файл и даже тривиальным обновлением пиктограммы.
Эта строка представляет собой описание пакета.
Эта строка говорит rpm , какой файл исходного кода должен быть использован для сборки пакета. Заметьте, что имени файла предшествует полный URL (что, в общем случае, не обязательно), указывающий на веб-сайт, на котором расположен оригинальный исходный код. rpm уберёт URL, сохранив только имя файла, и произведёт поиск в каталоге SOURCES . Хотя предоставление полного URL и не является обязательным, его использование строго рекомендуется, таким образом любой желающий сможет узнать, где можно скачать исходники.
Если файлов с исходным кодом несколько, используйте несколько строк, начинающихся с Source1: …, Source2: … и т. д. соответственно.
Это необязательный тег. Его можно использовать в двух случаях:
- Вы исправили ошибку в исходном коде программы и создали патч, который должен быть применён к исходному коду программы перед компиляцией.
- Вы узнали, что для данного пакета программы где-то в сети есть патч, и скачали этот патч.
Все патчи должны находиться в каталоге SOURCES . Если патчей несколько, то они должны называться Patch1, Patch2 и т. д.
Эта строка указывает на домашнюю страницу программы. Её использование не является обязательным, но мы всё же рекомендуем её указывать.
Этот фрагмент говорит программе rpm , в какой части дерева пакетов разместить наш пакет. Эта возможность используется фронт-эндами пакетных менеджеров таких, как rpmdrake и kpackage .
Полная структура групп, которая, кстати говоря, отличается от аналогичных групп Red Hat, представлена на странице Packaging group. Очень важно следовать принятым соглашениям о группах, иначе ваш пакет внесёт неразбериху в дерево пакетов.
Этот тег определяет лицензию, выбранную держателем авторских прав, которая будет применяться к программному обеспечению, находящемуся в пакете. Чаще всего это GPL. На страницах лицензии РОСА и политика лицензирования представлены полные списки разрешённых к использованию лицензий.
Обозначает, что для компиляции rpm потребуются библиотеки языка python, часто необходимо указывать, например, libpyglib-gi2, python-devel, если какой-то пакет не найти сразу, то можно поискать его с помощью команды urpmi -p ИмяПакета, так как он может содержаться в другом пакете, это указывается командой
в Provides указывается имя библиотеки, которая может использоваться другими программами (предоставляется)
Эта строка была добавлена, потому что одна из программ, включённых в пакет, является сценарием написанным на языке программирования Python. Это означает, что для корректной работы программы потребуется интерпретатор python .
Можно использовать требование к минимальной (или конкретной) версии. Например:
В редких случаях приложение может конфликтовать с другими уже установленными библиотеками или старыми версиями приложений, чтобы убрать их из системы при установке нужно сообщить об этом пользователю, для этого используется тег
Некоторые пакеты становятся устаревшими после установки новых библиотек, чтобы отметить их и удалить используется тег
Ниже следует тег описания:
Это совершенно особый тег внутри заголовочной части спек-файла, потому что он содержит текст, который может занимать произвольное количество строк и параграфов. Текст содержит полное описание программного обеспечения, которое помогает пользователю решить нужно ли устанавливать данный пакет или нет. В целях улучшения восприятия спек-файлов, переводы тегов summary и description хранятся в специальных файлах, называемых
Эти файлы хранятся в poSPECS модуле в CVS Cooker. Когда создаётся новый пакет, основной po-файл автоматически создаётся в этом модуле для будущих переводов.
Этот метод подразумевает, что весь текст внутри спек-файла написал на английском языке. Однако, есть пакеты, предназначенные для определённых языков (например, ispell-de ). В этом случае рекомендуется наличие текста на двух языках: на английском и на языке, для которого предназначен этот пакет. Для этого надо будет использовать специальные теги: Summary(de): .. и %description -l de .
Раздел подготовки к сборке (prep)
В этом резделе записан первый сценарий, выполняемый программой rpm . Он делает следующее:
- создаёт каталог верхнего уровня для сборки (в BUILD );
- распаковывает оригинальный исходный код в каталог сборки;
- применяет патчи (если они есть) к исходному коду.
Это встроенный макрос, который выполняет следующие действия:
- переходит в дерево сборки;
- распаковывает исходный код (-q означает, что распаковка сопровождается минимальным выводом информации);
- изменяет владельца и права доступа к файлам с исходным кодом.
По умолчанию распаковывается первый исходный код (т. е. который имеет номер 0), для любых других исходников необходимо использовать дополнительные параметры, в нашем примере фрагмент -a 1 говорит, что мы также хотим распаковать исходный код с номером 1.
Есть и другие интересные возможности при использовании макроса %setup :
- -c name — переключатель -с говорит, что сначала должен создаваться каталог, и только затем должен осуществляться переход в этот каталог и происходить распаковка Source0. Это может оказаться полезным в том случае, если пакет tar.bz не имеет родительского каталога.
- -D — не удалять каталог перед распаковкой. Полезно лишь при наличии более одного макроса setup. Может использоваться только в setup-макросах, следующих за первым (но в первом — никогда).
- -T — этот параметр перекрывает действие по умолчанию распаковки Source из tar-архива и требует -b 0 или -a 0 для получения распакованного главного файла исходного кода. Этот параметр Необходим при наличии вторичных исходников.
- -n name — используйте этот переключатель, если имя rpm-пакета отличается от имени, получаемого при распаковке Source. Например: если имя rpm-пакета program-version-revision , а Source распаковывается в program-version-date , процесс сборки rpm не сможет перейти в каталог program-version , поэтому используйте -n program-version-date, тогда rpm будет знать о новом каталоге, в котором и следует продолжить работу.
Макрос, ответственный за применение патчей к исходникам. Его параметр -p передаётся патч-программе. Допустим, что у вас есть другой патч Patch1, объявленный в разделе header, в таком случае вы должны будете добавить строку %patch1 -p1 . Добавление команды -b .your_suffix является хорошим тоном, ведь таким образом вы можете сообщить другим, что делает ваш патч, или кто выполнил патч. Например, если Вася сделал патч, то он мог бы написать %patch -p1 -b .vasya , или, если патч сделал Петя, тогда это могло бы быть %patch -p1 -b .petya .
Раздел сборки (build)
Этот раздел должен содержать сценарий, отвечающий за фактическую сборку программного обеспечения. Раздел состоит из команд, используемых при сборке пакета из дерева исходников, извлечённого из tar-архива.
Эта строка используется для настройки исходников. Макрос %configure запускает команду ./configure со множеством дополнений таких, как перед началом настройки (configure), и параметрами такими, как и т. д.
Иногда такие аргументы не поддерживаются сценарием configure. В таком случае, найдите причину и запустите ./configure с соответствующими параметрами. С помощью %<targetplatform> сообщите о целевой платформе вызову configure, если это поддерживается. Конечно, нужно избегать определения архитектуры в спек-файле; для x86 она будет определена в i586-mandrake-linux, как показно в примере выше.
При сборке и тестировании вашего пакета, вы должны удостовериться, что целевой хост действительно является i586; особенно, когда компиляция происходит на процессорах более высокого типа, конфигурационный скрипт по умолчанию должен обнаружить ваш процессор, и произвести для него оптимизацию. Цель макроса %configure отменить это поведение.
Это простой макрос, который подготоваливает в основном make с соответствующими мультипроцессорными параметрами -j .
Для исходников, использующих xmkmf, вы должны заменить следующий make этим:
Для других пакетов, в большинстве случае (но не во всех) будет работать и просто make.
Раздел установки (install)
В этом разделе должен содержаться сценарий, отвечающий за фактическую установку пакета в симулируемый установочный каталог: %
Он должен содержать все команды, необходимые для того, чтобы сделать программу готовой к запуску на пользовательской системе.
Это строка устанавливает программу в симулируемый установочный каталог для autoconf-исходников. Этот макрос будет расширен до » make install » со множеством параметров для установки в симулируемый каталог %
В некоторых случаях сценарий configure может быть частично поломан. Возможно, вам понадобится погрузится в Makefile’ы, чтобы найти дополнительные параметры, чтобы установить его правильно. Один из наиболее распространённых: иногда вам нужно использовать make DESTDIR=%
Чтобы сохранить место на жёстком диске и время загрузки, ROSA использует lzma для сжатия man и info страниц. Это делается автоматически инструментарием rpm.
Раздел очистки (clean)
Не используйте раздел clean в spec-файлах ROSA. При необходимости, используйте rpmbuild —clean . .
Раздел файлов (files)
Этот раздел состоит из списка файлов, находящихся в симулируемом дереве каталогов; эти файлы будут использоваться при сборке пакета.
Список файлов должен быть написан в спек-файле вручную. Он может быть создан из списка файлов, созданных программой rpm в дереве каталога сборки. Чтобы создать список, наберите команду rpmbuild -bi mypackage.spec , процесс сборки остановится сразу после симулируемой установки. Затем, просмотрите каталог симулируемой установки (в нашем случае
/rpm/tmp/gif2png-buildroot ), чтобы увидеть, какие файлы предполагается положить в пакет (чаще всего кладутся все файлы).
Вы никогда не должны использовать find для получения списка файлов пакета; необходимо явно перечислять все файлы, что позводит избежать ошибок при сборке новых версий ПО. Единственным исключением являются файлы локализации, для которых следует использовать %find_lang %
Замечание о структуре каталогов: установленные файлы пакета должны следовать рекомендациям FHS http://www.pathname.com/fhs.
Этот тег задаёт атрибуты, которые будут применяться ко всем файлам, копируемым в систему пользователя. Аргументы означают:
- -: все атрибуты для регулярных файлов остаются неизменными;
- root: владелец файла — root;
- root: группа файла — root;
- 0755: атрибуты, применённые ко всем каталогам, принадлежащим пакету — 0755 (rwxr-xr-x).
Специальный тег %doc помечает файлы, которые являются частью документации пакета. Файлы документации будут помещены в /usr/share/doc/gif2png-2.0.1/ . Этот каталог будет создан автоматически. Файлы %doc задаются относительно каталога извлечённых из tar-архива исходников в каталоге BUILD .
Рекомендуется перечислять в отдельности каждую man или info-страницу.
Также, вы можете задаться вопросом: почему вместо gif2png.1.lzma используется gif2png.1* ? Это сделано для того, чтобы сохранить совместимость с другими системами, которые используют сжатие gzip вместо lzma. Если вы нашли такие ссылки на lzma сжатие в спеке, замените их регулярным выражением, как в примере выше. Чаще всего вы можете использовать %<_mandir>/man1/* , что соответствует всем файлам в директории man1.
Как вы можете видеть, для каждого необходимого пути есть макрос нужного типа. Вот наиболее полезные: (полный список доступен в файле /usr/lib/rpm/macros ): % <_prefix>, % <_bindir>, % <_sbindir>, % <_datadir>, % <_libdir>, % <_sysconfdir>, % <_mandir>, % <_infodir>. Для игр используйте % <_gamesbindir>и % <_gamesdatadir>.
Раздел журнала изменений (changelog)
Внимание! Здесь представлена общая информация о секции changelog. Вы не должны добавлять эту секцию в spec-файл самостоятельно, поскольку она генерируется автоматически из истории изменений в системе контроля версий.
Что такое журналы изменений
Этот раздел предназначен для хранения записей о различных изменениях, сделанных в пакете. Каждая новая сборка пакета должна сопровождаться параграфом в этом разделе, также как и каждый новый номер версии программы. Соблюдается следующая структура этих параграфов:
- первая строка параграфа начинается со знака звёздочки «*» и отделяется от неё пробелом;
- три буквы, обозначающие день недели;
- три буквы, обозначающие месяц;
- две цифры дня месяца;
- четыре цифры года;
- имя человека, создавшего пакет;
- его же фамилия;
- его же адрес электронной почты в угловых скобках «<>»;
- текущая версия и релиз.
Затем следует одна строка, начинающаяся с «-», в которой описывается изменение в пакете.
По умолчанию в собранный пакет помещаются только записи не старше 1 года. Это поведение может быть изменено настройкой значения %_changelog_truncate
История изменений в системе контроля версий
Информация для секции changelog автоматически генерируется из истории изменений системы контроля версий. Каждая строка сообщения из истории изменений становится записью в секции changelog, начинающейся с дефиса. Сообщения автоматически группируются по имени и email-адресу автора.
Если вы не хотите, чтобы строка из истории изменений попала в changelog пакета, добавьте в начале строки «SILENT: «. Пустые строки также игнорируются.
Сборка
Наконец, наш спек-файл готов. Наберите грудью побольше воздуха, присядьте и наберите команду rpmbuild -ba mypackage.spec .
Также можно добавить параметр —clean , который очистит каталог BUILD после завершения сборки пакета. Это может оказаться полезным, если у вас мало свободного места на жёстком диске.
Процесс может закончиться со следующими результатами:
There are then two possibilities for the last line of your process:
- 0.01% probabilities: + exit 0
- 99.99% probabilities for other cases.
You are in the second case? Congratulations you passed the test, you are not an alien.
Good luck, so long, have a look to rpm building options ( man rpmbuild ) to debug your work, look at other persons’ specfiles, etc..
There is a very clean way to build packages: use rpmbuild -bs —rmspec —rmsource (in order to remove anything from the original build) and then do a rpmbuild —rebuild .
Оптимизация процесса сборки
Когда вы запускаете команду для сборки вашего пакета, вы точно были уведмлены сообщением вида: foo-devel is necessary for foo2 .
Это означает, что нужна информация из других пакетов, использующихся для разработки (обычно, такие файлы имеют названия вида foo.h ). Если у вас их нет, компиляция остановится, или, даже если компиляция закончится успешно, пакет будет лишён некоторых возможностей.
Сборочный кластер ROSA имеет множество таких предустановленных пакетов для разработки (devel-пакетов). В случае, если один из обязательных пакетов не был перечислен в спек-файле, пакет будет собран на кластере в любом случае. Но отсутствие такой информации не позволит собрать пакет на машинах, на которых отсутствует devel-пакет, делая отладку и обновление более трудной.
Взгляните на веб-сайт программы, для которой подготавливается пакет, там можно найти информацию о необходимых компонентах.
Чтобы найти эти «missing BuildRequires», выполняя сборку, в системе должны присутствовать только самые основные пакеты для разработки:
После этого устанавливайте только те пакеты для разработчиков, которые попросит команда сборки rpm .
Запуская сборку, следите за сообщениями checking for.
Если вы увидите что-то наподобие checking for foo. foo.h not found, это означает, что заголовочный файл в вашей системе не найден. Найдите пакет для разработк, содержащий foo.h, но будьте осторожны: вы можете найти больше одного пакета. Поэтому выберите тот, что подходит в наибольшей степени. К примеру, не следует выбирать пакет, имеющий отношение к компьютерной сети, если вы собираете приложение, предназначенное для работы со звуком.
Затем, установите пакет в систему, не забудьте добавить его имя в раздел BuildRequires вашего спек-файла.
Отсутствующие заголовочные файлы могут быть найдены во время компиляции. Если она останавливается, проверьте наличие других foo.h и примените тот же способ.
Проверка RPM-пакета
Основные проверки
Перво-наперво нужно проверить следующее:
- созданы ли rpm в соответствующих каталогах с корректными именами (в каталогах
/rpm/RPMS/i586/ );
Запуск Rpmlint
После этого, вы должны воспользоваться утилитой Rpmlint, которая выполнит различные проверки пакета. Перед запуском rpmlint убедитесь, что у вас установлен пакет rpmlint-mandriva-policy , содержащий правила проверки для Росы. Наберите rpmlint мой_пакет..rpm для получения отчёта об определённом пакете. Чтобы получить более подробную информацию, используйте ключ -i . Вы должны проверить rpm и src.rpm . Дополнительную информацию по ошибкам, которые встречаются при сборке, можно найти на странице проблемы сборки пакетов.
Install test
Теперь необходимо проверить установку и обновление пакета на любой машине (желательно отличной от той, на которой проходила сборка), и удостовериться, что:
- Созданы все необходимые файлы с нужными правами и владельцами
- Все скрипты, выполняющиейся при установке, отработали успешно
- У всех исполняемых файлов установлен бит executable, а файлы с документацией доступны всем пользователям
Для полноты тестирования можно также проверить процесс удаления пакета, функциональность установленного ПО и тому подобное.
Если все тесты прошли успешно, то вы почти у цели — осталось только отправить пакет в репозиторий.
Что-то пошло не так?
Если вы читаете этот документ, то это уже хорошо. Если вы не найдете ответ на интересующий вас вопрос здесь, попробуйте также обратиться к следующим источникам:
- Официальный документ RPM-HOWTO (устанавливается в систему вместе с программой rpm ).
- Книга Red Hat Maximum RPM, которая доступна на http://www.redhat.com/docs/books/max-rpm/max-rpm-html/.
- посмотрите на spec-файлы схожих пакетов — возможно, их авторы сталкивались со схожими проблемами
- Задайте вопрос в почтовой рассылкеразработчиков ROSA .
Если вы полагаете, что найденные вами решения могут быть полезны остальным, сообщите об этом авторам документов, в которые вы бы хотели добавить описания этих решений.
Предустановочные и постустановочные сценарии
Основы
RPM-пакет представляет из себя нечто большее, чем просто архив с файлами, которые извлекаются в определённые каталоги на клиентских системах.
Система предоставляет программистам мощную возможность: предустановочные и постустановочные сценарии. Эти сценарии позволяют сборщику пакета вписать фрагмент кода, который будет запущен на клиентской машине при установке или удалении пакета.
Эти сценарии создаются из любых допустимых команд интерпретатора командной строки. Вот четыре из них:
Имеются некоторые предупреждения относительно этих сценариев. Во-первых, вы должны уложиться в размер буфера 8192, во-вторых, сценарии не должны быть интерактивными. Всё, что требует от пользователя ручного ввода, является неверным, т. к. это нарушает неинтерактивность процедур установки RPM.
- %pre — этот сценарий выполняется перед установкой пакета в систему.
- %post — этот сценарий выполняется после установки пакета в систему.
- %preun — этот сценарий выполняется перед удалением пакета из системы.
- %postun — этот сценарий выполняется после удаления пакета из системы.
Назначение таких сценариев может быть чрезвычайно многообразным. Сценарии должны быть спроектированы таким образом, чтобы не навредить системе. Помните, что сценарии выполняются от имени суперпользователя. Они относятся к задачам системного администрирования, завершающим установку нового приложения. Например:
- Добавить в cron запуск программы через равные интервалы времени
- Запустить chkconfig , чтобы запустить службу во время загрузки
- .
Работа с обновлениями
Работа с пакетами осложняется тем фактом, что пакет может быть обновлен, а не просто установлен или удален. проблема заключается в том, что при обновлении скрипт %postun новой версии пакета запускается после скрипта %post старой версии, и то, что сделал последний скрипт, может быть потеряно.
Часто полезно убедиться, что те или иные действия производятся только при установке/удалении пакета, но не при обновлении. Для обработки таких ситуаций RPM передает специальный аргумент скриптам %pre , %preun , %post и %postun .
Аргумент содержит количество различных версий данного пакета, которые будут установлены на машине после выполнения данного скрипта. Например, при установке нового пакета, скриптам %pre и %post будет передано значение «1». При обновлении пакета, скрипты %pre и %post новой версии получат значение «2», скрипты %preun и %postun старой версии — «1».
Параметр \ Скрипт | %pre | %post | %preun | %postun |
---|---|---|---|---|
первоначальная установка | 1 | 1 | N/C | N/C |
обновление | 2 | 2 | 1 | 1 |
удаление | N/C | N/C | 0 | 0 |
Наличие такого параметра позволяет программистам различать, в какой ситуации запускается скрипт — при установке или при обновлении пакета.
- Для скриптов установки ( %post , %pre ) — если параметр $1 равен «1», то происходит первоначальная установка
- Для скриптов удаления ( %postun , %preun ) — если параметр $1 равен «0», то происходит удаление пакета; иначе это обновление либо установка с опцией —force.
Для проверки значение параметра, можно использовать следующую конструкцию:
Файловые триггеры
Чтобы избавиться от необходимости выполнения часто встречающихся задач — таких как выполнение «%post -p /sbin/ldconfig» или «%update_menus» — в ROSA используются файловые триггеры RPM.
More macros
При сборке пакетов для Росы, вы можете использовать в spec-файле различные макросы для выполнения типичных задач.
- Обработка info-старниц:
- Обновление системы меню. В Росе используется Меню XDG.
- Обработка файлов локализации. Хорошей практикой является не ручное перечисление всех .mo -файлов, которые обычно находятся в поддиректориях /usr/share/locale/.. , а использование специального макроса в секции %install , которые создаст отдельный файл с перечнем файлов с локализациями:
Созданный файл необходимо указать в секции files:
- Макропопределения, используемые при сборке — %configure и %makeinstall . Они автоматически устанавливают префикс для установки, а также различные директории (такие как bindir, datadir и другие). Как правило, эти макросыф отлично работают с небольшими пакетами, но могут потербовать дополнительной настройке при сборке сложных продуктов. Макрос %make вызывает команду make с соответствующей опцией -j , распараллеливая сборку на многоядерных машинах. Если вам все-таки необходимо вызвать скрипт ./configure напрямую, никогда не указывайте название целевой аппаратной архитектуры. Для этих целей есть макрос %<targetplatform> (или даже %<targetcpu> , если необходима более точная информация).
- Сборка серверного ПО. Для сборки, от которого требуется повышенная надежность в ущерб производительности, мы используем специальный макрос %serverbuild , который необходимо вызвать до начала самой сборки. Этот макрос выставляет необходимые значения флагов оптимизации. Секция %build при этом выгдядит следующим образом:
- Макросы для init-скриптов. При установке пакета, в котором содержится init-скрипт (файл в директории /etc/init.d ), необходимо зарегистрировать этот скрипт вызовом chkconfig —add .. ; при обновлении, этого делать не надо, но если скрипт работает, то он должен быть перезапущен; при удалении пакета, необходимо удалить информацию о скрипте. Для этих целей у нас есть соответсвующий макрос:
- Обработка ghost-файлов. Некоторые пакеты (в частности, многие игры), содержат файлы, которые в некоторый момент времени могут отсутствовать в системе. Такие файлы необходимо помечать как ghost и обрабатывать с помощью специальных макросов:
Макрос %create_ghostfile будет развернут в следующую конструкцию:
- Привязка типов фалов .desktop / MIME к приложениям: система меню XDG позволяет привязывать приложения к файлам с заданным MIME-типом в файлах .desktop . При установке или удалении .desktop -файла, необходимо запустить утилиту update-desktop-database , используя соответствующие макросы:
- База данных MIME-типов Freedesktop.org: база данных, используемая для получения всех возможных типов MIME с соответствующими расширениями файлов или их «магическими» числами, должна обновляться посредством вызова следующих макросов:
- Кэш иконок: все пакеты, содержащие иконки, устанавливаемые в /usr/share/icons/hicolor (или другие директории, предусмотренные спецификациями freedesktop, — например, /usr/share/icons/gnome или /usr/share/icons/crystalsvg ) должны обновлять кэш иконок, как показано в следующем примере (данное требование не относится к иконкам, хранящимся в /usr/share/icons , /usr/share/icons/mini или /usr/share/icons/large ):
- Регистрация схем GConf: Схемы GNOME GConf должны устанавливаться и удаляться с помощью следующих макросов:
- Обновление бд scrollkeeper: если устанавливается файл .omf , то необходимо обновить базу данных scrollkeeper (используемую для индексирования документации в формате docbook):
Interaction with urpmi and rpmdrake
Sometimes it’s necessary to warn the user about some particular care that should be taken when upgrading or installing a specific version of a package. rpmdrake-2.1.3-11mdk and above supports this: it searches in rpms for text files named README.install.urpmi , README.update.urpmi or README.urpmi , and displays them.
README.install.urpmi is displayed only for installed packages; README.update.urpmi only for upgraded packages; README.urpmi is displayed in both cases.
Группы пакетов ROSA
Каждый пакет должен относиться к одной из групп RPM, используемых в ROSA.
Лицензии
По вопросам, относящимся к лицензиям ПО, собираемого в пакеты, обращайтесь к Licensing policy.
Alternative: checkinstall
A very easy way to build RPMs for personal use is to install the checkinstall package; compile from source as usual (./configure && make && sudo make install), but just replace the make install step by checkinstall . This automates building an RPM, and is very simple to use. The advantage is that you don’t ever have to bypass the package manager when compiling from source. (However, it’s probably A Good Idea to build RPMs «properly» as described above, if you intend to distribute them to others.)
Источник