トップ 一覧 検索 ヘルプ RSS ログイン

postgresql rpmbuildの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!参考サイト
!PostgreSQL の RPM パッケージをビルドするには / Qiita@tom-sato
*https://qiita.com/tom-sato/items/1806f930bb98841117e1

""ここでは PostgreSQL の RPM パッケージをビルドする手順について説明します。

""とくにタグが打たれているわけではないので、どのコミットをチェックアウトするかはログを見て判断するしかありません。そのバージョンに更新したというログがあれば、そのコミットでおそらく問題ないでしょう。

!git proxy config
*http://sushichop.blogspot.com/2013/09/git.html
 $ 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
*https://qiita.com/koara-local/items/3f0898d9fc1108c19bcd
""--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 を作成できた。