UPDATE 2023-08-12: xet7 built Node.js 14.21.4 for Windows from source, because Meteor bundle had old Node.js 14.21.3. Updated downloads below.
Node.js v14.21.4
Node.js 14 is EOL of security support by original maintainers of Node.js, so Meteor is providing extended maintenance for Node.js 14:
https://blog.meteor.com/announcing-extended-support-maintenance-for-node-js-14-f9e8381f8bb5
This is Node.js v14.21.4, with security fixes ported from newest Node.js to this Node.js v14.21.4
Source code to fixes is at https://github.com/meteor/node-v14-esm at branch release-v14.x
There are 2 prebuilt Node.js and MongoDB executeable binaries from Meteor. Other Node.js executeable binaries for Linux arm64/s390x and Mac x64 have been built from source by xet7 who is maintainer of WeKan at servers donated to WeKan development:
- Linux arm64 using donated server
https://blog.wekan.team/2019/06/wekan-on-raspi3-and-arm64-server-now-works-and-whats-next-with-cncf/ - Linux s390x using RHEL 8.4 at donated server https://github.com/wekan/wekan/wiki/s390x
- Mac x86_64 built using donated server https://github.com/wekan/wekan/wiki/Mac
- Windows x86_64 built on local laptop at Win11
Using custom Node.js mirror with n Node.js version manager
- Custom source: https://github.com/tj/n#custom-source (info found by asking about it at tj/n#773)
sudo -E
uses existing environment variables, so that this can be used in build script tj/n#584 (comment)
export N_NODE_MIRROR=https://github.com/wekan/node-v14-esm/releases/download
sudo -E n 14.21.4
Or alternatively, have that export at your /root/.bashrc
, so then works sudo n 14.21.4
Mac
nano ~/.zshrc
alias nodejs="node"
export N_NODE_MIRROR=https://github.com/wekan/node-v14-esm/releases/download
export LDFLAGS="-L/usr/local/n/versions/node/14.21.4/lib"
export CPPFLAGS="-I/usr/local/n/versions/node/14.21.4/bin/include"
export PATH="/usr/local/n/versions/node/14.21.4/bin:/opt/homebrew/opt/make/libexec/gnubin:$PATH"
Examples how this Node.js version is used at WeKan
- Upgrade WeKan to Node.js 14.21.4:
- Build scripts for converting x64 bundle for other CPU:
- How to run WeKan on various CPU:
- x64/arm64/s390x https://github.com/wekan/wekan/wiki/Raspberry-Pi
- Windows x64 https://github.com/wekan/wekan/wiki/Offline
- Mac https://github.com/wekan/wekan/wiki/Mac
- Hopefully sometime it will be possible to build Meteor on arm64 meteor/meteor#12160 (comment)
Prebuilt binaries for Win/Mac/Linux copied from Meteor Bundle
Node.js 14.21.4 binary from Meteor Bundle URL figured out by xet7 from:
- https://github.com/meteor/meteor/blob/release-2.13/meteor#L74 for Linux x64 and Mac arm64
Meteor included old Node.js 14.21.3 binary in Windows bundle, so xet7 built 14.21.4 for Windows from source.
- https://github.com/meteor/meteor/blob/release-2.13/scripts/windows/download-dev-bundle.ps1#L19
- https://github.com/meteor/meteor/blob/release-2.13/scripts/windows/dev-bundle-lib.psm1#L30
Building Node.js release archives
1) Download Meteor Bundle from https://d3sqy0vbqsdhku.cloudfront.net/ and after that added filename
- Windows x64: dev_bundle_windows_x64_14.21.4.0.tar.gz
- Linux x64: dev_bundle_Linux_x86_64_14.21.4.0.tar.gz
- Mac arm64: dev_bundle_Darwin_arm64_14.21.4.0.tar.gz
- Copy of bundles also at https://releases.wekan.team/dev/meteor-dev-bundle/
2) Unarcive them to node directories, for example Linux x64:
mkdir node-v14.21.4-linux-x64
cd node-v14.21.4-linux-x64
tar -xzvf ../dev_bundle_Linux_x86_64_14.21.4.0.tar.gz
cd ..
3) Copy Linux x64 directory to other Linux where is not prebuilt binary:
cp -pR node-v14.21.4-linux-x64 node-v14.21.4-linux-arm64
cp -pR node-v14.21.4-linux-x64 node-v14.21.4-linux-s390x
4) Build Node.js at other CPU Linux:
Compiling Node.js at Linux. To make -j4 you can change amount of CPUs you see with nproc at Linux.
sudo apt-get -y install build-essential
git clone --branch release-v14.x --depth 1 https://github.com/meteor/node-v14-esm
cd node-v14-esm
./configure --prefix="/path/" --with-intl=full-icu && make -j4
Then Node.js executeable binary will at out/Release/node .
5) Copy Linux arm64 binary to archive:
cp node-v14-esm/out/release/node node-v14.21.4-linux-arm64/bin/node
6) Compiling at Mac for M1. This binary already is at Meteor bundle.
To make -j8 you can change amount of CPUs you see with sysctl -n hw.physicalcpu at Mac.
git clone --branch release-v14.x --depth 1 https://github.com/meteor/node-v14-esm
cd node-v14-esm
./configure --prefix="/path/" --with-intl=full-icu && make -j8
7) Compiling at Mac for x86_64 with Rosetta
To "make -j8" you can change amount of CPUs you see with "sysctl -n hw.physicalcpu" at Mac.
git clone --branch release-v14.x --depth 1 https://github.com/meteor/node-v14-esm
cd node-v14-esm
softwareupdate --install-rosetta --agree-to-license
arch -x86_64 ./configure --prefix="/path/" --with-intl=full-icu && arch -x86_64 make -j8
sudo apt-get -y install zip unzip p7zip-full
8) Copy Mac x64 binary to archive:
cp node-v14-esm/out/release/node node-v14.21.4-darwin-x64/bin/node
9) Archive packages
tar.gz for Mac and Linux
tar -czf node-v14.21.4-darwin-arm64.tar.gz node-v14.21.4-darwin-arm64/
tar -czf node-v14.21.4-darwin-x64.tar.gz node-v14.21.4-darwin-x64/
tar -czf node-v14.21.4-linux-arm64.tar.gz node-v14.21.4-linux-arm64/
tar -czf node-v14.21.4-linux-s390x.tar.gz node-v14.21.4-linux-s390x/
tar -czf node-v14.21.4-linux-x64.tar.gz node-v14.21.4-linux-x64/
tar.xz for Mac and Linux
tar cfJ node-v14.21.4-darwin-arm64.tar.xz node-v14.21.4-darwin-arm64/
tar cfJ node-v14.21.4-darwin-x64.tar.xz node-v14.21.4-darwin-x64/
tar cfJ node-v14.21.4-linux-arm64.tar.xz node-v14.21.4-linux-arm64/
tar cfJ node-v14.21.4-linux-s390x.tar.xz node-v14.21.4-linux-s390x/
tar cfJ node-v14.21.4-linux-x64.tar.xz node-v14.21.4-linux-x64/
zip and 7z for Windows. This was not used, because building Node.js at Windows also creates archives.
zip -r node-v14.21.4-win-x64.zip node-v14.21.4-win-x64
7z a node-v14.21.4-win-x64.7z node-v14.21.4-win-x64