PostgreSQL 8.2をインストール

3月 26, 2021 Computer, Database

(Last Updated On: 2021/05/03)

訳あってCentOS7にPostgreSQL 8.2をインストールしようとするとコンパイルは出来ても動作しませんでした。8.2はかなり古いPostgreSQLなので仕方ないですが、動作させることは可能でした。

CentOS6ならPostgreSQL 8.2を普通にコンパイルできると思います。

CentOS7にインストール

コンパイルは出来るのですがinitdbが失敗します。

$ initdb --no-locale -D pgdata
The files belonging to this database system will be owned by user "yohgaki".
This user must also own the server process.

The database cluster will be initialized with locale C.

creating directory pgdata … ok
creating subdirectories … ok
selecting default max_connections … 100
selecting default shared_buffers/max_fsm_pages … 32MB/204800
creating configuration files … ok
creating template1 database in pgdata/base/1 … ok
initializing pg_authid … FATAL: wrong number of index expressions
STATEMENT: CREATE TRIGGER pg_sync_pg_database AFTER INSERT OR UPDATE OR DELETE ON pg_database FOR EACH STATEMENT EXECUTE PROCEDURE flatfile_update_trigger(); 

child process exited with exit code 1
initdb: removing data directory "pgdata"

どうもgcc 4.8だと新しすぎてこうなるようなので

$ sudo yum install -y compat-gcc-44

としてgcc 4.4を入れてコンパイルします。

$ CC=/usr/bin/gcc44 ./configure --prefix=/home/yohgaki/pgsql
$ make
$ make install 

今度はinitdbも成功し、pgbenchを実行しても問題なく動作しました。

$ export HOME="/home/yohgaki/pgsql/bin:$HOME"
$ initdb -D data
 The files belonging to this database system will be owned by user "yohgaki".
 This user must also own the server process.
 The database cluster will be initialized with locale ja_JP.utf8.
 The default database encoding has accordingly been set to UTF8.
 creating directory data … ok
 creating subdirectories … ok
 selecting default max_connections … 100
 selecting default shared_buffers/max_fsm_pages … 32MB/204800
 creating configuration files … ok
 creating template1 database in data/base/1 … ok
 initializing pg_authid … ok
 initializing dependencies … ok
 creating system views … ok
 loading system objects' descriptions … ok
 creating conversions … ok
 setting privileges on built-in objects … ok
 creating information schema … ok
 vacuuming database template1 … ok
 copying template1 to template0 … ok
 copying template1 to postgres … ok
 WARNING: enabling "trust" authentication for local connections
 You can change this by editing pg_hba.conf or using the -A option the
 next time you run initdb.
 Success. You can now start the database server using:
     postgres -D data
 or
     pg_ctl -D data -l logfile start

Fedora 33にインストール

常用しているFedora 33で使えた方が便利、ということでgccバージョンが問題ならコンパイラーフラグでどうにかなるだろう、と試してみるとあっさり動きました。

$ CFLAGS="-Wc90-c99-compat" ./configure --prefix=/usr/local/pgsql-8.2

CentOS7でもコンパイラーフラグの指定だけで使えるかも知れません。

投稿者: yohgaki