pg12 rc1 on CentOS8 depend python2

Started by Keisuke Kurodaover 6 years ago12 messagesgeneral
Jump to latest
#1Keisuke Kuroda
keisuke.kuroda.3862@gmail.com

Hi.

I tried to install PostgreSQL12 RC1 on CentOS8.

# dnf install postgresql12-server postgresql12-contrib

===============================================================================================
Package Arch Version
Repository Size
===============================================================================================
Installing:
postgresql12-contrib x86_64 12rc1-1PGDG.rhel8
pgdg12-updates-testing 660 k
postgresql12-server x86_64 12rc1-1PGDG.rhel8
pgdg12-updates-testing 5.3 M
Installing dependencies:
python2 x86_64
2.7.15-22.module_el8.0.0+32+017b2cba AppStream
107 k
python2-libs x86_64
2.7.15-22.module_el8.0.0+32+017b2cba AppStream
6.0 M
python2-pip noarch
9.0.3-13.module_el8.0.0+32+017b2cba AppStream
2.0 M
python2-setuptools noarch
39.0.1-11.module_el8.0.0+32+017b2cba AppStream
643 k
postgresql12 x86_64 12rc1-1PGDG.rhel8
pgdg12-updates-testing 1.8 M
postgresql12-libs x86_64 12rc1-1PGDG.rhel8
pgdg12-updates-testing 405 k
Enabling module streams:
python27 2.7

CentOS8 does not have python2 installed by default, But PostgreSQL is
dependent on python2.

Do we need to install python2 when we use PostgreSQL on CentOS8?

