You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Node 22 installer installs on incompatible OS version #58427
Darwin 18.7.0 Darwin Kernel Version 18.7.0: Tue Jun 22 19:37:08 PDT 2021; root:xnu-4903.278.70~1/RELEASE_X86_64 x86_64
Subsystem
No response
What steps will reproduce the bug?
Install nodejs 22 on macOS 10.14 Mojave
Run nom
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
Node and npm installed and working
What do you see instead?
Node and npm installed, npm not working
Additional information
Today I wanted to update my Node installation. So I downloaded the LTS installer, which did install and run perfectly fine. Then I ran npm which crashes immediately
dyld: lazy symbol binding failed: Symbol not found: __ZNKSt3__14__fs10filesystem4path13__parent_pathEv
Referenced from: /usr/local/bin/node (which was built for Mac OS X 11.0)
Expected in: /usr/lib/libc++.1.dylib
dyld: Symbol not found: __ZNKSt3__14__fs10filesystem4path13__parent_pathEv
Referenced from: /usr/local/bin/node (which was built for Mac OS X 11.0)
Expected in: /usr/lib/libc++.1.dylib
So apparently node and npm are not compatible with macOS 10.14 anymore. First of all that's complete nonsense. I don't understand why node is built for newest versions only on mac but does run on older linux versions. There is no reason for node to require macOS 11, as there are none of the latest greatest and most flashy frameworks being used.
Now I have a completely broken installation.
If you're unable to support a particular system OS the installer should not install it on that version.
Well, there is a pre-built version that goes down to 10.13. If it's not possible I wonder how it's possible.
Still, the concern I'm raising is an installer installing software that cannot run on the system, breaking an existing installation. The macOS installer system is capable of checking those things prior to installation, which should be done here.
The minimum requirement was bumped because of toolchain issues. As long as nothing uses C++20 libc++ features it probably works (as in: build on newer macOS, run on older macOS) but that's very shaky ground.
I don't think this is going to change so I'm going to go ahead and close this. Perhaps it's possible to instruct pkgbuild or productbuild to produce an installer that only installs on compatible macOS, send a pull request if you figure out a way. The relevant files are in tools/macos-installer.
Well, I'm not going to do much here, as it will not help me at all. I will not attempt to install it again now I know it's not working. It's simply wrong to not check for compatibility prior to installation and I think it's the maintainers responsibility to do these things right. Simply refusing responsibility and saying "not going to do anything, that's a non issue for me" isn't a good way to approach this.
pkgbuild has an option –min-os-version
--min-os-version os-version
Specifying a minimum OS version allows the system to create a package with the latest supported features. Some features can have major benefits such as a better compression ratio. However, specifying a minimum version will make the package require that version when presented to productbuild(1). Some of the options in this tool require this argument to be provided.
Activity
aduh95 commentedon May 22, 2025
/cc @nodejs/build
See #49164 for context.
juanarbol commentedon May 23, 2025
Linux is way more stable by design. Also, we don't control Darwin kernel API and release cycles.
Although, feel free to fix it. That's the FOSS beauty.
julian-weinert commentedon May 23, 2025
Well, there is a pre-built version that goes down to 10.13. If it's not possible I wonder how it's possible.
Still, the concern I'm raising is an installer installing software that cannot run on the system, breaking an existing installation. The macOS installer system is capable of checking those things prior to installation, which should be done here.
bnoordhuis commentedon May 23, 2025
The minimum requirement was bumped because of toolchain issues. As long as nothing uses C++20 libc++ features it probably works (as in: build on newer macOS, run on older macOS) but that's very shaky ground.
I don't think this is going to change so I'm going to go ahead and close this. Perhaps it's possible to instruct pkgbuild or productbuild to produce an installer that only installs on compatible macOS, send a pull request if you figure out a way. The relevant files are in
tools/macos-installer.julian-weinert commentedon May 23, 2025
Well, I'm not going to do much here, as it will not help me at all. I will not attempt to install it again now I know it's not working. It's simply wrong to not check for compatibility prior to installation and I think it's the maintainers responsibility to do these things right. Simply refusing responsibility and saying "not going to do anything, that's a non issue for me" isn't a good way to approach this.
pkgbuild has an option –min-os-version
--min-os-version os-version
Specifying a minimum OS version allows the system to create a package with the latest supported features. Some features can have major benefits such as a better compression ratio. However, specifying a minimum version will make the package require that version when presented to productbuild(1). Some of the options in this tool require this argument to be provided.