Я хочу предоставить пользовательский RPM-модуль nginx / ModSecurity / стороннего модуля, который можно установить на внутренние серверы (без Интернета) через собственный RPM-репозиторий.
Для этого я создал файл спецификации RPM (ниже приведены фрагменты исходной спецификации):
Name: nginx
Version: 1.14.0
Release: 1
Group: System Environment/Daemons
License: BSD
URL: http://nginx.net/
Source0: http://nginx.org/download/nginx-%{version}.tar.gz
BuildRequires: pcre-devel
BuildRequires: openssl-devel
BuildRequires: zlib-devel
BuildRequires: libxslt-devel
BuildRequires: gd-devel
BuildRequires: GeoIP-devel
BuildRequires: pam-devel
BuildRequires: libmodsecurity-devel
Requires: pcre
Requires: openssl
Requires: zlib
Requires: libxslt
Requires: gd
Requires: GeoIP
Requires: pam
Requires: libmodsecurity
Полная спецификация RPM с дополнительными файлами rpmbuild доступна здесь: https://gist.github.com/soerenkornetzki/3731113644ab1084ed9549795b5987d6
Проблема в том, что когда я пытаюсь установить RPM, я сталкиваюсь с ошибками сломанной зависимости:
Error: Package: nginx-1.14.0-1.x86_64 (/nginx-1.14.0-1.x86_64)
Requires: perl(Data::Types)
Error: Package: nginx-1.14.0-1.x86_64 (/nginx-1.14.0-1.x86_64)
Requires: /opt/local/bin/perl
Error: Package: nginx-1.14.0-1.x86_64 (/nginx-1.14.0-1.x86_64)
Requires: perl(Acme::Comment)
Error: Package: nginx-1.14.0-1.x86_64 (/nginx-1.14.0-1.x86_64)
Requires: perl(Data::Validate::URI)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
Мне известно, что в nginx есть модуль Perl, но я не включаю его в аргументы компиляции (см. Полную спецификацию с Gist).
Мне не нужны (какие-либо) модули Perl с BuildRequires
или Requires
.
Я ожидаю, что ни один из сторонних модулей также не использует Perl. Это может быть ложным предположением, но я не проверял это, так как обязательные модули не установлены в системе сборки, и двоичный файл работает над ней (не требуется установка RPM, просто выполняется двоичный файл nginx).
Число оборотов в минуту для CentOS 7, который не поставляется с perl-Data-Types
(чтобы назвать один пример). Там было perl-Data-Types
со старым CentOS 6 (EPEL), но больше не доступно с CentOS 7 и выше (как показано с rpmfind.net ).
Поскольку бинарный файл nginx работает просто отлично, и только установщик RPM отклоняет установку:
Как это исправить? Откуда пришли требуемые пакеты?