С моей точки зрения, это немного зависит от того, на что вы нацелены:
Дистрибутивы Linux, такие как Fedora, фактически ожидают, что их сборки дистрибутива будут собраны из исходного кода с использованием файла спецификации (внутри закрытой системы сборки, которая также документирует пакеты/компоненты, используемые для сборки), и считают это хорошей практикой, а также для достижения большей воспроизводимости. насколько это возможно.
Тем не менее, вы действительно можете просто загрузить готовые двоичные файлы и использовать их в файле спецификаций для создания пакета RPM, сокращенный пример для вашего сценария:
# [ ¦ ]
Source0: <двоичный файл>
Источник1: <файл конфигурации>
# [ ¦ ]
%преп
%setup -q -c -T
%строить
%установить
install -D -p -m 0755 %{SOURCE0} $RPM_BUILD_ROOT%{_bindir}/%{name}
install -D -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.conf
# [ ¦ ]
Хотя это может сработать, вы должны явно проверить, подходят ли зависимости результирующего RPM-пакета (rpm -qp --requires <…>.rpm
) или если отсутствуют зависимости времени выполнения. Часто есть опции или параметры времени компиляции (например, CFLAGS
или же LDFLAGS
программное обеспечение, написанное на C), а также скрипты постобработки (например, /usr/lib/rpm/(redhat/)brp-*
) при сборке RPM-пакета, добавляющего специфичные для дистрибутива материалы и/или извлекающие для вас зависимости во время выполнения. Это может иметь или не иметь для вас значение (и некоторые сценарии постобработки также могут работать для предварительно собранных двоичных файлов, но другие не работают из-за отсутствия параметров компилятора). Хотя я упаковываю много программного обеспечения, у меня нет опыта работы с Haskell, но когда я смотрю на некоторые пакеты Fedora, есть пакеты RPM, имеющие зависимости во время выполнения (и если есть зависимости во время выполнения, они должны быть удовлетворены пакеты RPM, потому что именно так работает RPM; и недостаточно иметь подходящую библиотеку где-то в вашей файловой системе, потому что RPM не будет знать о ней, кроме как в пакете RPM). Таким образом, сборка RPM-пакета из готовых двоичных файлов может привести к тому, что RPM-пакет не будет иметь надлежащих зависимостей, которые позже могут проявиться как ошибки времени выполнения.
Относительно приведенного выше примера: пока ИсточникX:
можно указать URL, rpmbuild
по-прежнему ожидает эти файлы на диске в ИСТОЧНИКИ
каталог при сборке пакета RPM (так как они попадают в ИСТОЧНИКИ
каталог зависит от вас).
Поскольку вы не упомянули, на какой дистрибутив Linux вы ориентируетесь, я ссылаюсь на дистрибутив Fedora. Руководство по упаковке Haskell
здесь, что может или не может дать дополнительное вдохновение.И да, пакеты RPM могут быть кросс-дистрибутивными, что практически часто приводит к статическим бинарным файлам внутри пакетов RPM из-за часто разных версий библиотек/пакетов в разных дистрибутивах Linux.