概要
OpenSSL 3.0.xをビルドする記事と、OpenSSL 1.1.1のrpmを作る記事を元に、OpenSSL 3.0.xのrpmを作ってみた。
用意したもの
最小セットアップしたCentOS 7.9
amd64版(x86_64)でもarm64版(aarch64)でもどちらでも可
[nissy@cent7-openssl30x-rpm ~]$ uname -m
x86_64
[nissy@cent7-openssl30x-rpm ~]$ sudo yum update
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
No packages marked for update
[nissy@cent7-openssl30x-rpm ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[nissy@cent7-openssl30x-rpm ~]$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
※ Dockerコンテナのcentos:7でも可
その場合、以降の手順でsudoは不要
rpm作成手順
パッケージ追加
[nissy@cent7-openssl30x-rpm ~]$ sudo yum install rpmdevtools rpm-build gcc perl perl-IPC-Cmd -y
Dockerコンテナの場合はmakeも必要
nissy@debian12:~$ docker run --rm -it centos:7 /bin/bash
[root@f16c64308500 ~]# yum install make rpmdevtools rpm-build gcc perl perl-IPC-Cmd -y
rpmビルド
- 以下のopenssl-opt.spec を~/に配置
OpenSSL 3.0.xのビルド手順をベースにspecファイルを修正
既存のopensslパッケージと被らず共存できるよう、Nameをopenssl-optにして別パッケージとしてあるのも前と同じ%elifarch
が使えるのはRPM 4.15以降、CentOS 7はまだ4.11.3なので、%ifarch
を2つ書いたName: openssl-opt Version: 3.0.11 Release: 1%{?dist} Group: System Environment/Libraries Summary: Secure Sockets Layer and cryptography libraries and tools License: Apache License 2.0 URL: http://www.openssl.org/ Source0: https://www.openssl.org/source/openssl-%{version}.tar.gz BuildRequires: make gcc perl perl-IPC-Cmd BuildRoot: %{_tmppath}/%{name}-%{version}-root Prefix: /opt/openssl %description %prep rm -rf $RPM_BUILD_ROOT %setup -q -n openssl-%{version} %build ./config --prefix=%{buildroot}%{prefix} make -j$(nproc) %install make install_sw mkdir -p %{buildroot}/etc/ld.so.conf.d/ %ifarch x86_64 echo %{prefix}/lib64 > %{buildroot}/etc/ld.so.conf.d/openssl.conf %endif %ifarch aarch64 echo %{prefix}/lib > %{buildroot}/etc/ld.so.conf.d/openssl.conf %endif %clean rm -rf $RPM_BUILD_ROOT %files %{prefix} /etc/ld.so.conf.d/openssl.conf %post ldconfig %postun ldconfig %changelog * Thu Sep 28 2023 nissy <nissy@example.com> 3.0.11-1 - Initial RPM release
- rpmbuildディレクトリ作成
[nissy@cent7-openssl30x-rpm ~]$ rpmdev-setuptree
- ソースをダウンロードして配置
[nissy@cent7-openssl30x-rpm ~]$ spectool -g -R ~/openssl-opt.spec
- rpm作成
[nissy@cent7-openssl30x-rpm ~]$ QA_SKIP_BUILD_ROOT=1 rpmbuild -bb ~/openssl-opt.spec
QA_SKIP_BUILD_ROOT=1
を付けるのは以下のエラー対策Found '/home/nissy/rpmbuild/BUILDROOT/openssl-opt-3.0.11-1.el7.x86_64' in installed files; aborting error: Bad exit status from /var/tmp/rpm-tmp.40FwmJ (%install) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.40FwmJ (%install)
情報元:rpmbuild found buildroot in installed files error · Issue #24 · kevinconway/rpmvenv · GitHub
確認
- rpmが作成されたか確認
[nissy@cent7-openssl30x-rpm ~]$ ls ~/rpmbuild/RPMS/x86_64/ openssl-opt-3.0.11-1.el7.x86_64.rpm openssl-opt-debuginfo-3.0.11-1.el7.x86_64.rpm
- インストール
[nissy@cent7-openssl30x-rpm ~]$ sudo yum localinstall ~/rpmbuild/RPMS/x86_64/openssl-opt-3.0.11-1.el7.x86_64.rpm -y
- パッケージ名を変えたので元のopensslと共存している
[nissy@cent7-openssl30x-rpm ~]$ rpm -q openssl openssl-opt openssl-1.0.2k-26.el7_9.x86_64 openssl-opt-3.0.11-1.el7.x86_64
- バージョン確認
[nissy@cent7-openssl30x-rpm ~]$ /usr/bin/openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 [nissy@cent7-openssl30x-rpm ~]$ /opt/openssl/bin/openssl version OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)
OpenSSLをバージョンアップする時
openssl.specのVersion:を3.0.11から3.0.12とかに変えて同じようにrpmを作成、yum localupdateで更新できるはず。
[nissy@cent7-openssl30x-rpm ~]$ sudo yum localupdate ~/rpmbuild/RPMS/x86_64/openssl-opt-3.0.12-1.el7.x86_64.rpm
参考情報
第3章 ソフトウェアのパッケージ化 Red Hat Enterprise Linux 7 | Red Hat Customer Portal