SPEC-файл описывает как сборку, так и развёртывание RPM-пакета. SPEC-файл состоит из преамбулы и тела. В преамбуле указаны основные константы нашего будущего RPM пакета. Некоторые параметры являются необходимыми, другие - опциональными.
Необходимыми параметра в преамбуле нижеуказанного SPEC-файла являются:
- Name
- Version
- Release
- Source0
- Group
Важно, чтобы имя архива (в нашем случае LinuxInstaller-2.15.2.4.tar.gz) и указанные в SPEC-файле параметры Name, Version и Release соответствовали друг другу!
Наш SPEC-файл разворачивает бинарники из архива LinuxInstaller-2.15.2.4.tar.gz, размещённого в папке SOURCES, в папку BUILD, копирует их в новую папку BUILDROOT и упаковывает их в RPM-пакет, который появится в папке RPMS (подпапке x86_64) в виде rpm-файла LinuxInstaller-2.15.2-4.x86_64.rpm.
При этом папки BUILD и BUILDROOT очистятся в случае успешной сборки (см. секцию %clean).
SPEC-файл описывает, что rpm-пакет разворачивает содержимое в папку /tmp/LinuxInstaller-2.15.2.4/, запускает bash-скрипт install командой /bin/bash /tmp/%{name}-%{version}.%{release}/install
и после установки удаляет папку /tmp/LinuxInstaller-2.15.2.4/ командой:
1 | rm -rf /tmp/%{name}-%{version}.%{release}/ |
Обратите внимание, что с помощью преамбулы Requires rpm-пакет проверяет наличие установленных пакетов/служб bash и cups, причем cups версии не ниже 2.2.
Секция if проверяет ответ, возвращяемый bash-скриптом install и в случае ошибки очищает временную папку за собой:
1 | if [ $? -ne 0 ] ; then |
Окончательный вид содержимого файла LinuxInstaller-2.15.2.4.spec:
1 | Name: LinuxInstaller |