golang.org/x/build@v0.0.0-20240506185731-218518f32b70/env/js-wasm-node18/setup_18.x (about) 1 #!/bin/bash 2 3 # Discussion, issues and change requests at: 4 # https://github.com/nodesource/distributions 5 # 6 # Script to install the NodeSource Node.js 18.x repo onto a 7 # Debian or Ubuntu system. 8 # 9 # Run as root or insert `sudo -E` before `bash`: 10 # 11 # curl -sL https://deb.nodesource.com/setup_18.x | bash - 12 # or 13 # wget -qO- https://deb.nodesource.com/setup_18.x | bash - 14 # 15 # CONTRIBUTIONS TO THIS SCRIPT 16 # 17 # This script is built from a template in 18 # https://github.com/nodesource/distributions/tree/master/deb/src 19 # please don't submit pull requests against the built scripts. 20 # 21 22 23 export DEBIAN_FRONTEND=noninteractive 24 SCRSUFFIX="_18.x" 25 NODENAME="Node.js 18.x" 26 NODEREPO="node_18.x" 27 NODEPKG="nodejs" 28 29 print_status() { 30 echo 31 echo "## $1" 32 echo 33 } 34 35 if test -t 1; then # if terminal 36 ncolors=$(which tput > /dev/null && tput colors) # supports color 37 if test -n "$ncolors" && test $ncolors -ge 8; then 38 termcols=$(tput cols) 39 bold="$(tput bold)" 40 underline="$(tput smul)" 41 standout="$(tput smso)" 42 normal="$(tput sgr0)" 43 black="$(tput setaf 0)" 44 red="$(tput setaf 1)" 45 green="$(tput setaf 2)" 46 yellow="$(tput setaf 3)" 47 blue="$(tput setaf 4)" 48 magenta="$(tput setaf 5)" 49 cyan="$(tput setaf 6)" 50 white="$(tput setaf 7)" 51 fi 52 fi 53 54 print_bold() { 55 title="$1" 56 text="$2" 57 58 echo 59 echo "${red}================================================================================${normal}" 60 echo "${red}================================================================================${normal}" 61 echo 62 echo -e " ${bold}${yellow}${title}${normal}" 63 echo 64 echo -en " ${text}" 65 echo 66 echo "${red}================================================================================${normal}" 67 echo "${red}================================================================================${normal}" 68 } 69 70 bail() { 71 echo 'Error executing command, exiting' 72 exit 1 73 } 74 75 exec_cmd_nobail() { 76 echo "+ $1" 77 bash -c "$1" 78 } 79 80 exec_cmd() { 81 exec_cmd_nobail "$1" || bail 82 } 83 84 node_deprecation_warning() { 85 if [[ "X${NODENAME}" == "Xio.js 1.x" || 86 "X${NODENAME}" == "Xio.js 2.x" || 87 "X${NODENAME}" == "Xio.js 3.x" || 88 "X${NODENAME}" == "XNode.js 0.10" || 89 "X${NODENAME}" == "XNode.js 0.12" || 90 "X${NODENAME}" == "XNode.js 4.x LTS Argon" || 91 "X${NODENAME}" == "XNode.js 5.x" || 92 "X${NODENAME}" == "XNode.js 6.x LTS Boron" || 93 "X${NODENAME}" == "XNode.js 7.x" || 94 "X${NODENAME}" == "XNode.js 8.x LTS Carbon" || 95 "X${NODENAME}" == "XNode.js 9.x" || 96 "X${NODENAME}" == "XNode.js 10.x" || 97 "X${NODENAME}" == "XNode.js 11.x" || 98 "X${NODENAME}" == "XNode.js 12.x" || 99 "X${NODENAME}" == "XNode.js 13.x" || 100 "X${NODENAME}" == "XNode.js 15.x" || 101 "X${NODENAME}" == "XNode.js 17.x" ]]; then 102 103 print_bold \ 104 " DEPRECATION WARNING " "\ 105 ${bold}${NODENAME} is no longer actively supported!${normal} 106 107 ${bold}You will not receive security or critical stability updates${normal} for this version. 108 109 You should migrate to a supported version of Node.js as soon as possible. 110 Use the installation script that corresponds to the version of Node.js you 111 wish to install. e.g. 112 113 * ${green}https://deb.nodesource.com/setup_14.x — Node.js 14 \"Fermium\"${normal} 114 * ${green}https://deb.nodesource.com/setup_16.x — Node.js 16 \"Gallium\"${normal} 115 * ${green}https://deb.nodesource.com/setup_18.x — Node.js 18 LTS \"Hydrogen\"${normal} (recommended) 116 * ${green}https://deb.nodesource.com/setup_19.x — Node.js 19 \"Nineteen\"${normal} (current) 117 118 Please see ${bold}https://github.com/nodejs/Release${normal} for details about which 119 version may be appropriate for you. 120 121 The ${bold}NodeSource${normal} Node.js distributions repository contains 122 information both about supported versions of Node.js and supported Linux 123 distributions. To learn more about usage, see the repository: 124 ${bold}https://github.com/nodesource/distributions${normal} 125 " 126 echo 127 echo "Continuing in 20 seconds ..." 128 echo 129 sleep 20 130 fi 131 } 132 133 script_deprecation_warning() { 134 if [ "X${SCRSUFFIX}" == "X" ]; then 135 print_bold \ 136 " SCRIPT DEPRECATION WARNING " "\ 137 This script, located at ${bold}https://deb.nodesource.com/setup${normal}, used to 138 install Node.js 0.10, is deprecated and will eventually be made inactive. 139 140 You should use the script that corresponds to the version of Node.js you 141 wish to install. e.g. 142 143 * ${green}https://deb.nodesource.com/setup_14.x — Node.js 14 \"Fermium\"${normal} 144 * ${green}https://deb.nodesource.com/setup_16.x — Node.js 16 \"Gallium\"${normal} 145 * ${green}https://deb.nodesource.com/setup_18.x — Node.js 18 LTS \"Hydrogen\"${normal} (recommended) 146 * ${green}https://deb.nodesource.com/setup_19.x — Node.js 19 \"Nineteen\"${normal} (current) 147 148 Please see ${bold}https://github.com/nodejs/Release${normal} for details about which 149 version may be appropriate for you. 150 151 The ${bold}NodeSource${normal} Node.js Linux distributions GitHub repository contains 152 information about which versions of Node.js and which Linux distributions 153 are supported and how to use the install scripts. 154 ${bold}https://github.com/nodesource/distributions${normal} 155 " 156 157 echo 158 echo "Continuing in 20 seconds (press Ctrl-C to abort) ..." 159 echo 160 sleep 20 161 fi 162 } 163 164 setup() { 165 166 script_deprecation_warning 167 node_deprecation_warning 168 169 print_status "Installing the NodeSource ${NODENAME} repo..." 170 171 if $(uname -m | grep -Eq ^armv6); then 172 print_status "You appear to be running on ARMv6 hardware. Unfortunately this is not currently supported by the NodeSource Linux distributions. Please use the 'linux-armv6l' binary tarballs available directly from nodejs.org for Node.js 4 and later." 173 exit 1 174 fi 175 176 PRE_INSTALL_PKGS="" 177 178 # Check that HTTPS transport is available to APT 179 # (Check snaked from: https://get.docker.io/ubuntu/) 180 181 if [ ! -e /usr/lib/apt/methods/https ]; then 182 PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} apt-transport-https" 183 fi 184 185 if [ ! -x /usr/bin/lsb_release ]; then 186 PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} lsb-release" 187 fi 188 189 if [ ! -x /usr/bin/curl ] && [ ! -x /usr/bin/wget ]; then 190 PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} curl" 191 fi 192 193 # Used by apt-key to add new keys 194 195 if [ ! -x /usr/bin/gpg ]; then 196 PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} gnupg" 197 fi 198 199 # Populating Cache 200 print_status "Populating apt-get cache..." 201 exec_cmd 'apt-get update' 202 203 if [ "X${PRE_INSTALL_PKGS}" != "X" ]; then 204 print_status "Installing packages required for setup:${PRE_INSTALL_PKGS}..." 205 # This next command needs to be redirected to /dev/null or the script will bork 206 # in some environments 207 exec_cmd "apt-get install -y${PRE_INSTALL_PKGS} > /dev/null 2>&1" 208 fi 209 210 IS_PRERELEASE=$(lsb_release -d | grep 'Ubuntu .*development' >& /dev/null; echo $?) 211 if [[ $IS_PRERELEASE -eq 0 ]]; then 212 print_status "Your distribution, identified as \"$(lsb_release -d -s)\", is a pre-release version of Ubuntu. NodeSource does not maintain official support for Ubuntu versions until they are formally released. You can try using the manual installation instructions available at https://github.com/nodesource/distributions and use the latest supported Ubuntu version name as the distribution identifier, although this is not guaranteed to work." 213 exit 1 214 fi 215 216 DISTRO=$(lsb_release -c -s) 217 218 check_alt() { 219 if [ "X${DISTRO}" == "X${2}" ]; then 220 echo 221 echo "## You seem to be using ${1} version ${DISTRO}." 222 echo "## This maps to ${3} \"${4}\"... Adjusting for you..." 223 DISTRO="${4}" 224 fi 225 } 226 227 check_alt "Astra Linux" "orel" "Debian" "stretch" 228 check_alt "BOSS" "anokha" "Debian" "wheezy" 229 check_alt "BOSS" "anoop" "Debian" "jessie" 230 check_alt "BOSS" "drishti" "Debian" "stretch" 231 check_alt "BOSS" "unnati" "Debian" "buster" 232 check_alt "BOSS" "urja" "Debian" "bullseye" 233 check_alt "bunsenlabs" "bunsen-hydrogen" "Debian" "jessie" 234 check_alt "bunsenlabs" "helium" "Debian" "stretch" 235 check_alt "bunsenlabs" "lithium" "Debian" "buster" 236 check_alt "Devuan" "jessie" "Debian" "jessie" 237 check_alt "Devuan" "ascii" "Debian" "stretch" 238 check_alt "Devuan" "beowulf" "Debian" "buster" 239 check_alt "Devuan" "chimaera" "Debian" "bullseye" 240 check_alt "Devuan" "ceres" "Debian" "sid" 241 check_alt "Deepin" "panda" "Debian" "sid" 242 check_alt "Deepin" "unstable" "Debian" "sid" 243 check_alt "Deepin" "stable" "Debian" "buster" 244 check_alt "Deepin" "apricot" "Debian" "buster" 245 check_alt "elementaryOS" "luna" "Ubuntu" "precise" 246 check_alt "elementaryOS" "freya" "Ubuntu" "trusty" 247 check_alt "elementaryOS" "loki" "Ubuntu" "xenial" 248 check_alt "elementaryOS" "juno" "Ubuntu" "bionic" 249 check_alt "elementaryOS" "hera" "Ubuntu" "bionic" 250 check_alt "elementaryOS" "odin" "Ubuntu" "focal" 251 check_alt "elementaryOS" "jolnir" "Ubuntu" "focal" 252 check_alt "Kali" "sana" "Debian" "jessie" 253 check_alt "Kali" "kali-rolling" "Debian" "bullseye" 254 check_alt "Linux Mint" "maya" "Ubuntu" "precise" 255 check_alt "Linux Mint" "qiana" "Ubuntu" "trusty" 256 check_alt "Linux Mint" "rafaela" "Ubuntu" "trusty" 257 check_alt "Linux Mint" "rebecca" "Ubuntu" "trusty" 258 check_alt "Linux Mint" "rosa" "Ubuntu" "trusty" 259 check_alt "Linux Mint" "sarah" "Ubuntu" "xenial" 260 check_alt "Linux Mint" "serena" "Ubuntu" "xenial" 261 check_alt "Linux Mint" "sonya" "Ubuntu" "xenial" 262 check_alt "Linux Mint" "sylvia" "Ubuntu" "xenial" 263 check_alt "Linux Mint" "tara" "Ubuntu" "bionic" 264 check_alt "Linux Mint" "tessa" "Ubuntu" "bionic" 265 check_alt "Linux Mint" "tina" "Ubuntu" "bionic" 266 check_alt "Linux Mint" "tricia" "Ubuntu" "bionic" 267 check_alt "Linux Mint" "ulyana" "Ubuntu" "focal" 268 check_alt "Linux Mint" "ulyssa" "Ubuntu" "focal" 269 check_alt "Linux Mint" "uma" "Ubuntu" "focal" 270 check_alt "Linux Mint" "una" "Ubuntu" "focal" 271 check_alt "Linux Mint" "vanessa" "Ubuntu" "jammy" 272 check_alt "Liquid Lemur" "lemur-3" "Debian" "stretch" 273 check_alt "LMDE" "betsy" "Debian" "jessie" 274 check_alt "LMDE" "cindy" "Debian" "stretch" 275 check_alt "LMDE" "debbie" "Debian" "buster" 276 check_alt "LMDE" "elsie" "Debian" "bullseye" 277 check_alt "MX Linux 17" "Horizon" "Debian" "stretch" 278 check_alt "MX Linux 18" "Continuum" "Debian" "stretch" 279 check_alt "MX Linux 19" "patito feo" "Debian" "buster" 280 check_alt "MX Linux 21" "wildflower" "Debian" "bullseye" 281 check_alt "Pardus" "onyedi" "Debian" "stretch" 282 check_alt "Parrot" "ara" "Debian" "bullseye" 283 check_alt "PureOS" "green" "Debian" "sid" 284 check_alt "PureOS" "amber" "Debian" "buster" 285 check_alt "PureOS" "byzantium" "Debian" "bullseye" 286 check_alt "SolydXK" "solydxk-9" "Debian" "stretch" 287 check_alt "Sparky Linux" "Tyche" "Debian" "stretch" 288 check_alt "Sparky Linux" "Nibiru" "Debian" "buster" 289 check_alt "Sparky Linux" "Po-Tolo" "Debian" "bullseye" 290 check_alt "Tanglu" "chromodoris" "Debian" "jessie" 291 check_alt "Trisquel" "toutatis" "Ubuntu" "precise" 292 check_alt "Trisquel" "belenos" "Ubuntu" "trusty" 293 check_alt "Trisquel" "flidas" "Ubuntu" "xenial" 294 check_alt "Trisquel" "etiona" "Ubuntu" "bionic" 295 check_alt "Ubilinux" "dolcetto" "Debian" "stretch" 296 check_alt "Uruk GNU/Linux" "lugalbanda" "Ubuntu" "xenial" 297 298 if [ "X${DISTRO}" == "Xdebian" ]; then 299 print_status "Unknown Debian-based distribution, checking /etc/debian_version..." 300 NEWDISTRO=$([ -e /etc/debian_version ] && cut -d/ -f1 < /etc/debian_version) 301 if [ "X${NEWDISTRO}" == "X" ]; then 302 print_status "Could not determine distribution from /etc/debian_version..." 303 else 304 DISTRO=$NEWDISTRO 305 print_status "Found \"${DISTRO}\" in /etc/debian_version..." 306 fi 307 fi 308 309 print_status "Confirming \"${DISTRO}\" is supported..." 310 311 if [ -x /usr/bin/curl ]; then 312 exec_cmd_nobail "curl -sLf -o /dev/null 'https://deb.nodesource.com/${NODEREPO}/dists/${DISTRO}/Release'" 313 RC=$? 314 else 315 exec_cmd_nobail "wget -qO /dev/null -o /dev/null 'https://deb.nodesource.com/${NODEREPO}/dists/${DISTRO}/Release'" 316 RC=$? 317 fi 318 319 if [[ $RC != 0 ]]; then 320 print_status "Your distribution, identified as \"${DISTRO}\", is not currently supported, please contact NodeSource at https://github.com/nodesource/distributions/issues if you think this is incorrect or would like your distribution to be considered for support" 321 exit 1 322 fi 323 324 if [ -f "/etc/apt/sources.list.d/chris-lea-node_js-$DISTRO.list" ]; then 325 print_status 'Removing Launchpad PPA Repository for NodeJS...' 326 327 exec_cmd_nobail 'add-apt-repository -y -r ppa:chris-lea/node.js' 328 exec_cmd "rm -f /etc/apt/sources.list.d/chris-lea-node_js-${DISTRO}.list" 329 fi 330 331 print_status 'Adding the NodeSource signing key to your keyring...' 332 keyring='/usr/share/keyrings' 333 node_key_url="https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 334 local_node_key="$keyring/nodesource.gpg" 335 336 if [ -x /usr/bin/curl ]; then 337 exec_cmd "curl -s $node_key_url | gpg --dearmor | tee $local_node_key >/dev/null" 338 else 339 exec_cmd "wget -q -O - $node_key_url | gpg --dearmor | tee $local_node_key >/dev/null" 340 fi 341 342 print_status "Creating apt sources list file for the NodeSource ${NODENAME} repo..." 343 344 exec_cmd "echo 'deb [signed-by=$local_node_key] https://deb.nodesource.com/${NODEREPO} ${DISTRO} main' > /etc/apt/sources.list.d/nodesource.list" 345 exec_cmd "echo 'deb-src [signed-by=$local_node_key] https://deb.nodesource.com/${NODEREPO} ${DISTRO} main' >> /etc/apt/sources.list.d/nodesource.list" 346 347 print_status 'Running `apt-get update` for you...' 348 349 exec_cmd 'apt-get update' 350 351 yarn_site='https://dl.yarnpkg.com/debian' 352 yarn_key_url="$yarn_site/pubkey.gpg" 353 local_yarn_key="$keyring/yarnkey.gpg" 354 355 print_status """Run \`${bold}sudo apt-get install -y ${NODEPKG}${normal}\` to install ${NODENAME} and npm 356 ## You may also need development tools to build native addons: 357 sudo apt-get install gcc g++ make 358 ## To install the Yarn package manager, run: 359 curl -sL $yarn_key_url | gpg --dearmor | sudo tee $local_yarn_key >/dev/null 360 echo \"deb [signed-by=$local_yarn_key] $yarn_site stable main\" | sudo tee /etc/apt/sources.list.d/yarn.list 361 sudo apt-get update && sudo apt-get install yarn 362 """ 363 364 } 365 366 ## Defer setup until we have the complete script 367 setup