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