title: Cannot install NPM using curl
body: <p>Receiving this error when attempting to install NPM. Any help on this error is greatly appreciated. </p>
  
  <pre><code>$ curl http://npmjs.org/install.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
  100    85    0    85    0     0   2226      0 --:--:-- --:--:-- --:--:--  4473
  sh: line 1: syntax error near unexpected token `newline'
  sh: line 1: `&lt;html&gt;Moved: &lt;a href="https://npmjs.org/install.sh"&gt;https://npmjs.org/install.sh&lt;/a&gt;'
  </code></pre>
  
  <p>Changed the command from http://... --> https:// and still no luck. </p>
  
  <hr>
  
  <p>Other info: </p>
  
  <p><strong>OS: Mac OSX 10.8.2</strong></p>
  
  <p><strong>CURL: curl 7.24.0 (x86_64-apple-darwin12.0)</strong></p>
  
  <hr>
  
  <p><strong>So I attempted the install as a superuser and was promptly met with this mountain of text. I'm completely lost here.</strong></p>
  
  <pre><code>$ sudo curl https://npmjs.org/install.sh | sh
  Password:
  #!/bin/sh
  
  # A word about this shell script:
  #
  # It must work everywhere, including on systems that lack
  # a /bin/bash, map 'sh' to ksh, ksh97, bash, ash, or zsh,
  # and potentially have either a posix shell or bourne
  # shell living at /bin/sh.
  #
  # See this helpful document on writing portable shell scripts:
  # http://www.gnu.org/s/hello/manual/autoconf/Portable-Shell.html
  #
  # The only shell it won't ever work on is cmd.exe.
  
  if [ "x$0" = "xsh" ]; then
    # run as curl | sh
    # on some systems, you can just do cat&gt;npm-install.sh
        # which is a bit cuter.  But on others, &amp;1 is already closed,
    # so catting to another script file won't do anything.
    curl -s https://npmjs.org/install.sh &gt; npm-install-$$.sh
    sh npm-install-$$.sh
    ret=$?
    rm npm-install-$$.sh
    exit $ret
  fi
  
  # See what "npm_config_*" things there are in the env,
  # and make them permanent.
  # If this fails, it's not such a big deal.
  configures="`env | grep 'npm_config_' | sed -e 's|^npm_config_||g'`"
  
  npm_config_loglevel="error"
  if [ "x$npm_debug" = "x" ]; then
    (exit 0)
  else
    echo "Running in debug mode."
    echo "Note that this requires bash or zsh."
    set -o xtrace
    set -o pipefail
    npm_config_loglevel="verbose"
  fi
  export npm_config_loglevel
  
  # make sure that node exists
  node=`which node 2&gt;&amp;1`
  ret=$?
      if [ $ret -eq 0 ] &amp;&amp; [ -x "$node" ]; then
    (exit 0)
      else
    echo "npm cannot be installed without nodejs." &gt;&amp;2
    echo "Install node first, and then try again." &gt;&amp;2
    echo "" &gt;&amp;2
    echo "Maybe node is installed, but not in the PATH?" &gt;&amp;2
    echo "Note that running as sudo can change envs." &gt;&amp;2
    echo ""
    echo "PATH=$PATH" &gt;&amp;2
    exit $ret
  fi
  
  # set the temp dir
  TMP="${TMPDIR}"
  if [ "x$TMP" = "x" ]; then
    TMP="/tmp"
  fi
  TMP="${TMP}/npm.$$"
  rm -rf "$TMP" || true
  mkdir "$TMP"
  if [ $? -ne 0 ]; then
    echo "failed to mkdir $TMP" &gt;&amp;2
    exit 1
  fi
  
  BACK="$PWD"
  
  ret=0
  tar="${TAR}"
  if [ -z "$tar" ]; then
    tar="${npm_config_tar}"
  fi
  if [ -z "$tar" ]; then
    tar=`which tar 2&gt;&amp;1`
    ret=$?
  fi
  
  if [ $ret -eq 0 ] &amp;&amp; [ -x "$tar" ]; then
    echo "tar=$tar"
    echo "version:"
        $tar --version
    ret=$?
  fi
  
  if [ $ret -eq 0 ]; then
    (exit 0)
  else
    echo "No suitable tar program found."
        exit 1
      fi
  
  
  
  # Try to find a suitable make
  # If the MAKE environment var is set, use that.
  # otherwise, try to find gmake, and then make.
  # If no make is found, then just execute the necessary commands.
  
  # XXX For some reason, make is building all the docs every time.  This
      # is an annoying source of bugs. Figure out why this happens.
  MAKE=NOMAKE
  
  if [ "x$MAKE" = "x" ]; then
    make=`which gmake 2&gt;&amp;1`
    if [ $? -eq 0 ] &amp;&amp; [ -x $make ]; then
  (exit 0)
    else
  make=`which make 2&gt;&amp;1`
  if [ $? -eq 0 ] &amp;&amp; [ -x $make ]; then
    (exit 0)
  else
    make=NOMAKE
  fi
    fi
  else
    make="$MAKE"
  fi
  
  if [ -x "$make" ]; then
    (exit 0)
  else
    # echo "Installing without make. This may fail." &gt;&amp;2
        make=NOMAKE
  fi
  
  # If there's no bash, then don't even try to clean
  if [ -x "/bin/bash" ]; then
    (exit 0)
  else
    clean="no"
  fi
  
  node_version=`"$node" --version 2&gt;&amp;1`
  ret=$?
  if [ $ret -ne 0 ]; then
    echo "You need node to run this program." &gt;&amp;2
    echo "node --version reports: $node_version" &gt;&amp;2
    echo "with exit code = $ret" &gt;&amp;2
    echo "Please install node before continuing." &gt;&amp;2
    exit $ret
  fi
  
  t="${npm_install}"
      if [ -z "$t" ]; then
    # switch based on node version.
    # note that we can only use strict sh-compatible patterns here.
    case $node_version in
      0.[0123].* | v0.[0123].*)
    echo "You are using an outdated and unsupported version of" &gt;&amp;2
    echo "node ($node_version).  Please update node and try again." &gt;&amp;2
    exit 99
    ;;
  v0.[45].* | 0.[45].*)
    echo "install npm@1.0"
    t=1.0
    ;;
  v0.[678].* | 0.[678].*)
    echo "install npm@1.1"
    t=1.1
    ;;
  *)
    echo "install npm@latest"
    t="latest"
    ;;
    esac
  fi
  
  # the npmca cert
  cacert='
  -----BEGIN CERTIFICATE-----
  MIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC
  VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x
  IjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w
  bUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y
  MTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV
  BAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj
  YXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA
  aXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE
  OgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz
  Gn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl
  y0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC
  l7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv
  yNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl
  ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op
  -----END CERTIFICATE-----
  '
  
  echo "$cacert" &gt; "$TMP/cafile.crt"
  cacert="$TMP/cafile.crt"
  
  # need to echo "" after, because Posix sed doesn't treat EOF
  # as an implied end of line.
  url=`(curl -SsL --cacert "$cacert" https://registry.npmjs.org/npm/$t; echo "") \
   | sed -e 's/^.*tarball":"//' \
   | sed -e 's/".*$//'`
  
  ret=$?
  if [ "x$url" = "x" ]; then
    ret=125
    # try without the -e arg to sed.
    url=`(curl -SsL --cacert "$cacert" https://registry.npmjs.org/npm/$t; echo "") \
     | sed 's/^.*tarball":"//' \
     | sed 's/".*$//'`
    ret=$?
    if [ "x$url" = "x" ]; then
  ret=125
    fi
  fi
  if [ $ret -ne 0 ]; then
    echo "Failed to get tarball url for npm/$t" &gt;&amp;2
    exit $ret
  fi
  
  
  echo "fetching: $url" &gt;&amp;2
  
  cd "$TMP" \
    &amp;&amp; curl -SsL --cacert "$cacert" "$url" \
   | $tar -xzf - \
    &amp;&amp; rm "$cacert" \
    &amp;&amp; cd "$TMP"/* \
    &amp;&amp; (req=`"$node" bin/read-package-json.js package.json engines.node`
    if [ -d node_modules ]; then
      "$node" node_modules/semver/bin/semver -v "$node_version" -r "$req"
      ret=$?
    else
      "$node" bin/semver.js -v "$node_version" -r "$req"
      ret=$?
    fi
    if [ $ret -ne 0 ]; then
      echo "You need node $req to run this program." &gt;&amp;2
      echo "node --version reports: $node_version" &gt;&amp;2
      echo "Please upgrade node before continuing." &gt;&amp;2
      exit $ret
    fi) \
    &amp;&amp; (ver=`"$node" bin/read-package-json.js package.json version`
    isnpm10=0
    if [ $ret -eq 0 ]; then
      req=`"$node" bin/read-package-json.js package.json engines.node`
      if [ -d node_modules ]; then
        if "$node" node_modules/semver/bin/semver -v "$ver" -r "1"
        then
          isnpm10=1
        fi
      else
        if "$node" bin/semver -v "$ver" -r "&gt;=1.0"; then
          isnpm10=1
        fi
      fi
    fi
  
    ret=0
    if [ $isnpm10 -eq 1 ] &amp;&amp; [ -f "scripts/clean-old.sh" ]; then
      if [ "x$skipclean" = "x" ]; then
        (exit 0)
      else
        clean=no
      fi
      if [ "x$clean" = "xno" ] \
          || [ "x$clean" = "xn" ]; then
        echo "Skipping 0.x cruft clean" &gt;&amp;2
        ret=0
      elif [ "x$clean" = "xy" ] || [ "x$clean" = "xyes" ]; then
        NODE="$node" /bin/bash "scripts/clean-old.sh" "-y"
        ret=$?
      else
        NODE="$node" /bin/bash "scripts/clean-old.sh" &lt;/dev/tty
        ret=$?
      fi
    fi
  
    if [ $ret -ne 0 ]; then
      echo "Aborted 0.x cleanup.  Exiting." &gt;&amp;2
      exit $ret
    fi) \
    &amp;&amp; (if [ "x$configures" = "x" ]; then
      (exit 0)
    else
      echo "./configure "$configures
      echo "$configures" &gt; npmrc
    fi) \
    &amp;&amp; (if [ "$make" = "NOMAKE" ]; then
      (exit 0)
    elif "$make" uninstall install; then
      (exit 0)
    else
      make="NOMAKE"
    fi
    if [ "$make" = "NOMAKE" ]; then
      "$node" cli.js rm npm -gf
      "$node" cli.js install -gf
    fi) \
    &amp;&amp; cd "$BACK" \
    &amp;&amp; rm -rf "$TMP" \
    &amp;&amp; echo "It worked"
  
  ret=$?
  if [ $ret -ne 0 ]; then
    echo "It failed" &gt;&amp;2
  fi
  exit $ret
  </code></pre>