netbox-community / netbox

The premier source of truth powering network automation. Open source under Apache 2. Public demo: https://demo.netbox.dev
http://netboxlabs.com/oss/netbox/
Apache License 2.0
15.23k stars 2.47k forks source link

It's no possible to install NetBox in AlmaLinux 9.4 (couldn't run 'pg_config' --includedir: [Errno 2] No such file or directory: 'pg_config') #16157

Closed Deicidium closed 4 weeks ago

Deicidium commented 1 month ago

Deployment Type

Self-hosted

NetBox Version

v4.0.2

Python Version

3.11

Steps to Reproduce

Execute the command:

On AlmaLinux 9.4 with Python 3.11 installed from official repos:

sudo PYTHON=/usr/bin/python3.11 ./upgrade.sh

pip packages psycopg2-binary, psycopg2 are installed. PostgreSQL 16 installed from the official repo, libpq-devel and libpq-devel are installed too.

Path /usr/pgsql-16/bin/pg_config available system wide.

/tmp are writable with defaults configuration, SELinux are permissive, Fapolicyd are permissive too.

Expected Behavior

NetBox 4.0.2 Installed

Observed Behavior

The installation fails with the message:

nstalling build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error

× Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [8 lines of output] running dist_info creating /tmp/pip-modern-metadata-o3bwabcx/psycopg_c.egg-info writing /tmp/pip-modern-metadata-o3bwabcx/psycopg_c.egg-info/PKG-INFO writing dependency_links to /tmp/pip-modern-metadata-o3bwabcx/psycopg_c.egg-info/dependency_links.txt writing top-level names to /tmp/pip-modern-metadata-o3bwabcx/psycopg_c.egg-info/top_level.txt writing manifest file '/tmp/pip-modern-metadata-o3bwabcx/psycopg_c.egg-info/SOURCES.txt' couldn't run 'pg_config' --includedir: [Errno 2] No such file or directory: 'pg_config' error: [Errno 2] No such file or directory: 'pg_config' [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed

× Encountered error while generating package metadata. ╰─> See above for output.

note: This is an issue with the package mentioned above, not pip. hint: See above for details.

arthanson commented 1 month ago

@Deicidium it looks like it is failing on installing the new psycopg3 package - pyscopg2 is replaced by psycopg3 in NetBox 4, it is in requirements.txt as: psycopg[c,pool]==3.1.19

Can you please try installing it directly with pip, see https://www.psycopg.org/psycopg3/docs/basic/install.html, there should be a package for AlmaLinux.

Deicidium commented 4 weeks ago

The Installation doesn't work with the package python3-psycopg3-3.1.18-4.el9.noarch :

Name : python3-psycopg3 Version : 3.1.18 Release : 4.el9 Architecture : noarch Size : 1.4 M Source : python-psycopg3-3.1.18-4.el9.src.rpm Repository : @System From repo : epel Summary : %{Summary} URL : https://www.psycopg.org/psycopg3/ License : LGPL-3.0-only Description : %{description}

Installing with pip doesn't work either:

/usr/bin/python3.11 -m pip install psycopg

/usr/bin/python3.11 -m pip install psycopg-binary

The output:

Using cached psycopg_c-3.1.19.tar.gz (562 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error

× Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [8 lines of output] running dist_info creating /tmp/pip-modern-metadata-8g8_wr0h/psycopg_c.egg-info writing /tmp/pip-modern-metadata-8g8_wr0h/psycopg_c.egg-info/PKG-INFO writing dependency_links to /tmp/pip-modern-metadata-8g8_wr0h/psycopg_c.egg-info/dependency_links.txt writing top-level names to /tmp/pip-modern-metadata-8g8_wr0h/psycopg_c.egg-info/top_level.txt writing manifest file '/tmp/pip-modern-metadata-8g8_wr0h/psycopg_c.egg-info/SOURCES.txt' couldn't run 'pg_config' --includedir: [Errno 2] No such file or directory: 'pg_config' error: [Errno 2] No such file or directory: 'pg_config' [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed

× Encountered error while generating package metadata. ╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.

ekrichbaum commented 4 weeks ago

You need to install another base library to your OS. The name varies a little from platform to platform but is probably something like libpq-devel or similar. you can "dnf whatprovides pg_config" or similar to find it from your distro.

Deicidium commented 4 weeks ago

Solved:

Packages postgresql16-devel and libpq-devel are mutually exclusive. If one is installed, it does not allow the installation of the other and fails without an apparent error message. The solution was to install only package libpq-devel.

Th3Bard commented 2 days ago

@Deicidium would you be able to provide the exact steps you took to resolve this? I have been unsuccessful getting passed this error. I am getting the EXACT same issue you posted here.

RHEL 8.9

upgrading from 3.7.0 > 4.0.5 (though I also tried upgrading to 3.7.8 first and ended up in the same place).

error: [Errno 2] No such file or directory: 'pg_config'

sudo find / -name pg_config 2>/dev/null yields /usr/pgsql-15/bin/pg_config /usr/pgsql-12/bin/pg_config

which pg_config yields: /usr/pgsql-15/bin/pg_config

I have removed postgresql15-devel and installed libpq-devel and I land in the same place.

Any help is GREATLY appreciated!