トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

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 を作成できた。