Best Regards.
Keisuke Kuroda

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Keisuke Kuroda (#1)
Re: pg12 rc1 on CentOS8 depend python2

On 9/26/19 6:50 PM, keisuke kuroda wrote:

Hi.

I tried to install PostgreSQL12 RC1 on CentOS8.

# dnf install postgresql12-server postgresql12-contrib

===============================================================================================
 Package                           Arch                Version
                                     Repository
  Size
===============================================================================================
Installing:
 postgresql12-contrib              x86_64
 12rc1-1PGDG.rhel8
 pgdg12-updates-testing              660 k
 postgresql12-server               x86_64
 12rc1-1PGDG.rhel8
 pgdg12-updates-testing              5.3 M
Installing dependencies:
 python2                           x86_64
 2.7.15-22.module_el8.0.0+32+017b2cba                 AppStream
                  107 k
 python2-libs                      x86_64
 2.7.15-22.module_el8.0.0+32+017b2cba                 AppStream
                  6.0 M
 python2-pip                       noarch
 9.0.3-13.module_el8.0.0+32+017b2cba                  AppStream
                  2.0 M
 python2-setuptools                noarch
 39.0.1-11.module_el8.0.0+32+017b2cba                 AppStream
                  643 k
 postgresql12                      x86_64
 12rc1-1PGDG.rhel8
 pgdg12-updates-testing              1.8 M
 postgresql12-libs                 x86_64
 12rc1-1PGDG.rhel8
 pgdg12-updates-testing              405 k
Enabling module streams:
 python27                                              2.7

CentOS8 does not have python2 installed by default, But PostgreSQL is
dependent on python2.

Do we need to install python2 when we use PostgreSQL on CentOS8?

If it is installing plpythonu, then yes. From the docs:

https://www.postgresql.org/docs/12/plpython-python23.html

"The language named plpythonu implements PL/Python based on the default
Python language variant, which is currently Python 2. (This default is
independent of what any local Python installations might consider to be
their “default”, for example, what /usr/bin/python might be.) The
default will probably be changed to Python 3 in a distant future release
of PostgreSQL, depending on the progress of the migration to Python 3 in
the Python community."

Best Regards.
Keisuke Kuroda

--
Adrian Klaver
adrian.klaver@aklaver.com

#3Keisuke Kuroda
keisuke.kuroda.3862@gmail.com
In reply to: Adrian Klaver (#2)
Re: pg12 rc1 on CentOS8 depend python2

Thank you for your reply!

Even if I don't need to install plpythonu,
RPM package includes "CONFIGURE = --with-python".
Therefore I think that I need to install python2 when RPM install.
Is my understanding correct?

Best Regards.
Keisuke Kuroda

2019年9月27日(金) 13:03 Adrian Klaver <adrian.klaver@aklaver.com>:

Show quoted text

On 9/26/19 6:50 PM, keisuke kuroda wrote:

Hi.

I tried to install PostgreSQL12 RC1 on CentOS8.

# dnf install postgresql12-server postgresql12-contrib

===============================================================================================

Package Arch Version
Repository
Size

===============================================================================================

Installing:
postgresql12-contrib x86_64
12rc1-1PGDG.rhel8
pgdg12-updates-testing 660 k
postgresql12-server x86_64
12rc1-1PGDG.rhel8
pgdg12-updates-testing 5.3 M
Installing dependencies:
python2 x86_64
2.7.15-22.module_el8.0.0+32+017b2cba AppStream
107 k
python2-libs x86_64
2.7.15-22.module_el8.0.0+32+017b2cba AppStream
6.0 M
python2-pip noarch
9.0.3-13.module_el8.0.0+32+017b2cba AppStream
2.0 M
python2-setuptools noarch
39.0.1-11.module_el8.0.0+32+017b2cba AppStream
643 k
postgresql12 x86_64
12rc1-1PGDG.rhel8
pgdg12-updates-testing 1.8 M
postgresql12-libs x86_64
12rc1-1PGDG.rhel8
pgdg12-updates-testing 405 k
Enabling module streams:
python27 2.7

CentOS8 does not have python2 installed by default, But PostgreSQL is
dependent on python2.

Do we need to install python2 when we use PostgreSQL on CentOS8?

If it is installing plpythonu, then yes. From the docs:

https://www.postgresql.org/docs/12/plpython-python23.html

"The language named plpythonu implements PL/Python based on the default
Python language variant, which is currently Python 2. (This default is
independent of what any local Python installations might consider to be
their “default”, for example, what /usr/bin/python might be.) The
default will probably be changed to Python 3 in a distant future release
of PostgreSQL, depending on the progress of the migration to Python 3 in
the Python community."

Best Regards.
Keisuke Kuroda

--
Adrian Klaver
adrian.klaver@aklaver.com

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Keisuke Kuroda (#3)
Re: pg12 rc1 on CentOS8 depend python2

keisuke kuroda <keisuke.kuroda.3862@gmail.com> writes:

Even if I don't need to install plpythonu,
RPM package includes "CONFIGURE = --with-python".
Therefore I think that I need to install python2 when RPM install.
Is my understanding correct?

The core server package shouldn't have any python dependency.

It doesn't surprise me so much that the contrib package does, though.
Most likely, that includes the plpython transform modules
(hstore_plpython, jsonb_plpython, etc), which are certainly going to
depend on whichever libpython PG was built with.

It might've been better to split out those modules as a separate
package. OTOH that would add confusion, and we have a lot of
subpackages already.

Another idea might be to bundle them into the plpython package
instead of contrib (and similarly for the plperl transforms).

regards, tom lane

#5Christoph Berg
myon@debian.org
In reply to: Tom Lane (#4)
Re: pg12 rc1 on CentOS8 depend python2

Re: Tom Lane 2019-09-27 <19495.1569591498@sss.pgh.pa.us>

Another idea might be to bundle them into the plpython package
instead of contrib (and similarly for the plperl transforms).

Fwiw, the Debian packages do that.

Christoph

#6Keisuke Kuroda
keisuke.kuroda.3862@gmail.com
In reply to: Christoph Berg (#5)
Re: pg12 rc1 on CentOS8 depend python2

Thank you for the reply.
I understand that contrib package depend libpython.

Another idea might be to bundle them into the plpython package
instead of contrib (and similarly for the plperl transforms).

I think that this idea sounds good.
If I don't use plpython, it is happy for me
that don't have to install python.

#7Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Tom Lane (#4)
Re: pg12 rc1 on CentOS8 depend python2

Hi,

On Fri, 2019-09-27 at 09:38 -0400, Tom Lane wrote:

It doesn't surprise me so much that the contrib package does, though.
Most likely, that includes the plpython transform modules
(hstore_plpython, jsonb_plpython, etc), which are certainly going to
depend on whichever libpython PG was built with.

It might've been better to split out those modules as a separate
package. OTOH that would add confusion, and we have a lot of
subpackages already.

I think postgresql-contrib-py3 is really the best idea at this point, otherwise
I cannot see a clean way to make this without breaking existing installations.

I cannot move those contrib modules under plpython* subpackage -- I mean, I
*can, but then the installations will break in next upgrade. OTOH, I can add
Requires: -contrb for plpython package, then it will be the same problem.

Am I missing something?

Regards,
--
Devrim Gündüz
Open Source Solution Architect, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

#8Christoph Berg
myon@debian.org
In reply to: Devrim GÜNDÜZ (#7)
Re: pg12 rc1 on CentOS8 depend python2

Re: Devrim G�nd�z 2019-09-30 <21705bb57210f01b559ec2f5de8550df586324e2.camel@gunduz.org>

I think postgresql-contrib-py3 is really the best idea at this point, otherwise
I cannot see a clean way to make this without breaking existing installations.

Users of these (now contrib) modules need to have
postgresql12-plpython3 installed anyway, so it's unlikely you'd be
breaking anyone's installation.

I cannot move those contrib modules under plpython* subpackage -- I mean, I
*can, but then the installations will break in next upgrade. OTOH, I can add
Requires: -contrb for plpython package, then it will be the same problem.

There must be a way to move a file from one package to another?
(In .deb, this requires
Replaces: sourcedeb (<< newversion)
Conflits: sourcedeb (<< newversion)
in the target package.)

Christoph

#9Keisuke Kuroda
keisuke.kuroda.3862@gmail.com
In reply to: Christoph Berg (#8)
Re: pg12 rc1 on CentOS8 depend python2

Users of these (now contrib) modules need to have
postgresql12-plpython3 installed anyway, so it's unlikely you'd be
breaking anyone's installation.

I agree.
To use these EXTENSION(hstore_plpython,jsonb_plpython, and ltree_plpython),
we need to install plpythonu anyway.
I don't think it would be a problem to move these EXTENSIONs to the
plpython package.

By using the rpm "--nodeps" option,
PostgreSQL 12 could be installed on CentOS8 where python2 is not installed.

# rpm -ivh --nodeps *
1:postgresql12-libs-12.0-1PGDG.rhel################################# [
20%]
2:postgresql12-12.0-1PGDG.rhel8 ################################# [
40%]
3:postgresql12-contrib-12.0-1PGDG.r################################# [
60%]
4:postgresql12-server-12.0-1PGDG.rh################################# [
80%]
5:postgresql12-docs-12.0-1PGDG.rhel#################################
[100%]

plpython could be installed in the same way.

# rpm -ivh --nodeps postgresql12-plpython-12.0-1PGDG.rhel8.x86_64.rpm
1:postgresql12-plpython-12.0-1PGDG.#################################
[100%]

Of course, "CREATE EXTENSION plpythonu" has caused an ERROR because CentOS8
isn't installed python2.

postgres=# CREATE EXTENSION plpythonu;
ERROR: could not load library "/usr/pgsql-12/lib/plpython2.so":
libpython2.7.so.1.0: cannot open shared object file: No such file or
directory postgres=#

"CREATE EXTENSION hstore_plpython2u" has caused an ERROR because required
"plpython2u".

postgres=# CREATE EXTENSION hstore_plpython2u;
ERROR: required extension "plpython2u" is not installed
HINT: Use CREATE EXTENSION ... CASCADE to install required extensions too.

By the way, "python2-libs is needed" error has occurred when
"postgresql12-12.0-1PGDG.rhel8.x86_64.rpm" and
"postgresql12-libs-12.0-1PGDG.rhel8.x86_64.rpm" install.

# rpm -ivh postgresql12-12.0-1PGDG.rhel8.x86_64.rpm
postgresql12-libs-12.0-1PGDG.rhel8.x86_64.rpm
error: Failed dependencies:
python2-libs is needed by postgresql12-12rc1-1PGDG.rhel8.x86_64

In this case, I think that python2-libs is not necessary.

Best Regards.
Keisuke Kuroda

#10Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Keisuke Kuroda (#1)
Re: pg12 rc1 on CentOS8 depend python2

Hi,

On Fri, 2019-09-27 at 10:50 +0900, keisuke kuroda wrote:

CentOS8 does not have python2 installed by default, But PostgreSQL is
dependent on python2.

Do we need to install python2 when we use PostgreSQL on CentOS8?

For the archives: I fixed this in 12.1 packages. Core package do not depend on
PythonX.

Regards,
--
Devrim Gündüz
Open Source Solution Architect, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

#11Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Tom Lane (#4)
Re: pg12 rc1 on CentOS8 depend python2

Hi,

On Fri, 2019-09-27 at 09:38 -0400, Tom Lane wrote:

Another idea might be to bundle them into the plpython package
instead of contrib (and similarly for the plperl transforms).

This went into the last week's minor updates.

Regards,
--
Devrim Gündüz
Open Source Solution Architect, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

#12Keisuke Kuroda
keisuke.kuroda.3862@gmail.com
In reply to: Devrim GÜNDÜZ (#11)
Re: pg12 rc1 on CentOS8 depend python2

Hello Devrim.

Thank you for your help!
I have been able to install PostgreSQL 12.1(rpm) on CentOS 8.0(without
python2).
It has also possible to install on CentOS 7.6(without python3).

Best Regards,
Keisuke Kuroda

2019年11月17日(日) 10:40 Devrim Gündüz <devrim@gunduz.org>:

Show quoted text

Hi,

On Fri, 2019-09-27 at 09:38 -0400, Tom Lane wrote:

Another idea might be to bundle them into the plpython package
instead of contrib (and similarly for the plperl transforms).

This went into the last week's minor updates.

Regards,
--
Devrim Gündüz
Open Source Solution Architect, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR