Installing From Tarballs
Node.js is a dependency that I usually need to install from tarballs due to it being out of date in most package managers. Here's the unit I use to do that:
#node_install.sysu
# [ install.sh ]
meta() params !version:string;
deps() {
dep ./download_source.sh version=$version -> !dir:node_dir:string;
dep pkg.sh name=make
dep pkg.sh name=build-essential
}
check() {
if which node >/dev/null; then
present
fi
}
apply {
cd $node_dir
./configure
make
sudo make install
}
remove {
cd $node_dir
sudo make uninstall
}
# [ download_source.sh ]
meta() params !verson:string;
deps() {
dep pkg.sh name=curl
}
check() {
if [ -d /tmp/node_build/node-$version ]; then
present
fi
}
apply() {
mkdir -p /tmp/node_build
cd /tmp/node_build
url="https://github.com/nodejs/node/archive/refs/tags/${version}.tar.gz"
curl -L $url | tar -xz
cd node-$version
emit_value dir `pwd`
}
remove() {
rm -rf /tmp/node_build
}
This unitfile splits the job into two units so the node source isn't unnecessarily downloaded if there are errors.
It can be run with sysunit apply ./node_install.sysu/install.sh version=14.17.0