Tihiroのストレスフリーな生活

少しだけ頭使って後は根性

CentOS 5にPostgreSQLをインストールする。

概要

タイトルの通り、CentOS 5にPostgreSQL9.2をインストールしたい。ということです。正直、大変でした。

環境

手順

  1. yumリポジトリURLを変更する
  2. zlib-develをyumでインストールする
  3. readline-develをyumでインストールする
  4. PostgreSQLソースコードからインストールする

という流れになります。

具体的には

1. yumリポジトリURLを変更する

qiita.com

とか

www.softel.co.jp

を参照してください。

要は「/etc/yum.repos.d/CentOS-Base.repo」のbaseurlとかを書き換えるっていうお話です。

2. zlib-develをyumでインストールする

yum install zlib-devel

3. readline-develをyumでインストールする

yum install readline-devel

4. PostgreSQLソースコードからインストールする

www.postgresql.jp

を参照してください。

まとめ

CentOS 5だとOpenSSLが古すぎてyumPostgreSQLをインストールできませんでした。ので、ソースコードからインストールするしかなかったのですが、そのことに気がつくのに4日分ぐらいの時間を無駄に費やしてしまいました。無念。

NG集

駄目だった記録。

yumPostgreSQLを入れたい

yum localinstall /shared/pgdg-centos92-9.2-8.noarch.rpm

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 442df0f8

Public key for pgdg-centos92-9.2-8.noarch.rpm is not installed

みたいなエラーがでる。

 rpm -ivh /shared/pgdg-centos92-9.2-8.noarch.rpm 

はOKだったけど

yum search postgresql

すると

File "/usr/bin/yum", line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)

から始まって

File "/usr/lib64/python2.4/site-packages/M2Crypto/SSL/Connection.py", line 167, in connect_ssl
return m2.ssl_connect(self.ssl, self._timeout)
M2Crypto.SSL.SSLError: tlsv1 alert protocol version

で終わるエラーメッセージが発生。

OpenSSLの更新(のために必要なperlとかもアップグレード)

www.itcore.jp

とか

dokuwiki.fl8.jp

を参照にOpenSSLをアップグレード。

※--prefix=/usr/localだとあまり上手くいかなくて、--prefix=/usrだと上手くいった。けど、既存の環境丸つぶれみたいな感じになるので要注意。仕組みがいまいち分かっていないので要勉強。

したけどエラー変わらず。

ということでエラーメッセージとにらめっこしていると、yumpythonで動いていることに気がつく。

それもpython2.4ということで、これをpython2.7に引き上げたら動くのでは? と考えた。

pythonのアップデート

qiita.com

とか

tt-house.com

を参照にpython2.4をpython2.7にアップグレード。

よくわかりませんが、共有ライブラリにパスを通すのも忘れないでやります。 「/etc/ld.so.conf」に「/usr/lib」を追加します。

この追加するのは

find / -name libpython2.7.so.1.0

してみた結果のlibディレクトリです。例えば「/usr/local/lib/libpython2.7.so.1.0」だったら、「/usr/local/lib/」を追加します。

その後、忘れずに

ldconfig

もします。

が・・駄目っ・・

yum search postgresql

すると

There was a problem importing one of the Python modules

required to run yum. The error leading to this problem was:

No module named yum

Please install a package which provides this module, or

verify that the module is installed correctly.

It's possible that the above module doesn't match the

current version of Python, which is:

2.7.2 (default, Apr 25 2020, 14:35:11)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)]

If you cannot solve this problem yourself, please go to

the yum faq at:

http://wiki.linux.duke.edu/YumFaq

というエラー発生。 「No module named yum」ということで、python2.7にyumモジュールが入っていない? なら、入れましょう。

pipのインストール

python get-pip.py

してみましたが

ERROR:root:code for hash sha224 was not found.

から始まって

ImportError: cannot import name sha256

で終わるエラーが発生。どうあがいても、このエラーが取れませんでした。

Python3をインストールしても駄目でした。残念無念。

と、途方にくれていたらPostgreSQLソースコードからインストールすればいいじゃない、と閃いたというお話でした(他にも色々エラーメッセージが出て対応したけど、記録を消してしまいました)。

今の所の結論

yumでTLS1.2が使えれば万事解決な雰囲気なんですが、その方法が分からず。という状態です。ので、CentOS 5にyumPostgreSQLをインストールするのは無理。というのが今の所の結論です。