postgresql rpmbuild
参考サイト
PostgreSQL の RPM パッケージをビルドするには / Qiita@tom-sato
ここでは PostgreSQL の RPM パッケージをビルドする手順について説明します。
とくにタグが打たれているわけではないので、どのコミットをチェックアウトするかはログを見て判断するしかありません。そのバージョンに更新したというログがあれば、そのコミットでおそらく問題ないでしょう。
git proxy config
$ git config --global http.proxy http://proxy.example.com:8080 $ git config --global https.proxy http://proxy.example.com:8080
[Git] shallow cloneしたリポジトリを、あとで完全にfetchする / Qiita@koara-local
--depth 1 をつけでcloneしたリポジトリを、あとで完全な状態にする方法メモ
fetch --unshallow を使用すればよいとのこと
もし Git が 1.8.3 以前であれば以下でもなんとかなるらしい。(depthの値は十分に深ければなんでもよい)
$ git fetch --depth=1000000
作業記録
移動
cd /home/user01/tmp/
pgrpms 最新バージョンのみgit取得
time git clone --depth=1 https://git.postgresql.org/git/pgrpms.git
[user01@server01 tmp]$ time git clone --depth=1 https://git.postgresql.org/git/pgrpms.git Initialized empty Git repository in /home/user01/tmp/pgrpms/.git/ remote: Counting objects: 19591, done. remote: Compressing objects: 100% (10506/10506), done. remote: Total 19591 (delta 8853), reused 15084 (delta 6862) Receiving objects: 100% (19591/19591), 78.54 MiB | 15.65 MiB/s, done. Resolving deltas: 100% (8853/8853), done. real 1m20.726s user 0m4.230s sys 0m1.966s
pgrpms 過去バージョンの取得
- git 通常同期
cd pgrpms
[user01@server01 pgrpms]$ time git fetch real 1m4.118s user 0m0.086s sys 0m0.096s
- 取得なし
- 過去バージョン取得
time git fetch --depth=1000000
[user01@server01 pgrpms]$ time git fetch --depth=1000000 remote: Counting objects: 70390, done. remote: Compressing objects: 100% (26890/26890), done. remote: Total 70390 (delta 45481), reused 61539 (delta 38626) Receiving objects: 100% (70390/70390), 166.65 MiB | 15.98 MiB/s, done. Resolving deltas: 100% (45481/45481), completed with 2586 local objects. real 2m59.441s user 0m12.734s sys 0m2.226s
- 過去バージョンを取得できた。
PostgreSQL 11 用を取得
- git log から postgresql-11 リリースを確認
[user01@server01 EL-6]$ git log --oneline --all --graph | grep 'PostgreSQL 11' | grep 11.5 * 4468251 PostgreSQL 11: Update to 11.5 [user01@server01 pgrpms]$ git log --oneline --all --graph | grep 'PostgreSQL 11' | grep 11.4 * 4b6435e PostgreSQL 11: - Update to 11.4, per changes described at https://www.postgresql.org/docs/devel/static/release-11-4.html
- 11.5 を取得
[user01@server01 pgrpms]$ git checkout 4b6435e Note: checking out '4468251'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 4468251... PostgreSQL 11: Update to 11.5
- postgresql-11.5.tar がない。
- 11.4 を取得
[user01@server01 pgrpms]$ git checkout 4b6435e Previous HEAD position was 4468251... PostgreSQL 11: Update to 11.5 HEAD is now at 4b6435e... PostgreSQL 11: - Update to 11.4, per changes described at https://www.postgresql.org/docs/devel/static/release-11-4.html
- ソース以外が集められたディレクトリのうち、 RHEL-6 用に移動
[user01@server01 SPECS]$ cd /home/user01/tmp/pgrpms/rpm/redhat/11/postgresql/EL-6/
- postgresql-11.4 ソースファイルを取得
[user01@server01 EL-6]$ curl -Os https://download.postgresql.org/pub/source/v11.4/postgresql-11.4.tar.bz2 [user01@server01 EL-6]$ ls -l postgresql-11.4.tar.bz2 -rw-rw-r--. 1 user01 user01 19759635 8月 7 19:36 2019 postgresql-11.4.tar.bz2 [user01@server01 EL-6]$ curl -Os https://www.postgresql.org/files/documentation/pdf/11/postgresql-11-A4.pdf [user01@server01 EL-6]$ ls -l postgresql-11-A4.pdf -rw-rw-r--. 1 user01 user01 12557243 8月 7 21:57 2019 postgresql-11-A4.pdf
ビルド実行 #1 バージョン指定エラー発生
rpmbuild -ba -D "_sourcedir $(pwd)" -D "dist .rhel6" postgresql-11.spec
[user01@server01 EL-6]$ rpmbuild -ba -D "_sourcedir $(pwd)" -D "dist .rhel6" postgresql-11.spec エラー: 不正なソース: /home/user01/tmp/pgrpms/rpm/redhat/11/postgresql/EL-6/postgresql-%{pgmajorversion}-rpm-pgsql.patch: そのようなファイルやディレクトリはありません
- ファイル確認
[user01@server01 EL-6]$ ls -l postgresql-11-rpm-pgsql.patch ../master/postgresql-11-rpm-pgsql.patch -rw-rw-r--. 1 user01 user01 1728 8月 7 18:31 2019 ../master/postgresql-11-rpm-pgsql.patch lrwxrwxrwx. 1 user01 user01 39 8月 7 18:31 2019 postgresql-11-rpm-pgsql.patch -> ../master/postgresql-11-rpm-pgsql.patch
- ファイルは存在する。
- pgmajorversion が存在しない。
- postgresql-11.spec 内に pgmajorversion の指定が存在しない。
ビルド実行 #2 依存エラー発生
[user01@server01 EL-6]$ rpmbuild -ba -D "_sourcedir $(pwd)" -D "dist .rhel6" -D "pgmajorversion 11" postgresql-11.spec エラー: ビルド依存性の失敗: bison は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています flex >= 2.5.31 は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています readline-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています libicu-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています e2fsprogs-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています openldap-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています pam-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています python2-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています tcl-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています libuuid-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています libxslt-devel は postgresql11-11.4-1PGDG.rhel6.x86_64 に必要とされています
- 依存rpmインストール
sudo yum --enablerepo=* install libicu-devel sudo yum install bison flex readline-devel e2fsprogs-devel openldap-devel pam-devel python2-devel tcl-devel libuuid-devel libxslt-devel
- libicu-devel は
rpmビルド実行 #3 ビルド成功
rpmbuild -ba -D "_sourcedir $(pwd)" -D "dist .rhel6" -D "pgmajorversion 11" postgresql-11.spec
real 3m12.586s user 5m14.250s sys 0m55.256s
- 作成完了
[user01@server01 EL-6]$ ls -l /home/user01/rpmbuild/RPMS/x86_64/*.rpm -rw-rw-r--. 1 user01 user01 12356 8月 7 17:06 2019 /home/user01/rpmbuild/RPMS/x86_64/dinosmon-0.10-4.x86_64.rpm -rw-rw-r--. 1 user01 user01 1772 8月 7 17:06 2019 /home/user01/rpmbuild/RPMS/x86_64/dinosmon-debuginfo-0.10-4.x86_64.rpm -rw-rw-r--. 1 user01 user01 1788216 8月 7 22:00 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 549404 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-contrib-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 19681520 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-debuginfo-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 2066700 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-devel-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 11662056 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-docs-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 338904 8月 7 22:00 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-libs-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 61172 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-plperl-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 82128 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-plpython-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 39560 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-pltcl-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 5502404 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-server-11.4-1PGDG.rhel6.x86_64.rpm -rw-rw-r--. 1 user01 user01 1885020 8月 7 22:01 2019 /home/user01/rpmbuild/RPMS/x86_64/postgresql11-test-11.4-1PGDG.rhel6.x86_64.rpm
- postgresql-11.4 の rpm を作成できた。