質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

10352閲覧

postgreSQL9.5のインストール方法と設定について(CentOS6上で)

UekiKouji

総合スコア121

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

1グッド

0クリップ

投稿2016/08/16 04:43

いつも助けていただいてありがとうございます。
本日は、centos6上にpostgresql9.5をインストールしたいと考えています。
centos6はminiでインストールしています。

centosをインストール後は、ネットワーク設定を行い、yum updateをしています。
ちなみに、rootでログインしています。

https://pgroonga.github.io/ja/install/centos.html

のサイトを元にインストールをしたのですが、

sudo -H yum install -y http://yum.postgresql.org/9.5/redhat/rhel-$(rpm -qf --queryformat="%{VERSION}" /etc/redhat-release)-$(rpm -qf --queryformat="%{ARCH}" /etc/redhat-release)/pgdg-centos95-9.5-2.noarch.rpm

がインストールされないので、

yum install -y http://yum.postgresql.org/9.5/redhat/rhel-6.8-i386/pgdg-centos95-9.5-2.noarch.rpm

でインストールしてからサイト通りにインストール作業を行いました。

service postgresql-9.5 initdb service postgresql-9.5 start chkconfig postgresql-9.5 on

のあとに

su - postgres

を行いました。

psql

をすると

-bash-4.1$ psql -bash: psql: コマンドが見つかりません

表示されます。
psqlのパスがないかと思い、
vi ~/.bash_profile

# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin PATH=$PATH:/usr/pgsql-9.5/bin/ <= ここを設定 export PATH

のようにパスを設定しましたがうまく
いきません。
どうしてでしょうか。
よろしくお願いします。

take88👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kunai

2016/08/16 04:47

/usr/pgsql-9.5/bin/psql ←これは動きますか?
kunai

2016/08/16 05:08

一度接続を閉じて、再度ログインしてみてもパスは通ってません?
UekiKouji

2016/08/16 05:13

su - postgresでログインし、psqlコマンドをうっても 反応がありませんでした。
kunai

2016/08/16 05:21

反応がないとかうまく行かないという状況がよくわからないのですが、コマンド実行後、何も変化なくコマンドが終了する(次のコマンド受付状態になる)と言う事ですか?
UekiKouji

2016/08/16 05:27

-bash-4.1$ psql -bash: psql: コマンドが見つかりません という意味です。
kunai

2016/08/16 05:42

bash_profileは最初のログイン時のみしか読み込まれないと思いますので、postgresユーザーの他の接続が残っているのではないでしょうか。 とりあえず source .bash_profile で再読み込みしてみてください。 あと、 PATH=$PATH:/usr/pgsql-9.5/bin/ ↑の最後のスラッシュは取ってください。
UekiKouji

2016/08/16 05:54

やってみましたがうまくいきませんでした。
take88

2016/08/16 08:55

echo $PATH を実行してみて結果を追記してもらえますか?
UekiKouji

2016/08/17 06:14

echo $PATH を実行すると以下の結果となりました。 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/pgsql-9.5/bin
take88

2016/08/17 11:06 編集

$HOME/binが/root/binになってるということは /root/.bash_profile を編集してますか?そうであれば「su - postgres」は実行せず、rootのまま「 sudo -u postgres -H psql」を実行するとどうなりますか?
UekiKouji

2016/08/17 17:23

sudo -u postgres -H psqlを実行すると sudo: psql: コマンドが見つかりません 表示されます。
take88

2016/08/18 01:41

su実行するときにハイフンを抜いてみるとどうですか?
UekiKouji

2016/08/18 02:31

[root@localhost ~]# su postgres bash-4.1$ psql could not change directory to "/root": 許可がありません psql (9.5.4) Type "help" for help. postgres=# こんな感じになります。
A.Ichi

2016/08/18 02:57

横から失礼します。ちょっとだけ  postgresユーザにて which psql と打ってみて頂けますでしょうか?
UekiKouji

2016/08/18 03:35

[root@localhost ~]# su - postgres -bash-4.1$ which psql /usr/bin/which: no psql in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin) -bash-4.1$ こんな感じになります。
A.Ichi

2016/08/18 03:47

