#!/bin/bash set -eu die() { echo "$*" 1>&2 exit 1 } NODENV_SRC_PATH="/usr/local/psa/admin/plib/modules/nodejs/libexec/nodenv" NODENV_DST_BASE_PATH="/usr/libexec" NODENV_DST_PATH="$NODENV_DST_BASE_PATH/nodenv" NODENV_TARGET="/usr/bin/nodenv" HTTPD_SYSTEMD_CONF_DIR="/usr/lib/systemd/system/httpd.service.d" install_nodenv() { chmod 755 "$NODENV_SRC_PATH"/* cp -rf "$NODENV_SRC_PATH" "$NODENV_DST_BASE_PATH" if [ ! -e "$NODENV_TARGET" ] ; then ln -sf "$NODENV_DST_PATH/nodenv" "$NODENV_TARGET" fi cp "$NODENV_SRC_PATH/nodenv-init-profile" /etc/profile.d/nodenv.sh } remove_nodenv() { local nodenv_realpath=$(realpath "$NODENV_TARGET") if [ "$nodenv_realpath" = "$NODENV_DST_PATH/nodenv" ] ; then rm $NODENV_TARGET fi if [ -d "$NODENV_DST_PATH" ] ; then rm -rf "$NODENV_DST_PATH" fi rm /etc/profile.d/nodenv.sh if [ "$OS_NAME" = "AlmaLinux" ] && [ "$OS_SHORT_VERSION" = "10" ] && [ -f "$HTTPD_SYSTEMD_CONF_DIR/nodejs.conf" ]; then rm "$HTTPD_SYSTEMD_CONF_DIR/nodejs.conf" /bin/systemctl --system daemon-reload fi } do_install() { local packages="passenger" [ "$OS_ARCH" = "x86_64" -o "$OS_ARCH" = "aarch64" ] || die "Unsupported architecture" case "$OS_PKGTYPE" in rpm) packages+=" mod_passenger libatomic" ;; deb) packages+=" libapache2-mod-passenger-plesk libatomic1" ;; *) die "Unsupported package type $OS_PKGTYPE ($OS_NAME $OS_VERSION): only rpm and deb are supported" ;; esac plesk sbin package --install $packages if [ "$OS_NAME" = "AlmaLinux" -a "$OS_SHORT_VERSION" = "10" ]; then mkdir -p "$HTTPD_SYSTEMD_CONF_DIR" cat > "$HTTPD_SYSTEMD_CONF_DIR/nodejs.conf" <