Subject: Re: Passwordcheck Extension Not Installing

From: Tom Lane <[email-masked]>
Date: Sun, 09 Feb 2025 16:20:35 -0500

=?UTF-8?B?Q2loYXQgS8O8w6fDvGtiYcSfcsSxYcOnxLFr?= <[email-masked]> writes:
> I have a PostgreSQL 17.2 database running on Ubuntu 22.04. I'm trying to
> install the passwordcheck extension, but I keep getting a "file not found"
> error.

> postgres=# create extension passwordcheck;
> ERROR:  extension "passwordcheck" is not available
> DETAIL:  Could not open extension control file
> "/usr/share/postgresql/17/extension/passwordcheck.control": No such file or
> directory.
> HINT:  The extension must first be installed on the system where PostgreSQL
> is running.

> Even though I have installed the postgresql-contrib packages, I still
> cannot see the extension. Below, I have listed the steps I followed. Could
> you help me with this issue?

Are any of the usual extensions present in that directory, or is it
just passwordcheck that's missing?

The most obvious bet is that you installed a postgresql-contrib
package that is not really compatible with the server package
you're using and it put all the extension files somewhere else
than where the server expects to find them.  Try checking the
file listing for the postgresql-contrib package you used.

			regards, tom lane

---

From: Cihat Küçükbağrıaçık <[email-masked]>
Date: Mon, 10 Feb 2025 16:20:07 +0300

Hi Tom,

Thank you for your response. My *postgresql-contrib* package and PostgreSQL
versions appear to be compatible, as shown below. Additionally, other
extensions are installed in the *"/usr/share/postgresql/17/extension/"*
directory.

I have also observed that the *passwordcheck.so* file exists in the
*"/usr/lib/postgresql/17/lib/"* directory. It seems that, for some reason,
when the PostgreSQL service starts, it is unable to read the
*passwordcheck.so* file and create the *passwordcheck.control* file in the
*"/usr/share/postgresql/17/extension/"* directory. I don't think this issue
is due to a missing package; it appears to be a general problem.

Regards.

Tom Lane <[email-masked]>, 10 Şub 2025 Pzt, 00:20 tarihinde şunu yazdı:

> =?UTF-8?B?Q2loYXQgS8O8w6fDvGtiYcSfcsSxYcOnxLFr?= <
> [email-masked]> writes:

---

From: Tom Lane <[email-masked]>
Date: Mon, 10 Feb 2025 10:53:48 -0500

=?UTF-8?B?Q2loYXQgS8O8w6fDvGtiYcSfcsSxYcOnxLFr?= <[email-masked]> writes:
> *"/usr/share/postgresql/17/extension/"* directory.

No, you misunderstand the process.  The .control file is one of the
distributed files for an extension; the server has no ability to
create one.

What we both missed is that *passwordcheck is not an extension*.
It has no SQL-visible objects.  It's just a shared library that
you must preload into the server, as per its documentation.

			regards, tom lane