Postgres 9.1 に plpython をインストールしようとしていますが、サーバーがクラッシュします。
postgres@dataserver1:~> /opt/postgres/9.1/bin/psql -d mydb
psql.bin (9.1.4)
Type "help" for help.
mydb=# create language 'plpythonu';
The connection to the server was lost. Attempting reset: Failed.
私はpython 2.6.8をインストールしており、ハンドラーはシステムで正しく宣言されています:
select tmplname, tmplhandler, tmpllibrary from pg_pltemplate where tmplname like 'plpython%'
"plpythonu" | "plpython_call_handler" | "$libdir/plpython2"
"plpython2u" | "plpython2_call_handler" | "$libdir/plpython2"
そしてハンドラは $libdir にインストールされます:
postgres@dataserver1:~> ll /opt/postgres/9.1/lib/postgresql/plpython*
-rwxr-xr-x 1 root root 6686333 Aug 17 14:27 /opt/postgres/9.1/lib/postgresql/plpython2.so
これに関する手がかりは高く評価されます
編集
拡張機能 plpythonu、plpython2u、および plpython3u を作成しようとしましたが、それらはすべてサーバーをクラッシュさせます。
ドキュメントを少し読んで、インストールされている拡張機能を一覧表示する \dx コマンドを見つけました。
mydb=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
したがって、インストールされている拡張機能はplpgsqlだけだと思います。
mydb=# select name, installed_version from pg_available_extensions where name like '%python%';
name | installed_version
------------+-------------------
plpython2u |
plpython3u |
plpythonu |
(3 rows)
そして私の拡張ディレクトリ:
postgres@dataserver1:/opt/postgres/9.1/share/postgresql/extension> ll *python*
-rw-r--r-- 1 root root 351 Aug 20 17:32 plpython2u--1.0.sql
-rw-r--r-- 1 root root 196 Aug 20 17:32 plpython2u.control
-rw-r--r-- 1 root root 402 Aug 20 17:32 plpython2u--unpackaged--1.0.sql
-rw-r--r-- 1 root root 351 Jun 1 02:54 plpython3u--1.0.sql
-rw-r--r-- 1 root root 196 Jun 1 02:54 plpython3u.control
-rw-r--r-- 1 root root 402 Jun 1 02:54 plpython3u--unpackaged--1.0.sql
-rw-r--r-- 1 root root 347 Aug 20 17:32 plpythonu--1.0.sql
-rw-r--r-- 1 root root 194 Aug 20 17:32 plpythonu.control
-rw-r--r-- 1 root root 393 Aug 20 17:32 plpythonu--unpackaged--1.0.sql
編集
私は Linux SuSE で実行していますが、あなたの言いたいことはわかりました。
私の postgres インストールでは、pl-lang ライブラリは .../postgres/9.1/lib/postgres にあります。その中に plpython2.so と plpython3.so があります
これらのファイルのダイナミック リンク ライブラリを確認しています。
alfonso@dataserver1:/opt/postgres/9.1/lib/postgresql> sudo ldd plpython2.so
linux-vdso.so.1 => (0x00007fff5e945000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f64064df000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f64062da000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f64060d7000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6405e5e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6405ae9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6406b2e000)
plpython3.so に対しても、Python ライブラリへの参照もありません。
しかし、python 2.6 と python 3.2 をインストールしました。Python 2 の拡張機能をインストールしたいことに注意してください。
はい、CREATE EXTENSION はまだクラッシュしています。
mydb=# create extension plpython2u;
The connection to the server was lost. Attempting reset: Failed.
!> \q