#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)