Version
22.14.0
Platform
Subsystem
No response
What steps will reproduce the bug?
So I am currently building a LFS/BLFS (Linux from scratch etc...) system.
It presently lacks access to the world wide web (aka no working internet
connection with it right now).
I am now building node, version 22.14.0.
The configure command I was using was this:
./configure --prefix=/home/Programs/Node/v22.14.0/
Interestingly the error was as follows:
"python3.13: error while loading shared libraries: libpython3.13.so.1.0: cannot open shared object file: No such file or directory"
Now, I am actually using python 3.11.11, as that one gives me fewer
problems. I do have python 3.13.xx installed too, also under /home/Programs/Python,
though the variant at /usr/bin/python3.13 was from an earlier compile run.
So what is the problem here?
Well - the node build system, being the uber genius that it is, prioritizes
a hardcoded path at /usr/bin/python3.13, while skillfully avoiding (!)
/usr/bin/python. The latter is a symlink that points to the current
python version in use, in my case python3, which in turn is a symlink
that then points to the (almost) correct version:
/home/Programs/Python/Current/bin/python3
Which in turn is a symlink that points at:
python3.11
aka:
/home/Programs/Python/Current/bin/python3.11
For some reason there must be a check that tries to prioritize
on python3.13, despite /usr/bin/python available. My recommendation
is to simply honour /usr/bin/python and check on this FIRST. I can
assure you that it works on my constrained system, so there is
zero need to do a hardcoded check for python3.13 when /usr/bin/python
is available. So possibly the checking order is wrong.
(For those who don't understand the above and still think the
hardcoded /usr/bin/python3.13 is correct - I just removed that,
and node compiles fine, so, node really should not think it is
more clever than the user. I actually was not even aware of
python3.13 being there; should have cleaned up more thoroughly,
but either way node ignoring /usr/bin/python is simply WRONG
from an objective point of view. Other software that depends
on python don't do this by the way.)
How often does it reproduce? Is there a required condition?
This is of course reproducible as the compile-check logic currently used by node is wrong.
What is the expected behavior? Why is that the expected behavior?
Expected behaviour: check for /usr/bin/python first. It works, I can assure you that.
What do you see instead?
Node favouring another python version.
Additional information
No response
Version
22.14.0
Platform
Subsystem
No response
What steps will reproduce the bug?
So I am currently building a LFS/BLFS (Linux from scratch etc...) system.
It presently lacks access to the world wide web (aka no working internet
connection with it right now).
I am now building node, version 22.14.0.
The configure command I was using was this:
Interestingly the error was as follows:
"python3.13: error while loading shared libraries: libpython3.13.so.1.0: cannot open shared object file: No such file or directory"
Now, I am actually using python 3.11.11, as that one gives me fewer
problems. I do have python 3.13.xx installed too, also under /home/Programs/Python,
though the variant at /usr/bin/python3.13 was from an earlier compile run.
So what is the problem here?
Well - the node build system, being the uber genius that it is, prioritizes
a hardcoded path at /usr/bin/python3.13, while skillfully avoiding (!)
/usr/bin/python. The latter is a symlink that points to the current
python version in use, in my case python3, which in turn is a symlink
that then points to the (almost) correct version:
/home/Programs/Python/Current/bin/python3
Which in turn is a symlink that points at:
python3.11
aka:
/home/Programs/Python/Current/bin/python3.11
For some reason there must be a check that tries to prioritize
on python3.13, despite /usr/bin/python available. My recommendation
is to simply honour /usr/bin/python and check on this FIRST. I can
assure you that it works on my constrained system, so there is
zero need to do a hardcoded check for python3.13 when /usr/bin/python
is available. So possibly the checking order is wrong.
(For those who don't understand the above and still think the
hardcoded /usr/bin/python3.13 is correct - I just removed that,
and node compiles fine, so, node really should not think it is
more clever than the user. I actually was not even aware of
python3.13 being there; should have cleaned up more thoroughly,
but either way node ignoring /usr/bin/python is simply WRONG
from an objective point of view. Other software that depends
on python don't do this by the way.)
How often does it reproduce? Is there a required condition?
This is of course reproducible as the compile-check logic currently used by node is wrong.
What is the expected behavior? Why is that the expected behavior?
Expected behaviour: check for /usr/bin/python first. It works, I can assure you that.
What do you see instead?
Node favouring another python version.
Additional information
No response