update-nodejs.run 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #!/bin/bash
  2. # JayVii
  3. # https://notabug.org/jayvii
  4. # update-NodeJS v0.1
  5. # setting variables
  6. NODE_VER=$1
  7. BUILD_DIR=$2
  8. CLEAN=$3
  9. STEP=0
  10. # show help, if no options are set
  11. if [ -z "$NODE_VER" ]; then
  12. echo "########## [UPDATE-NODEJS HELP]"
  13. echo "#"
  14. echo "# ./update-nodejs.run [VERSION] [BUILD-DIR] [CLEAN]"
  15. echo "#"
  16. echo "##### [VERSION]"
  17. echo "# specifies, which NodeJS-Version to install"
  18. echo "# ex: './update-nodejs.run 5.5.0'"
  19. echo "# Find all releases at https://github.com/nodejs/node/archive/"
  20. echo "#"
  21. echo "##### [BUILD-DIR]"
  22. echo "# specifies the PARENT build-directory to use"
  23. echo "# ex: './update-nodejs.run 5.5.0 ~/my_packages/node' will build in '~/my_packages/node/node-5.5.0'"
  24. echo "# Default: ~/build/nodejs"
  25. echo "#"
  26. echo "##### [CLEAN]"
  27. echo "# determines, wether to remove the build-dir after install"
  28. echo "# ex: './update-nodejs.run 5.5.0 YES'"
  29. echo "# 'YES' will remove it, anything else means 'NO'"
  30. echo "# Default: NO"
  31. echo "#"
  32. echo "##### Dependencies:"
  33. echo "# https://github.com/nodejs/node#build"
  34. echo "# gcc [>= 4.8]"
  35. echo "# g++ [>= 4.8]"
  36. echo "# clang [>= 3.8]"
  37. echo "# clang++ [>= 3.8]"
  38. echo "# python [= 2.7]"
  39. echo "# GNU make [>= 3.8.1]"
  40. echo "# tar & wget / git"
  41. exit 1
  42. fi
  43. # control output
  44. echo ""
  45. echo "##############################################################"
  46. echo "Start building process in 10 seconds."
  47. echo "Version: ${NODE_VER}"
  48. echo "Directory: ${BUILD_DIR}"
  49. echo "Cleaning: ${CLEAN}"
  50. echo ""
  51. echo "Is this correct? (CTRL + C) to interrupt."
  52. echo "##############################################################"
  53. echo ""
  54. sleep 10
  55. # setting fallback build-dir
  56. if [ -z "$BUILD_DIR" ]; then
  57. STEP=$((${STEP} + 1))
  58. echo "[${STEP}] No build directory specified. Using ~/build/nodejs"
  59. sleep 2
  60. BUILD_DIR="~/build/nodejs"
  61. fi
  62. # navigate into build-dir parent
  63. mkdir -p "${BUILD_DIR}"
  64. cd "${BUILD_DIR}"
  65. # pull from github if node-git already exists
  66. if [ "$NODE_VER" = git ] && [ -d "node-git" ]; then
  67. STEP=$((${STEP} + 1))
  68. echo ""
  69. echo "[${STEP}] Updating ${BUILD_DIR}/node-${NODE_VER} via 'git pull'"
  70. sleep 2
  71. cd node-${NODE_VER}
  72. git pull
  73. cd ..
  74. fi
  75. # clone from github if node-git does not exist
  76. if [ "$NODE_VER" = git ] && ! [ -d "node-git" ]; then
  77. STEP=$((${STEP} + 1))
  78. echo ""
  79. echo "[${STEP}] Downloading from https://github.com/nodejs/node via 'git clone'"
  80. sleep 2
  81. git clone https://github.com/nodejs/node node-${NODE_VER}
  82. fi
  83. # use node-version if it exists
  84. if [ "$NODE_VER" != git ] && [ -d "node-${NODE_VER}" ]; then
  85. STEP=$((${STEP} + 1))
  86. echo ""
  87. echo "[${STEP}] ${BUILD_DIR}/node-${NODE_VER} already exists."
  88. echo "[${STEP}] Not downloading anything."
  89. sleep 2
  90. fi
  91. # download release if it does not already exist
  92. if [ "$NODE_VER" != git ] && ! [ -d "node-${NODE_VER}" ]; then
  93. STEP=$((${STEP} + 1))
  94. echo ""
  95. echo "[${STEP}] Downloading https://github.com/nodejs/node/archive/v${NODE_VER}.tar.gz"
  96. sleep 2
  97. wget https://github.com/nodejs/node/archive/v${NODE_VER}.tar.gz
  98. tar -zxvf v${NODE_VER}.tar.gz
  99. rm v${NODE_VER}.tar.gz
  100. fi
  101. # build process
  102. STEP=$((${STEP} + 1))
  103. echo ""
  104. echo "[${STEP}] #############################"
  105. echo "[${STEP}] Ready to build NodeJS ${NODE_VER}"
  106. echo ""
  107. sleep 2
  108. cd node-${NODE_VER}
  109. ./configure
  110. make
  111. # install process
  112. STEP=$((${STEP} + 1))
  113. echo ""
  114. echo "[${STEP}] ##############################"
  115. echo "[${STEP}] Ready to install NodeJS ${NODE_VER}"
  116. echo "[${STEP}] Please enter your root-password."
  117. echo ""
  118. su -c "make install" root
  119. # removing build-dir
  120. if [ "$CLEAN" = YES ]; then
  121. STEP=$((${STEP} + 1))
  122. echo ""
  123. echo "[${STEP}] Removing build-dir."
  124. echo ""
  125. rm -rf "${BUILD_DIR}/node-${NODE_VER}"
  126. fi
  127. # linking node to nodejs
  128. STEP=$((${STEP} + 1))
  129. echo ""
  130. echo "[${STEP}] ##############################"
  131. echo "[${STEP}] Linking '/usr/local/bin/node' to '/usr/bin/node'."
  132. echo "[${STEP}] Please enter your root-password."
  133. echo "[${STEP}] Or enter wrong password to skip."
  134. echo ""
  135. if [ -f /usr/bin/nodejs ]; then
  136. su -c "mv /usr/bin/nodejs /usr/bin/nodejs.real
  137. ln -s /usr/local/bin/node /usr/bin/nodejs" root
  138. else
  139. su -c "ln -s /usr/local/bin/node /usr/bin/nodejs" root
  140. fi
  141. # checking version of installed nodejs
  142. STEP=$((${STEP} + 1))
  143. echo ""
  144. echo "[${STEP}] ##############################"
  145. echo "[${STEP}] DONE!"
  146. echo "[${STEP}] installed NodeJS-Version: $(node -v)"
  147. echo "[${STEP}] installed NPM-Version: $(npm -v)"