私の環境であhのecho $PATHと一致していますので、/usr/pgsql-9.5/binが無いですね、もしかしたらexportされてないからかも? export PATH=$PATH
UekiKouji

2016/08/18 05:08

[root@localhost ~]# su - postgres
UekiKouji

2016/08/18 05:09

を行い、vi ~/.bashrcで
UekiKouji

2016/08/18 05:10

# .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi PGDATA=/var/lib/pgsql/9.5/data export PGDATA export PATH=$PATH:/usr/pgsql-9.5/bin
UekiKouji

2016/08/18 05:11

source ~/.bashrc をするとpsqlは動きました。
UekiKouji

2016/08/18 05:12

ただ、再度 su - postgresをすると
UekiKouji

2016/08/18 05:12

psqlは-bash: localhost: そのようなファイルやディレクトリはありません
kunai

2016/08/18 05:14

postgresアカウントのホームディレクトリの.bashrcにパスの記載を行って再読み込みしたら認識された、と言う事ですね。 解決ですか?
UekiKouji

2016/08/18 05:14

となるので、source ~/.bashrcを行う必要があります。そのときのユーザがpostgres@localhostです。このようなユーザを指定するには、どのようにログインすればよいのでしょうか。
UekiKouji

2016/08/18 05:16

解決というか、なぞが深まった感じです。 su - postgres としたあと、source ~/.bashrcをしなければならないので。
kunai

2016/08/18 05:25

「~」がどこを指しているのかがカギになってそうな気がするのですが。 ~と略さずに、フルパスでどの.bash_profileや.bashrcを編集したのか記載いただけますか。
A.Ichi

2016/08/18 06:08

~/ の情報は /etc/passwdを見てみては。
take88

2016/08/18 08:49

`su postgres` のエラーは現在のディレクトリが/rootなのでpostgresユーザに権限が無いからですのでとりあえず無視するとして、psql は起動出来てそうですね。~/.bashrc は明示的に読み込まない限りログインシェルでは読まれませんので postgres ユーザの ~/.bash_profile にPATHを書けば解決しそうな気がします。
UekiKouji

2016/08/19 05:38

いろいろな方に助けていただいてありがとうございます。 たすかりました。
guest

回答2

0

ベストアンサー

コマンドが実行出来ないのは質問で書かれているようにPATHが通っていないからで間違いないです。
解決方法は一例として書きますが、postgres ユーザの ~/.bash_profilePATHの設定を書けばよいと思います。

[root@localhost ~]# su - postgres -bash-4.1$ vi ~/.bash_profile PATH=$PATH:/usr/pgsql-9.5/bin/ <=追加 export PATH <=追加 -bash-4.1$ exit [root@localhost ~]# su - postgres -bash-4.1$ psql

以下説明ですが

~/は現在のユーザのホームディレクトリ(環境変数HOMEの値)に置換されますので、フルパスだと <postgresユーザのホームディレクトリ>/.bash_profile です。root ユーザの時に書いたファイルは /root/.bash_profile なので設定するファイルが間違ってると思います。

また、su - postgresコマンドの動作は、-を付けると root の時の環境変数は解除され、初期状態に戻ります。続いて postgres ユーザのログインシェル(bash)が起動して~/.bash_profileが読み込まれます。
(この時の~/.bash_profileは前述のように postgres のホームディレクトリに有るファイルです)

ログインシェルの場合、``/.bashrcは読み込まれませんので こちらに書いた設定はsource /.bashrcをしないと反映されません。この解決策は/.bash_profile` で ~/.bashrc を明示的に読みこむように設定すれば良いです。次のコードがその例です。

if [ -f ~/.bashrc ]; then . ~/.bashrc fi

個人的には sudo -u postgres -H psql が実行出来なかったのが謎です…

投稿2016/08/18 09:29

take88

総合スコア1347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UekiKouji

2016/08/19 05:37

連絡が遅くなりすいません。 説明されたように行うと、うまくいきました。 sudo -u postgres -H psqlはうまくいきませんでした。 確かに謎です。
guest

0

パスを設定した後に source .bash_profile もしくは、シェルセッションを一旦閉じてもう一度開いてもだめですか?

投稿2016/08/18 05:41

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UekiKouji

2016/08/19 05:38

親切にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問