#navi(../)
* CentOSでPostgreSQLをソースからコンパイルする手順 [#g81a6f2a]
PostgreSQLのソースを入手しソースからコンパイルしインストールする手順を記します。~
最新のPostgreSQLを試してみたり、プライベートな環境を構築することができます。

使用したOSはCentOS5, CentOS6の2つです。~
CentOS5, CentOS6で操作に差異がある場合は、別途記述します。~

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* PostgreSQLのソースコードを入手する [#dff76b33]
[[NPO法人 日本PostgreSQLユーザ会>http://www.postgresql.jp/]]からPostgreSQLのソースコードをダウンロードすることができます。~
ブラウザを利用してダウンロードしてもよいですし、wgetやcurlコマンドを利用してダウンロードしてもよいでしょう。~

本資料では、ブラウザを利用してダウンロードします。~
本資料作成時の最新バージョンである、9.1.4のソースコードを利用します。
#ref(01.gif)

* Cコンパイラなどの開発環境をインストールしていない場合 [#n18df6fe]
CentOSで開発環境をインストールしていない場合は、以下の資料を参考に開発環境(ツール)をインストールしてください。
-[[CentOSで開発ツールを一括でインストールする>http://linux.just4fun.biz/CentOS/CentOS%E3%81%A7%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB%E3%82%92%E4%B8%80%E6%8B%AC%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B.html]]
-[[関連パッケージをインストール・アンインストールする方法>http://linux.just4fun.biz/CentOS/%E9%96%A2%E9%80%A3%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html]]

* ダウンロードしたPostgreSQLを解凍します。 [#vce793f3]
以下、CentOS上での作業です。

ユーザアカウントはsakuraで行います。

以下の通り、ダウンロードしたPostgreSQLのソースコードはアカウントsakuraのホームディレクトリに保存しました。
 [sakura@centos ~]$ pwd
 /home/sakura
 [sakura@centos ~]$ ls -l
 合計 19984
 -rw-r--r-- 1 sakura sakura 20437875  8月  8 22:56 postgresql-9.1.4.tar.gz

* コンパイルする前にインストールが必要なパッケージなど [#fe57d004]
CentOS5, CentOS6でPostgreSQLをソースコードからコンパイルするために必要なパッケージなどを以下に記します。
** CentOS 5 [#t9091c8e]
+flexのインストール(バージョンアップ)~
記事を参考にflexをインストールしてください。
--[[flexのインストール>PostgreSQL/flexのインストール]]
+ readline-develパッケージのインストール
+ zlib-develパッケージのインストール
** CentOS 6 [#cfc21b82]
+ readline-develパッケージのインストール
+ zlib-develパッケージのインストール

以下にパッケージがインストールされていない場合にconfigureコマンドを利用すると出力される警告やエラーについて記します。~
コンパイルとインストールに進む方は「[[コンパイル&インストール>#eb61f7c7]]」に進んでください。

** CentOS5に必要なflexのバージョンアップ [#w5b856e1]
configureで以下のWARNINGが出力される原因はflexのバージョンが古いためです。~
以下リンクはflexをソースコードからインストールする記事です。~
記事を参考にflexをインストールしてください。
-[[flexのインストール>PostgreSQL/flexのインストール]]
 checking for flex... configure: WARNING:
 *** The installed version of Flex, /usr/bin/flex, is too old to use with PostgreSQL.
 *** Flex version 2.5.31 or later is required, but this is /usr/bin/flex version 2.5.4.
 configure: WARNING:
 *** The installed version of Flex, /usr/bin/lex, is too old to use with PostgreSQL.
 *** Flex version 2.5.31 or later is required, but this is /usr/bin/lex version 2.5.4.
 no
 configure: WARNING:
 *** Without Flex you will not be able to build PostgreSQL from Git nor
 *** change any of the scanner definition files.  You can obtain Flex from
 *** a GNU mirror site.  (If you are using the official distribution of
 *** PostgreSQL then you do not need to worry about this because the Flex
 *** output is pre-generated.)

** readlineのライブラリ [#va6cfb3e]
configure時に以下のメッセージが表示された場合は、readline-develがインストールされていないためです。~
 configure: error: readline library not found
 If you have readline already installed, see config.log for details on the
 failure.  It is possible the compiler isn't looking in the proper directory.
 Use --without-readline to disable readline support.

rootになり、以下のコマンドでreadline-develをインストールしてください。
 yum -y install readline-devel

** zlibライブラリ [#l7a3da61]
configure時に以下のメッセージが表示された場合は、zlib-develがインストールされていないためです。~
 configure: error: zlib library not found
 If you have zlib already installed, see config.log for details on the
 failure.  It is possible the compiler isn't looking in the proper directory.
 Use --without-zlib to disable zlib support.

rootになり、以下のコマンドでzlib-develをインストールしてください。
 yum -y install zlib-devel


* コンパイル&インストール [#eb61f7c7]
以下の手順でPostgreSQLのソースコードのコンパイルとインストールを行います。~
+ PostgreSQLソースのtarボールの展開~
以下のコマンドで展開します。
 tar zxvf postgresql-9.1.4.tar.gz
展開が完了するとホームディレクトリは以下のようになります。
 [sakura@centos ~]$ ls -ltr
 合計 19988
 drwxrwxr-x 6 sakura sakura     4096  6月  1 08:25 postgresql-9.1.4
 -rw-r--r-- 1 sakura sakura 20437875  8月  8 22:56 postgresql-9.1.4.tar.gz
postgresql-9.1.4ディレクトリが作成されPostgreSQLのソースなど一式が格納されています。
#br
+ 展開したディレクトリにcdする
 cd postgresql-9.1.4
#br
+ configureコマンドを実行する
 ./configure --prefix=$HOME/pgsql
上記の--prefixはインストールするディレクトリになります。~
ホームディレクトリのpgsqlにインストールするように指示していあります。
#br
+ makeコマンドを実行(ソースコードのコンパイル)
 make
#br
以下のメッセージが表示されればコンパイルは完了です。
 All of PostgreSQL successfully made. Ready to install.
#br
+ make install コマンドを実行~
configureで指定したprefixのディレクトリにPostgreSQLがインストールされます。
 [sakura@centos postgresql-9.1.4]$ make install
 <snip>
 PostgreSQL installation complete.
#br
$HOME/pgsqlにインストールされているのが確認できます。
 [sakura@centos postgresql-9.1.4]$ ls -l $HOME/pgsql
 合計 16
 drwxrwxr-x 2 sakura sakura 4096  8月  9 00:00 bin
 drwxrwxr-x 6 sakura sakura 4096  8月  9 00:00 include
 drwxrwxr-x 3 sakura sakura 4096  8月  9 00:00 lib
 drwxrwxr-x 6 sakura sakura 4096  8月  9 00:00 share

* インストールしたPostgreSQLを起動してみる [#ka746a3a]
ホームディレクトリ内にインストールしたPostgreSQLを起動するために以下のようにPATHを設定します。~
.bashrcなどに追記すれば以後、有効になります。
 export PATH=$HOME/pgsql/bin:$PATH

- initdbをしてみる~
上記のPATH設定によりinitdbコマンドがprefixで指定したディレクトリのbinディレクトリにインストールしたinitdbコマンドを示しています。
 [sakura@centos postgresql-9.1.4]$ which initdb
 ~/pgsql/bin/initdb
#br
ホームディレクトリに戻りinitdbしてみます。
 [sakura@centos postgresql-9.1.4]$ cd
 [sakura@centos ~]$ initdb -D $HOME/sakura
 The files belonging to this database system will be owned by user "sakura".
 This user must also own the server process.
 
 <snip>
 creating directory /home/sakura/sakura ... ok
 creating subdirectories ... ok
 selecting default max_connections ... 100
 selecting default shared_buffers ... 32MB
 creating configuration files ... ok
 creating template1 database in /home/sakura/sakura/base/1 ... ok
 <snip>
 Success. You can now start the database server using:
 
     postgres -D /home/sakura/sakura
 or
     pg_ctl -D /home/sakura/sakura -l logfile start

- initdbの結果
$HOME/sakuraにinitdbにより作成されたデータベースシステム(クラスタ)が作成されました。
 [sakura@centos ~]$ ls -l sakura/
 合計 80
 -rw------- 1 sakura sakura     4  8月  9 00:07 PG_VERSION
 drwx------ 5 sakura sakura  4096  8月  9 00:07 base
 drwx------ 2 sakura sakura  4096  8月  9 00:07 global
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_clog
 -rw------- 1 sakura sakura  4470  8月  9 00:07 pg_hba.conf
 -rw------- 1 sakura sakura  1636  8月  9 00:07 pg_ident.conf
 drwx------ 4 sakura sakura  4096  8月  9 00:07 pg_multixact
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_notify
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_serial
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_stat_tmp
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_subtrans
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_tblspc
 drwx------ 2 sakura sakura  4096  8月  9 00:07 pg_twophase
 drwx------ 3 sakura sakura  4096  8月  9 00:07 pg_xlog
 -rw------- 1 sakura sakura 19168  8月  9 00:07 postgresql.conf

- 作成したデータベースシステム(クラスタ)を起動してみます。~
pg_ctlコマンドにより起動します。
 [sakura@centos ~]$ pg_ctl -D $HOME/sakura start
 server starting
 [sakura@centos ~]$ LOG:  database system was shut down at 2012-08-09 00:07:32 JST
 LOG:  autovacuum launcher started
 LOG:  database system is ready to accept connections
Enterキーを押せばプロンプトが戻ってきます。

- SQLを実行してみます。~
psqlコマンドを起動しSQLを実行してみます。~
データベースを作成していないので、最初からあるpostgresに接続しSQLを実行してみます。
 [sakura@centos ~]$ psql postgres
 psql (9.1.4)
 Type "help" for help.
 
 postgres=# select now();
               now
 -------------------------------
  2012-08-09 00:13:27.710802+09
 (1 row)
 
 postgres-# \q

- PostgreSQLの停止をしてみます。
pg_ctlコマンドで起動したPostgreSQLを停止させます。
 [sakura@centos ~]$ pg_ctl stop -D $HOME/sakura
 LOG:  received smart shutdown request
 LOG:  autovacuum launcher shutting down
 LOG:  shutting down
 waiting for server to shut down....LOG:  database system is shut down
  done
 server stopped

* 関連資料 [#y90019a7]
-[[PostgreSQLをソースからCentOSにインストール>PostgreSQL/PostgreSQLをソースからCentOSにインストール]]
-[[CentOSで開発ツールを一括でインストールする>http://linux.just4fun.biz/CentOS/CentOS%E3%81%A7%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB%E3%82%92%E4%B8%80%E6%8B%AC%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B.html]]
-[[関連パッケージをインストール・アンインストールする方法>http://linux.just4fun.biz/CentOS/%E9%96%A2%E9%80%A3%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html]]
-[[flexのインストール>PostgreSQL/flexのインストール]]

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS