Создать rpm пакет centos
Обновлено: 06.07.2024
Официальные репозитории CentOS содержат тысячи пакетов RPM, которые можно установить с помощью yum утилиты командной строки. Пакеты, которые недоступны в стандартных репозиториях CentOS, можно легко установить, включив соответствующий репозиторий.
Но не все поставщики программного обеспечения предоставляют репозиторий yum для своих приложений. Чаще всего в таких ситуациях у них будет страница загрузки, с которой можно загрузить и установить пакет RPM или загрузить и скомпилировать программное обеспечение из источников.
Прежде чем вы начнете
При установке RPM-пакетов убедитесь, что они созданы для вашей системной архитектуры и вашей версии CentOS .
Вам следует избегать использования этого метода для замены или обновления важных системных пакетов, таких как glibc, systemd или других служб и библиотек, которые необходимы для правильного функционирования вашей системы. Это может привести к ошибкам и нестабильности системы.
Чтобы установить пакеты RPM, вы должны войти в систему как пользователь root или пользователь с привилегиями sudo .
Обычно вы используете веб-браузер для поиска и загрузки файла RPM. Найдя файл, вы можете загрузить его с помощью браузера или с помощью инструмента командной строки, такого как curl или wget
Установка пакетов RPM с yum
yum - является инструментом менеджера пакетов по умолчанию в CentOS. Он используется для установки, удаления, загрузки, запроса и обновления пакетов из официальных репозиториев CentOS, а также других сторонних репозиториев.
Первым шагом является загрузка файла RPM, который вы хотите установить:
Чтобы установить пакет, используйте yum localinstall команду с указанием пути к имени пакета:
yum предложит вам подтверждение. Ответьте, y и RPM-пакет будет установлен, при условии, что он совместим с вашей системой, и все зависимости соблюдены.
Если пакет RPM зависит от других пакетов, которые в данный момент не установлены, и если эти пакеты доступны в репозиториях, включенных в вашей системе, yum будут установлены все зависимости. В противном случае yum будет напечатан список всех отсутствующих зависимостей, которые вам придется загрузить, и вручную установите эти пакеты.
Вместо загрузки и последующей установки пакета RPM вы можете просто передать URL-адрес пакета RPM yum localinstall команде:
Чтобы обновить пакет RPM, который уже установлен с yum, используйте ту же процедуру, что и при установке пакета.
Если по какой-то причине вы хотите удалить установленный пакет, используйте стандартную yum remove команду с именем пакета:
Установка пакетов RPM с rpm
rpm - это низкоуровневый инструмент, который используется для установки, удаления, обновления, запроса и проверки RPM-пакетов.
Для установки пакета RPM используйте rpm -i команду, после которой следует имя пакета RPM:
-v Опция указывает , rpm чтобы показать подробный вывод и -h показать хэш отмечен прогресс бар.
Если пакет зависит от других пакетов, которые не установлены в системе, rpm отобразится список всех отсутствующих зависимостей. Вам нужно будет загрузить и установить все зависимости вручную.
Вместо загрузки и установки пакета RPM вы можете использовать URL-адрес пакета RPM в качестве аргумента:
Чтобы обновить пакет, используйте -U параметр:
Если пакет, который вы пытаетесь обновить, не установлен, rpm -U команда установит его.
Чтобы установить пакет RPM без установки всех необходимых зависимостей в системе, используйте --nodeps параметр:
Чтобы удалить (стереть) пакет, используйте rpm -e команду с именем пакета:
Вывод
В этом руководстве мы показали вам, как установить RPM-пакеты в CentOS.
Вы должны предпочесть использование yum более rpm поскольку оно автоматически разрешает все зависимости для вас.
Следуйте за нами на Фейсбуке, в Твиттере и других социальных сетях.
Содержание
Внимание: данная страница не является частью официальной документации.
В корпоративном секторе установка программ вручную крайне нежелательна, вместо этого создают пакет для текущей системы и с его помощью уже устанавливают, обновляют и удаляют нужное ПО.
В данной статье я приведу пример, как создать свой RPM-пакет для «ДокуВики», в котором определены все необходимые зависимости и начальные настройки. Задача пакета будет состоять в установке ПО, настройке веб-сервера Apache, настройке прав доступа, при желании можно добавить и базовые настройки «ДокуВики». Устанавливать «ДокуВики» по умолчанию будем в каталог /opt/dokuwiki .
Отказ от ответственности
Установка и настройка rpm-build
Я не буду подробно описывать технологию создания RPM-пакетов, в сети есть немало руководств на данную тему, написанных умными людьми. Здесь я просто приведу шаги, которые достаточны для того, чтобы начать создавать свои пакеты.
Для начала установите пакет rpm-build, запустив в сеансе root’а команду:
Зайдите в систему под своим постоянным пользователем, который не имеет привелегированных прав. Допустим его имя: user .
Создадим нужные каталоги и поределим нужный макрос:
Всё, теперь можно приступать созданию пакета.
Подготовка исходников
Подготовим исходники для нашего пакета, для этого сначала загрузим в каталог ресурсов:
Тут же создадим файл настройки каталога для сервера Apache, скажем
/workspace/redhat/SOURCES/dokuwiki.conf , следующего содержания:
На этом пока остановимся.
Подготовка SPEC-файла
/workspace/redhat/SPECS/ создадим файл dokuwiki-2009-12-25c.spec со следующим содержанием:
Обратите внимание на кострукции « Summary(ru) » и « %description -l ru », аналогичным образом вы можете определить краткое и полное описание для других языков.
Обратите внимание на аргумент noreplace у макроса %config , он означает, что данный конфигурационный файл не будет перезаписываться, если он существует.
Генерация RPM-пакета
Просто выполните команду:
Если нигде нет никаких ошибок, то в каталоге
/workspace/redhat/SRPMS/ обнаружите файл dokuwiki-20091225c-1.src.rpm , а в каталоге
/workspace/redhat/RPMS/noarch/ будет находиться наш RPM-пакет dokuwiki-20091225c-1.noarch.rpm , в котором уже определены минимально нужные зависимости.
RPM-пакет с предопределёнными настройками «ДокуВики»
Лень — двигатель прогресса, чтобы не запускать постоянно install.php , я определил начальные установки для «ДокуВики» и включил их в свой RPM-файл. Начальные настройки у меня таковы:
И т. д. по мелочи то, что можно в дальнейшем переопределить.
Далее я в каталог
/workspace/redhat/SOURCES/ добавил следующие файлы:
В SPEC-файле в секции глобальных переменных определил:
В секции %build добавил следующее:
И пересобрал пакет:
Добавление страниц вики в RPM-пакет
Вики с нуля — это всегда грустно, желающим добавить в RPM-пакет страницу по умолчанию, свои статьи, или просто более подробную документацию по «ДокуВики» достаточно создать нужные страницы с форматированием «ДокуВики» в виде файлов с расширением «txt» и настроить SPEC-файл на копирование данных файлов в соответсвующие подкаталоги каталога /opt/dokuwiki/data/pages/ .
Приведу пример добавления свой страницы по умолчанию (у меня это index.html ). Итак, в каталоге
/workspace/redhat/SOURCES создадим файл index.html.txt , с нужным вам содержанием, например:
В SPEC-файле определим глобальную переменную:
В секцию %build добавим создание нужного каталога и копирование туда файла:
И определим наш файл в секции %files :
И пересоберём наш пакет:
Главное, при добавлении своих страниц в пакет указать, что они не должны перезаписываться, вы же не желаете восстанавливать при каждом обновлении стартовую страницу?
Добавление медиафайлов вики (картинок, звуков, видео) в RPM-пакет
Здесь всё тоже очень просто, всё абсолютно как в разделе Добавление страниц вики в RPM-пакет, только целевой каталог другой: /opt/dokuwiki/data/media/ .
Пример RPM-пакета с плагином для «ДокуВики»
Ну раз вы установили «ДокуВики» из RPM-пакета, то не марать же теперь руки ручной установкой плагинов к «ДокуВики», приведу пример SPEC-файла для плагина include, который я создавал для себя и на базе которого вы сможете создать свой RPM-пакет.
В файл include.txt я просто скопировал описание с синтаксисом плагина на его страничке, если вам этого не надо, можете просто это удалить.
Как видите, создать RPM-пакет для плагина - не трудно. Скопировать исходник в соответствующий каталог, скопировать текст из SPEC-файла другого плагина, изменить значение переменной pluginname , версию плагина, описание, ну, и по мелочи (не забудьте удалить или изменить описание добавления справки по плагину).
Для работы по сборке пакетов лучше использовать отдельный компьютер, виртуальную машину или контейнер Docker.
1. Установим пакеты:
yum install rpmdevtools rpmlint
- rpmdevtools — позволит нам использовать утилиту rpmdev-setuptree, с помощью которой мы сможем создать рабочую среду в виде каталогов для сборки.
- rpmlint — позволяет протестировать пакет RPM .
yum group install "Development Tools"
* данная группа пакетов включает все необходимое для сборки. Ее не рекомендуется ставить на рабочий компьютер, так как устанавливается много ненужного для стандартной системы мусора.
2. Создаем пользователя.
Делать готовые установочные сборки пакетов очень опасно от пользователя root. Если мы допустим ошибку с путями, файлы могут перетереть или удалить важные для работы директории. Стоит создать отдельного пользователя и работать под ним. Однако, если мы работаем в виртуальной среде или контейнере Docker, нам это не страшно. Тогда данный пункт можно пропустить и работать из под root.
useradd builder -m
* в данном примере мы создадим пользователя builder. Опция -m сразу создаст домашний каталог для пользователя.
Теперь заходим под данным пользователем — последующие команды мы будем выполнять от него:
3. Создадим структуру каталогов для сборки:
В нашей текущем каталоге должна появиться папка rpmbuild — а в ней:
- BUILD — содержит все файлы, которые появляются при создании пакета.
- RPMS — сюда будут складываться готовые пакеты.
- SOURCES — для исходников, из которых и будут собираться RPM-пакеты.
- SPECS — для файлов с описанием процесса сборки.
- SRPMS — для исходников RPM-файлов.
Мы готовы к сборке.
Сборка из исходников
Создадим файл spec:
rpmdev-newspec rpmbuild/ SPECS /pg_redis_pubsub.spec
Теперь откроем его и приведем к виду:
vi rpmbuild/ SPECS /pg_redis_pubsub.spec
BuildRequires : postgresql-devel postgresql-server-devel* чтобы понять, как заполнить spec-файл, рекомендуется для начала собрать и установить приложение вручную с помощью make и make install. Также необходимо изучить документацию устанавливаемого пакета или (при наличие возможности) поговорить с разработчиками программного обеспечения.
Установим зависимости, которые необходимы для сборки (BuildRequires). В данном примере это:
yum install epel-release
yum install postgresql-devel postgresql-server-devel hiredis-devel
* конкретно, в моем примере для установки hiredis-devel необходимо поставить репозиторий epel-release. Список пакетов, необходимый для сборки конкретного пакета необходимо уточнить в документации.
Теперь копируем исходник на свой компьютер. В моем примере клонируем репозиторий:
Готовим архив и помещаем его в каталог rpmbuild/ SOURCES :
tar -czvf rpmbuild/ SOURCES /pg_redis_pubsub-1.0.2.tar.gz pg_redis_pubsub
Проверяем корректность SPEC-файла:
rpmlint rpmbuild/ SPECS /pg_redis_pubsub.spec
В моем примере команда вернула ответ:
rpmbuild/ SPECS /pg_redis_pubsub.spec: W: invalid-url Source0: pg_redis_pubsub-1.0.2.tar.gz
0 packages and 1 specfiles checked; 0 errors, 1 warnings.
Данное предупреждение можно проигнорировать.
rpmbuild -bb rpmbuild/ SPECS /pg_redis_pubsub.spec
Если она пройдет без ошибок, мы должны найти RPM-пакет в каталоге rpmbuild/ RPMS /x86_64, где x86_64 — архитектура пакета.
Описание файла SPEC
Данный файл является инструкцией по сборке пакета. В нем мы описываем сам пакет, задаем метаданные и указываем, как извлекать файлы и куда их копировать при установке пакета. Синтаксис файла включает такие элементы, как разделы, макросы, операторы, опции. Рассмотрим их отдельно.
Опции заголовка
Определяют описание пакета, а также некоторые важные для сборки параметры.
Разделы (теги)
В каждом разделе описывается своя часть логики процесса сборки пакета.
Раздел | Описание |
---|---|
%description | Описание пакета. Может состоять из нескольких строк, но каждая строка должна содержать до 73 символов. |
%prep | Предварительная обработка. Используется для подготовки исходников. Как правило, в данном разделе происходит их распаковка. Также на данном этапе могут применяться патчи. |
%build | Этап сборки пакета. Как правило, это make. |
%install | Установка пакета. Это может быть make install или копирование конкретных файлов в конкретные директории или запуск произвольного скрипта. |
%clean | Раздел содержит инструкции по удалению устаревших файлов, которые больше не нужны. |
%files | Перечисляем файлы, которые должны попасть в конечную систему при установке пакета. |
%changelog | Список изменений в работе программного обеспечения. |
Макросы для команд
Некоторые системные команды лучше писать не напрямую, а через макросы. Это позволит добиться большей стабильности при сборке на различных системах. Приведем в пример данные команды:
Макрос | Команда | Описание |
---|---|---|
% | rm | Удаление файлов |
% | mv | Перенос файлов |
% | tar | Распаковка или создание архивов |
* полный список макросов можно получить командой rpm --showrc.
Макросы для каталогов
Каталоги лучше писать не буквально, а через макросы:
Макрос | Путь |
---|---|
% | /usr |
% | %/lib64 |
% | %/share |
% | % |
* обратите внимание, что некоторые макросы ведут не на конкретные пути, а на другие макросы.
* полный список макросов можно получить командой rpm --showrc.
Операторы сравнения
SPEC файл позволяет задавать логику с помощью операторов сравнения. Приведем примеры их использования:
Установка CheckInstall on Linux.
Чтобы установить Checkinstall на Debian/Ubuntu и остальных debian-оподобных ОС, выполните:
Чтобы установить Checkinstall в дистрибутивах основанных на Red Hat, вам нужно будет скачать встроенных .rpm в Checkinstall, можете использовать мой.
Для начала пробуем его найти в ОС:
Если покажет что есть пакет, то его можно установить:
Или качаем пакет:
После установки Checkinstall, вы можете использовать следующий формат чтобы собрать пакет для конкретной ОС:
Сборка RPM или DEB пакета с CheckInstall
Первое что нужно сделать, так это скачать исходный код с официального сайта. Я привык сохранять все архивы в /usr/local/src. Скачиваем исходный код программы и распаковываем ее, и переходим в папку с кодом для дальнейших действий:
Вот команды, чтобы собрать пакет Htop:
2. Вы можете ввести краткое описание пакета, а затем нажмите Enter два раза.
checkInstall Unix/Linux пример
После чего Checkinstall создаст .rpm или .deb пакет автоматически, в зависимости от вашей системы Linux.
На CentOS 7 выглядит это так:
На Debian 7 выглядит это так:
Опции Checkinstall
*Выбор тип пакета*
-S
Собрать пакет для Slackware.
*Опции для установки собранных пакетов*
*Опции для скриптов*
*Опции выводимой информации*
-d<0|1|2>
Установить уровни для debug.
-si
Запустить интерактивную установку команды.
-ss
Запустите интерактивный скрипт установки для Slackware.
* Параметры настройки пакета *
* Параметры очистки *
Читайте также: