snippetsqlMinor
How to install pgcrypto extension in postgres 10 on CentOS 7
Viewed 0 times
centosinstallpostgresextensionhowpgcrypto
Problem
I'm in the process of creating a postgres database for production in CentOS 7. So I already installed (yum install postgresql10-server postgresql10 after adding the repos of course) and configured postgres 10. However, in my scripts I need to install pgcrypto extension and I haven't successfully install it. This is what I've done so far:
-
appears this message
"ERROR: could not access file "$libdir/pgcrypto": No such file or directory"
Googling again I found that maybe I need to give another option, so I ran
-
the error message now is
ERROR: function digest(text, text) does not exist
And I'm stuck and without any idea what to do next. Is anybody else using this extension in postgres 10 on Linux?, if so, how did you create the extension?
Version info: PostgreSQL 10.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
- the first error I got was saying that the
/usr/pgsql-10/share/extension/pgcrypto.controlfiles does not exist. Googling I realized that I have to installpostgres-contribpackage, which I did and then restarted postgres service, but the error continues due to the fact that the extensions were installed into/usr/share/pgsql/extension, so I copied the extension files from they were installed to they were expected and then
-
appears this message
"ERROR: could not access file "$libdir/pgcrypto": No such file or directory"
Googling again I found that maybe I need to give another option, so I ran
CREATE EXTENSION pgcrypto FROM unpackaged; then-
the error message now is
ERROR: function digest(text, text) does not exist
And I'm stuck and without any idea what to do next. Is anybody else using this extension in postgres 10 on Linux?, if so, how did you create the extension?
Version info: PostgreSQL 10.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
Solution
From the docs on
PostgreSQL will create the extension using details from the file
You need to check what
CentOS
In your case I assume
What you probably want to do is install from the CentOS repos. Uninstall all things related to PostgreSQL, and delete those files you copied or linked and run this
CREATE EXTENSIONPostgreSQL will create the extension using details from the file
SHAREDIR/extension/extension_name.control.You need to check what
SHAREDIR is set to with pg_config --sharedir. If that's not set to /usr/share/pgsql/extension then likely your postgresql-contrib was packaged by someone different than your copy of postgresql. These are compile time variables and they should be the same. Moving them in likely won't work either because if these are packaged by two separate entities they're likely built against different libraries.CentOS
In your case I assume
- You're installing the PostgreSQL from the PostgreSQL repos.
- You're installing the -contrib from the CentOS repos.
What you probably want to do is install from the CentOS repos. Uninstall all things related to PostgreSQL, and delete those files you copied or linked and run this
# Adds the PostgreSQL repo
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
# I think this should install them explicitly from the PostgreSQL repo
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-10.1-1PGDG.rhel7.x86_64.rpm
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-contrib-10.1-1PGDG.rhel7.x86_64.rpmCode Snippets
# Adds the PostgreSQL repo
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
# I think this should install them explicitly from the PostgreSQL repo
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-10.1-1PGDG.rhel7.x86_64.rpm
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-contrib-10.1-1PGDG.rhel7.x86_64.rpmContext
StackExchange Database Administrators Q#192727, answer score: 3
Revisions (0)
No revisions yet.