それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

postgres

Posrgresqlの管理のために、su postgresが通らない。

sudo su postgress

とsudo すればいけた。

apt-get で postgresがどこにインストールされたのかよくわからない。ちゃんと設定見ておけば良かった。

createdbなどのコマンドは/usr/binにみつけた

clusterdb -> ../share/postgresql-common/pg_wrapper
createdb -> ../share/postgresql-common/pg_wrapper
createlang -> ../share/postgresql-common/pg_wrapper
createuser -> ../share/postgresql-common/pg_wrapper
dropdb -> ../share/postgresql-common/pg_wrapper
droplang -> ../share/postgresql-common/pg_wrapper
dropuser -> ../share/postgresql-common/pg_wrapper
pg_dump -> ../share/postgresql-common/pg_wrapper
pg_dumpall -> ../share/postgresql-common/pg_wrapper
pg_restore -> ../share/postgresql-common/pg_wrapper
psql -> ../share/postgresql-common/pg_wrapper
reindexdb -> ../share/postgresql-common/pg_wrapper
vacuumdb -> ../share/postgresql-common/pg_wrapper
vacuumlo -> ../share/postgresql-common/pg_wrappe

とすべて、pg_wrapperなるもにリンクされている。なんだこれは?気味が悪いので内容を確認。

pg_wrapperの中を見てみた

#!/usr/bin/perl -w
# Call a PostgreSQL client program with the version, cluster and default
# database specified in ~/.postgresqlrc or
# /etc/postgresql-common/user_clusters.
#
# (C) 2005 Martin Pitt <mpitt@debian.org>

use strict;

use lib '/usr/share/postgresql-common';
use PgCommon;

my ($version, $cluster, $db, $port, $host);

$host = $ENV{'PGHOST'};

# Check for PGCLUSTER in %ENV
if (defined $ENV{'PGCLUSTER'}) {
    ($version, $cluster) = split ('/', $ENV{'PGCLUSTER'}, 2);
    error 'Invalid version specified with $PGCLUSTER' unless version_exists $version;
    error 'No cluster specified with $PGCLUSTER' unless $

....(以下略)...

どうやら、Perlで処理を切り分けている模様。なるほどね。シンボリックリンクの管理を楽にするって事かな。

ここまできて、initdbの所在が不明。

initdbはapt-get後にしてくれているのだろうか。postgresユーザーが出来ているからダイジョウブだと思うが。DBが作成されるディレクトリを変更したいねん。もう少し調べてみる