TL;DR
- http://repo.mysql.com/yum/mysql-5.7-community/el/7/SRPMS/ からSRPMファイルを持ってきてrpmbuildするのが一番楽
MySQL Product Archives で見たら、MySQL 5.7はOracle Linux(に限らずRHEL系の)8に対応したrpmはなかった。けど欲しい。
というわけで(el7用のrpmファイルでも動くような気はするけど一応) Oracle Linuxのコンテナイメージ の中でrpmbuildするメモ。
# wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/SRPMS/mysql-community-5.7.44-1.el7.src.rpm
# rpm -i mysql-community-5.7.44-1.el7.src.rpm
# dnf install rpm-build
# rpmbuild -bb ~/rpmbuild/SPECS/mysql.spec
error: Failed build dependencies:
cyrus-sasl-devel is needed by mysql-community-5.7.44-1.el8.x86_64
libaio-devel is needed by mysql-community-5.7.44-1.el8.x86_64
ncurses-devel is needed by mysql-community-5.7.44-1.el8.x86_64
numactl-devel is needed by mysql-community-5.7.44-1.el8.x86_64
openldap-devel is needed by mysql-community-5.7.44-1.el8.x86_64
openssl-devel is needed by mysql-community-5.7.44-1.el8.x86_64
perl is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Carp) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Config) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Cwd) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Data::Dumper) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(English) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Errno) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Exporter) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Fcntl) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Basename) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Copy) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Find) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Path) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Spec) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Spec::Functions) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(File::Temp) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Getopt::Long) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(IO::File) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(IO::Handle) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(IO::Pipe) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(IO::Select) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(IO::Socket) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(IO::Socket::INET) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(JSON) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Memoize) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(POSIX) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Sys::Hostname) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Time::HiRes) is needed by mysql-community-5.7.44-1.el8.x86_64
perl(Time::localtime) is needed by mysql-community-5.7.44-1.el8.x86_64
time is needed by mysql-community-5.7.44-1.el8.x86_64
zlib-devel is needed by mysql-community-5.7.44-1.el8.x86_64
依存のものを入れる。
# dnf install -y cyrus-sasl-devel libaio-devel ncurses-devel numactl-devel openldap-devel openssl-devel perl time zlib-devel perl-JSON
# rpmbuild -bb ~/rpmbuild/SPECS/mysql.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.5u4iqi
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf mysql-5.7.44
+ /usr/bin/mkdir -p mysql-5.7.44
..
+ cmake ../mysql-5.7.44 -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM -DCMAKE_BUILD_TYPE=Debug -DWITH_BOOST=.. '-DCMAKE_C_FLAGS= -g -pipe -Wall -Werror=format-security -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' '-DCMAKE_CXX_FLAGS= -g -pipe -Wall -Werror=format-security -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' -DWITH_INNODB_MEMCACHED=1 -DINSTALL_LIBDIR=lib64/mysql -DINSTALL_PLUGINDIR=lib64/mysql/plugin/debug -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQLX_UNIX_ADDR=/var/run/mysqld/mysqlx.sock -DFEATURE_SET=community -DWITH_EMBEDDED_SERVER=1 -DWITH_EMBEDDED_SHARED_LIBRARY=1 -DWITH_NUMA=ON '-DCOMPILATION_COMMENT=MySQL Community Server - Debug (GPL)' -DMYSQL_SERVER_SUFFIX=
/var/tmp/rpm-tmp.AHE541: line 47: cmake: command not found
error: Bad exit status from /var/tmp/rpm-tmp.AHE541 (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.AHE541 (%build)
cmake忘れてた…というかBuildRequiresに書いておいてくれればいいのに。そのほか、ビルド中に転けたパッケージも入れた。
# dnf install -y cmake gcc gcc-c++ libtirpc-devel
# dnf install -y --enablerepo=ol8_codeready_builder rpcgen
# rpmbuild -bb ~/rpmbuild/SPECS/mysql.spec
これで完成。
# ll ~/rpmbuild/RPMS/x86_64/mysql-community-*
-rw-r--r--. 1 root root 22908224 Jun 10 03:31 /root/rpmbuild/RPMS/x86_64/mysql-community-client-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 323348 Jun 10 03:31 /root/rpmbuild/RPMS/x86_64/mysql-community-common-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 3790152 Jun 10 03:32 /root/rpmbuild/RPMS/x86_64/mysql-community-devel-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 59816800 Jun 10 03:32 /root/rpmbuild/RPMS/x86_64/mysql-community-embedded-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 172178112 Jun 10 03:33 /root/rpmbuild/RPMS/x86_64/mysql-community-embedded-devel-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 1866328 Jun 10 03:32 /root/rpmbuild/RPMS/x86_64/mysql-community-libs-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 166402044 Jun 10 03:31 /root/rpmbuild/RPMS/x86_64/mysql-community-server-5.7.44-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 150149116 Jun 10 03:32 /root/rpmbuild/RPMS/x86_64/mysql-community-test-5.7.44-1.el8.x86_64.rpm