(新規インストール時はうまく入ったのですが)ansible で laravel を入れ直す
際にエラーが発生しました。
bash
1TASK [laravel : Create User] *************************************************** 2fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "the python psycopg2 module is required"}
環境は CentOS-7.3 + ansible 2.3.1.0 、playbook は自作の
https://github.com/hotta/ansible-centos7 を使っています。
psycopg2 は、依存タスクですでに導入済みです。
bash
1$ rpm -qa|grep psycopg2 2python-psycopg2-2.7.1-1.rhel7.x86_64
エラーになったのは以下のタスクです。
bash
1$ cat /etc/ansible/roles/laravel/tasks/db-pgsql.yml | sed -n '5,8p' 2- name: Create User 3 postgresql_user: 4 name: "{{ LARAVEL_DB_USERNAME }}" 5 role_attr_flags: SUPERUSER
エラーメッセージでググってみると、psycopg2が妙なところに入ったんじゃない?
ということなので調べてみたんですが、それなりに正しく入っているように見えます。
bash
1$ rpm -ql python-psycopg2 | grep psycopg2$ 2/usr/lib64/python2.7/site-packages/psycopg2 3$ python --version 4Python 2.7.5 5$ which python 6/usr/bin/python 7$ rpm -qf `which python` 8python-2.7.5-48.el7.x86_64
python に詳しくなくてよくわからないのですが、/usr/lib64 配下にはバイナリ
パッケージ、/usr/lib 配下にはソースパッケージが入っているように見えます。
rpm で入れるのと(足りない分を)pip で入れたりすることで、何か不整合が
起こっているということでしょうか?
【追記】
エラーを出しているところを追ってみました。
/usr/lib/python2.7/site-packages/ansible/modules/database/postgresql/postgresql_db.py
を見たら、
python
1HAS_PSYCOPG2 = False 2try: 3 import psycopg2 4 import psycopg2.extras 5except ImportError: 6 pass 7else: 8 HAS_PSYCOPG2 = True 9from ansible.module_utils.six import iteritems 10... 11 if not HAS_PSYCOPG2: 12 module.fail_json(msg="the python psycopg2 module is required")
というコードがあったので、試しに以下のようなコードを書いて
bash
1$ cat a.py 2import psycopg2 3import psycopg2.extras
実行してみたら、
bash
1$ python a.py 2Traceback (most recent call last): 3 File "a.py", line 1, in <module> 4 import psycopg2 5 File "/usr/lib64/python2.7/site-packages/psycopg2/__init__.py", line 50, in <module> 6 from psycopg2._psycopg import ( # noqa 7ImportError: /usr/lib64/python2.7/site-packages/psycopg2/_psycopg.so: undefined symbol: PQconninfo
ということになったので、psycopg2 のライブラリが見つからないんじゃなくて、
import エラーになったということのようです。postgresql を PGDG から入れ
直しているので、そのせいのような気がしてきました。もう少し調べてみます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。