el8 環境で特定バージョンの rpm が見つからなかったので、ソースからビルド
あまり情報がなくて少し苦労したのでメモ
- 公式の httpd ソースには、spec ファイルが含まれているので直接 rpmbuild -bt httpd-2.4.46.tar.bz2 で構築可能
- systemd 環境に対応する為、ソースを解凍して configure オプション--enable-systemd を追加する
- el8 互換の docker image rockylinux:8 から作成
- docker ファイル
Dockerfile
FROM rockylinux:8 RUN dnf install -y epel-release && \ dnf config-manager --set-enabled powertools && \ dnf groupinstall -y 'Development Tools' && \ dnf groupinstall -y 'RPM Development Tools' && \ dnf install -y apr-devel apr-util-devel autoconf libselinux-devel libuuid-devel libxml2-devel lua-devel openldap-devel openssl-devel pcre-devel perl zlib-devel systemd-devel # https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.bz2 COPY httpd-2.4.46.tar.bz2 . RUN tar xjf httpd-2.4.46.tar.bz2 && mkdir -p /root/rpmbuild/SOURCES/ && mv httpd-2.4.46.tar.bz2 /root/rpmbuild/SOURCES/ # # mod_systemd 追加 RUN sed -i "s/%configure/%configure --enable-systemd/;/mod_watchdog/a %{_libdir}/httpd/modules/mod_systemd.so" httpd-2.4.46/httpd.spec RUN rpmbuild --clean -bb httpd-2.4.46/httpd.spec RUN rm -rf httpd-2.4.46 #RUN rpmbuild -tb --clean httpd-2.4.46.tar.bz2 CMD ["bash"]
- docker build
$ docker build . -t httpd_rpm_build_el8
- バイナリをホストにコピー
$ mkdir rpms $ docker run -ti --rm -v `pwd`/rpms:/tmp httpd_rpm_build_el8 bash -c 'cp /root/rpmbuild/RPMS/x86_64/* /tmp/' $ ls rpms/ httpd-2.4.46-1.x86_64.rpm httpd-devel-debuginfo-2.4.46-1.x86_64.rpm mod_authnz_ldap-2.4.46-1.x86_64.rpm mod_proxy_html-2.4.46-1.x86_64.rpm httpd-debuginfo-2.4.46-1.x86_64.rpm httpd-manual-2.4.46-1.x86_64.rpm mod_authnz_ldap-debuginfo-2.4.46-1.x86_64.rpm mod_proxy_html-debuginfo-2.4.46-1.x86_64.rpm httpd-debugsource-2.4.46-1.x86_64.rpm httpd-tools-2.4.46-1.x86_64.rpm mod_lua-2.4.46-1.x86_64.rpm mod_ssl-2.4.46-1.x86_64.rpm httpd-devel-2.4.46-1.x86_64.rpm httpd-tools-debuginfo-2.4.46-1.x86_64.rpm mod_lua- debuginfo-2.4.46-1.x86_64.rpm mod_ssl-debuginfo-2.4.46-1.x86_64.rpm