build_hue_common.sh 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. #!/usr/bin/env bash
  2. function big_console_header() {
  3. set +x
  4. local text="$*"
  5. local spacing=$(( (75+${#text}) /2 ))
  6. printf "\n\n"
  7. echo "============================================================================"
  8. echo "============================================================================"
  9. printf "%*s\n" ${spacing} "${text}"
  10. echo "============================================================================"
  11. echo "============================================================================"
  12. printf "\n\n"
  13. set -x
  14. }
  15. function check_python38_path() {
  16. export python38_bin="$PYTHON38_PATH/bin/python3.8"
  17. if [ ! -e "$python38_bin" ]; then
  18. echo "Python38 bin does not exists at " $python38_bin
  19. exit 1
  20. fi
  21. export pip_bin="$PYTHON38_PATH/bin/pip3.8"
  22. }
  23. function check_python39_path() {
  24. export python39_bin="$PYTHON39_PATH/bin/python3.9"
  25. if [ ! -e "$python39_bin" ]; then
  26. echo "Python39 bin does not exists at " $python39_bin
  27. exit 1
  28. fi
  29. export pip_bin="$PYTHON39_PATH/bin/pip3.9"
  30. }
  31. function check_python310_path() {
  32. export python310_bin="$PYTHON310_PATH/bin/python3.10"
  33. if [ ! -e "$python310_bin" ]; then
  34. echo "Python310 bin does not exists at " $python310_bin
  35. exit 1
  36. fi
  37. export pip_bin="$PYTHON310_PATH/bin/pip3.10"
  38. }
  39. function check_python311_path() {
  40. export python311_bin="$PYTHON311_PATH/bin/python3.11"
  41. if [ ! -e "$python311_bin" ]; then
  42. echo "Python311 bin does not exists at " $python311_bin
  43. exit 1
  44. fi
  45. export pip_bin="$PYTHON311_PATH/bin/pip3.11"
  46. }
  47. function check_sqlite3() {
  48. export sqlit3_bin="$SQLITE3_PATH"
  49. if [ ! -e "$sqlit3_bin" ]; then
  50. echo "sqlit3 bin does not exists at " $sqlit3_bin
  51. exit 1
  52. fi
  53. }
  54. function redhat7_ppc_install() {
  55. if [[ $FORCEINSTALL -eq 1 ]]; then
  56. # pre-req install
  57. sudo -- sh -c 'yum install -y cyrus-sasl-gssapi \
  58. cyrus-sasl-plain \
  59. java-11-openjdk \
  60. java-11-openjdk-devel \
  61. java-11-openjdk-headless \
  62. krb5-workstation \
  63. libpcap \
  64. ncurses-devel \
  65. nmap-ncat \
  66. xmlsec1 \
  67. xmlsec1-openssl \
  68. unzip'
  69. # NODEJS 16 install
  70. # Upgrading to node-v16 because of the following CVE's in node-v14 "CVE-2021-3450, CVE-2021-44531, CVE-2023-32004, CVE-2023-32006"
  71. # Node-v20-LTS is not supported by old OS'es - Redhat7_ppc, Centos7, Ubuntu18, Sles12. So upgrading to node-v16
  72. sudo -- sh -c 'curl -fsSL https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-ppc64le.tar.gz -o node-v16.20.2-linux-ppc64le.tar.gz && \
  73. mkdir -p /usr/local/lib/nodejs && \
  74. tar -xzf node-v16.20.2-linux-ppc64le.tar.gz -C /usr/local/lib/nodejs'
  75. echo 'export PATH=/usr/local/lib/nodejs/node-v16.20.2-linux-ppc64le/bin:$PATH' >> ~/.bashrc
  76. source ~/.bashrc
  77. # sqlite3 install
  78. sudo TOOLS_HOME=${TOOLS_HOME} -- sh -c 'mkdir -p ${TOOLS_HOME} && \
  79. cd ${TOOLS_HOME} && \
  80. curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  81. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  82. cd sqlite-autoconf-3350500 && \
  83. ./configure --prefix=${TOOLS_HOME}/sqlite && make && make install'
  84. export LD_LIBRARY_PATH=${TOOLS_HOME}/sqlite/lib:/usr/local/lib:$LD_LIBRARY_PATH
  85. # python3.8 re install for sqlite3 3.35.5 or higher version
  86. sudo LD_LIBRARY_PATH=/usr/local/lib:$ORACLE_INSTANTCLIENT19_PATH:$LD_LIBRARY_PATH \
  87. LD_RUN_PATH=/usr/local/lib:$ORACLE_INSTANTCLIENT19_PATH:$LD_RUN_PATH \
  88. -- sh -c 'curl -o Python-3.8.13.tgz https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz && \
  89. tar zxvf Python-3.8.13.tgz && \
  90. cd Python-3.8.13 && \
  91. ./configure --enable-shared --prefix=/opt/cloudera/cm-agent && \
  92. make install'
  93. # Pip modules install
  94. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}''
  95. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  96. fi
  97. }
  98. function redhat8_ppc_install() {
  99. if [[ $FORCEINSTALL -eq 1 ]]; then
  100. # pre-req install
  101. sudo -- sh -c 'yum install -y \
  102. python38 \
  103. python38-libs \
  104. python38-devel \
  105. python38-numpy \
  106. python38-PyMySQL \
  107. python38-cryptography \
  108. python38-cffi \
  109. python38-psycopg2 \
  110. python38-Cython \
  111. python38-lxml \
  112. java-11-openjdk-devel \
  113. java-11-openjdk-headless \
  114. krb5-workstation \
  115. nmap-ncat \
  116. xmlsec1 \
  117. xmlsec1-openssl \
  118. libss \
  119. ncurses-devel'
  120. # Ensure pg_config is available
  121. export PG_CONFIG=$(which pg_config)
  122. if [ -z "$PG_CONFIG" ]; then
  123. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  124. exit 1
  125. fi
  126. echo "PG_CONFIG is set to $PG_CONFIG"
  127. # MySQLdb install
  128. sudo -- sh -c 'yum install -y python3-mysqlclient'
  129. # NODEJS install
  130. sudo sh -c 'curl -fsSL https://nodejs.org/dist/v20.11.0/node-v20.11.0-linux-ppc64le.tar.gz -o node-v20.11.0-linux-ppc64le.tar.gz && \
  131. mkdir -p /usr/local/lib/nodejs && \
  132. tar -xzf node-v20.11.0-linux-ppc64le.tar.gz -C /usr/local/lib/nodejs'
  133. echo 'export PATH=/usr/local/lib/nodejs/node-v20.11.0-linux-ppc64le/bin:$PATH' >> ~/.bashrc
  134. source ~/.bashrc
  135. # Pip modules install
  136. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  137. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  138. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  139. # sqlite3 install
  140. sudo TOOLS_HOME=${TOOLS_HOME} -- sh -c 'mkdir -p ${TOOLS_HOME} && \
  141. cd ${TOOLS_HOME} && \
  142. curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  143. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  144. cd sqlite-autoconf-3350500 && \
  145. ./configure --prefix=${TOOLS_HOME}/sqlite && make && make install'
  146. export LD_LIBRARY_PATH=${TOOLS_HOME}/sqlite/lib:/usr/local/lib:$LD_LIBRARY_PATH
  147. fi
  148. }
  149. function redhat9_ppc_install() {
  150. if [[ $FORCEINSTALL -eq 1 ]]; then
  151. # pre-req install
  152. sudo -- sh -c 'yum install -y \
  153. java-11-openjdk-devel \
  154. java-11-openjdk-headless \
  155. krb5-workstation \
  156. nmap-ncat \
  157. xmlsec1 \
  158. xmlsec1-openssl \
  159. libss \
  160. ncurses-devel'
  161. # Ensure pg_config is available
  162. export PG_CONFIG=$(which pg_config)
  163. if [ -z "$PG_CONFIG" ]; then
  164. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  165. exit 1
  166. fi
  167. echo "PG_CONFIG is set to $PG_CONFIG"
  168. # MySQLdb install
  169. sudo -- sh -c 'yum install -y python3-mysqlclient'
  170. # NODEJS install
  171. sudo sh -c 'curl -fsSL https://nodejs.org/dist/v20.11.0/node-v20.11.0-linux-ppc64le.tar.gz -o node-v20.11.0-linux-ppc64le.tar.gz && \
  172. mkdir -p /usr/local/lib/nodejs && \
  173. tar -xzf node-v20.11.0-linux-ppc64le.tar.gz -C /usr/local/lib/nodejs'
  174. echo 'export PATH=/usr/local/lib/nodejs/node-v20.11.0-linux-ppc64le/bin:$PATH' >> ~/.bashrc
  175. source ~/.bashrc
  176. # Pip modules install
  177. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  178. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  179. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  180. # sqlite3 install
  181. sudo TOOLS_HOME=${TOOLS_HOME} -- sh -c 'mkdir -p ${TOOLS_HOME} && \
  182. cd ${TOOLS_HOME} && \
  183. curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  184. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  185. cd sqlite-autoconf-3350500 && \
  186. ./configure --prefix=${TOOLS_HOME}/sqlite && make && make install'
  187. export LD_LIBRARY_PATH=${TOOLS_HOME}/sqlite/lib:/usr/local/lib:$LD_LIBRARY_PATH
  188. fi
  189. }
  190. function sles12_install() {
  191. if [[ $FORCEINSTALL -eq 1 ]]; then
  192. # pre-req install
  193. sudo -- sh -c 'zypper refresh'
  194. sudo -- sh -c 'zypper install -y cyrus-sasl-gssapi \
  195. cyrus-sasl-plain \
  196. java-11-openjdk \
  197. java-11-openjdk-devel \
  198. java-11-openjdk-headless \
  199. krb5-client pam_krb5 krb5-appl-clients krb5-plugin-kdb-ldap \
  200. libpcap \
  201. ncurses-devel \
  202. nmap \
  203. python3-devel \
  204. postgresql-server-devel \
  205. xmlsec1 xmlsec1-devel xmlsec1-openssl-devel'
  206. # Ensure pg_config is available
  207. export PG_CONFIG=$(which pg_config)
  208. if [ -z "$PG_CONFIG" ]; then
  209. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  210. exit 1
  211. fi
  212. echo "PG_CONFIG is set to $PG_CONFIG"
  213. # MySQLdb install
  214. sudo -- sh -c 'zypper install -y libmysqlclient-devel libmysqlclient18 libmysqld18 libmysqld-devel'
  215. # NODEJS 16 install
  216. # Upgrading to node-v16 because of the following CVE's in node-v14 "CVE-2021-3450, CVE-2021-44531, CVE-2023-32004, CVE-2023-32006"
  217. # Node-v20-LTS is not supported by old OS'es - Redhat7_ppc, Centos7, Ubuntu18, Sles12. So upgrading to node-v16
  218. sudo -- sh -c 'zypper install -y npm14 nodejs16'
  219. # Pip modules install
  220. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  221. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  222. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  223. # sqlite3 install
  224. sudo -- sh -c 'curl --insecure -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  225. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  226. cd sqlite-autoconf-3350500 && \
  227. ./configure --prefix=/usr/local/ && make && make install'
  228. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  229. fi
  230. }
  231. function sles15_install() {
  232. if [[ $FORCEINSTALL -eq 1 ]]; then
  233. # pre-req install
  234. sudo -- sh -c 'zypper refresh'
  235. sudo -- sh -c 'zypper install -y cyrus-sasl-gssapi \
  236. cyrus-sasl-plain \
  237. java-11-openjdk \
  238. java-11-openjdk-devel \
  239. java-11-openjdk-headless \
  240. krb5-client pam_krb5 krb5-plugin-kdb-ldap \
  241. libpcap1 \
  242. ncurses-devel \
  243. nmap \
  244. postgresql-server-devel \
  245. xmlsec1 xmlsec1-devel xmlsec1-openssl-devel'
  246. # Ensure pg_config is available
  247. export PG_CONFIG=$(which pg_config)
  248. if [ -z "$PG_CONFIG" ]; then
  249. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  250. exit 1
  251. fi
  252. echo "PG_CONFIG is set to $PG_CONFIG"
  253. # MySQLdb install
  254. sudo -- sh -c 'zypper install -y libmariadb-devel mariadb-client python3-mysqlclient'
  255. # NODEJS 18 install
  256. sudo -- sh -c 'zypper install -y nodejs18 npm20'
  257. # Pip modules install
  258. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  259. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  260. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  261. # sqlite3 install
  262. sudo -- sh -c 'curl --insecure -o sqlite-autoconf-3450000.tar.gz https://sqlite.org/2024/sqlite-autoconf-3450000.tar.gz && \
  263. tar zxvf sqlite-autoconf-3450000.tar.gz && \
  264. cd sqlite-autoconf-3450000 && \
  265. ./configure --prefix=/usr/local/ && make && make install'
  266. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  267. fi
  268. }
  269. function centos7_install() {
  270. if [[ $FORCEINSTALL -eq 1 ]]; then
  271. # pre-req install
  272. sudo -- sh -c 'yum install -y cyrus-sasl-gssapi \
  273. cyrus-sasl-plain \
  274. java-11-openjdk \
  275. java-11-openjdk-devel \
  276. java-11-openjdk-headless \
  277. krb5-workstation \
  278. libpcap \
  279. ncurses-devel \
  280. nmap-ncat \
  281. xmlsec1 \
  282. xmlsec1-openssl \
  283. unzip \
  284. python3-devel \
  285. postgresql-devel'
  286. # Ensure pg_config is available
  287. export PG_CONFIG=$(which pg_config)
  288. if [ -z "$PG_CONFIG" ]; then
  289. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  290. exit 1
  291. fi
  292. echo "PG_CONFIG is set to $PG_CONFIG"
  293. # MySQLdb install
  294. sudo -- sh -c 'curl -sSLO https://cloudera-build-us-west-1.vpc.cloudera.com/s3/ARTIFACTS/mysql80-community-release-el7-11.noarch.rpm && \
  295. rpm -ivh mysql80-community-release-el7-11.noarch.rpm && \
  296. yum install -y mysql-community-libs mysql-community-client-plugins mysql-community-common'
  297. # NODEJS 16 install
  298. # Upgrading to node-v16 because of the following CVE's in node-v14 "CVE-2021-3450, CVE-2021-44531, CVE-2023-32004, CVE-2023-32006"
  299. # Node-v20-LTS is not supported by old OS'es - Redhat7_ppc, Centos7, Ubuntu18, Sles12. So upgrading to node-v16
  300. sudo -- sh -c 'curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash - && \
  301. yum install -y nodejs npm'
  302. # sqlite3 install
  303. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  304. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  305. cd sqlite-autoconf-3350500 && \
  306. ./configure --prefix=/usr/local/ && make && make install'
  307. # python3.8 re install for sqlite3 3.35.5 or higher version
  308. sudo LD_LIBRARY_PATH=/usr/local/lib:$ORACLE_INSTANTCLIENT19_PATH:$LD_LIBRARY_PATH \
  309. LD_RUN_PATH=/usr/local/lib:$ORACLE_INSTANTCLIENT19_PATH:$LD_RUN_PATH \
  310. -- sh -c 'curl -o Python-3.8.13.tgz https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz && \
  311. tar zxvf Python-3.8.13.tgz && \
  312. cd Python-3.8.13 && \
  313. ./configure --enable-shared --prefix=/opt/cloudera/cm-agent && \
  314. make install'
  315. # Pip modules install
  316. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  317. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  318. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  319. fi
  320. }
  321. function redhat8_install() {
  322. if [[ $FORCEINSTALL -eq 1 ]]; then
  323. # pre-req install
  324. sudo -- sh -c 'yum install -y \
  325. java-11-openjdk \
  326. java-11-openjdk-devel \
  327. java-11-openjdk-headless \
  328. krb5-workstation \
  329. ncurses-devel \
  330. nmap-ncat \
  331. xmlsec1 \
  332. xmlsec1-openssl \
  333. libss \
  334. ncurses-c++-libs \
  335. python3-devel \
  336. postgresql-devel'
  337. # Ensure pg_config is available
  338. export PG_CONFIG=$(which pg_config)
  339. if [ -z "$PG_CONFIG" ]; then
  340. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  341. exit 1
  342. fi
  343. echo "PG_CONFIG is set to $PG_CONFIG"
  344. # MySQLdb install
  345. sudo -- sh -c 'yum install -y python3-mysqlclient'
  346. # NODEJS 20 install
  347. sudo -- sh -c 'curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash - && \
  348. yum install -y nodejs'
  349. # Pip modules install
  350. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  351. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  352. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  353. # sqlite3 install
  354. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  355. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  356. cd sqlite-autoconf-3350500 && \
  357. ./configure --prefix=/usr/local/ && make && make install'
  358. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  359. fi
  360. }
  361. function redhat8_arm64_install() {
  362. if [[ $FORCEINSTALL -eq 1 ]]; then
  363. # pre-req install
  364. sudo -- sh -c 'yum install -y \
  365. java-11-openjdk \
  366. java-11-openjdk-devel \
  367. java-11-openjdk-headless \
  368. krb5-workstation \
  369. ncurses-devel \
  370. nmap-ncat \
  371. xmlsec1 \
  372. xmlsec1-openssl \
  373. libss \
  374. ncurses-c++-libs'
  375. # MySQLdb install
  376. sudo -- sh -c 'yum install -y python3-mysqlclient'
  377. # NODEJS 20 install
  378. sudo -- sh -c 'curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash - && \
  379. yum install -y nodejs'
  380. # Pip modules install
  381. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  382. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2-binary==2.9.6'
  383. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  384. # sqlite3 install
  385. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  386. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  387. cd sqlite-autoconf-3350500 && \
  388. ./configure --prefix=/usr/local/ && make && make install'
  389. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  390. fi
  391. }
  392. function ubuntu18_install() {
  393. if [[ $FORCEINSTALL -eq 1 ]]; then
  394. # pre-req install
  395. sudo -- sh -c 'apt-get update'
  396. sudo -- sh -c 'DEBIAN_FRONTEND=noninteractive apt -qq -y install \
  397. krb5-user \
  398. krb5-kdc \
  399. krb5-config \
  400. libkrb5-dev'
  401. sudo -- sh -c 'apt -y install \
  402. ldap-utils \
  403. libpython3.8-dev \
  404. libpython3.8-minimal \
  405. libpython3.8-stdlib \
  406. libxmlsec1 \
  407. libxmlsec1-openssl \
  408. netcat \
  409. nmap \
  410. python3-asn1crypto \
  411. python3-cffi-backend \
  412. python3-crypto \
  413. python3-cryptography \
  414. python3-keyring \
  415. python3-psycopg2 \
  416. python3-setuptools \
  417. python3-wheel \
  418. python3.8-venv \
  419. python3-dev \
  420. libpq-dev \
  421. zlibc'
  422. # Ensure pg_config is available
  423. export PG_CONFIG=$(which pg_config)
  424. if [ -z "$PG_CONFIG" ]; then
  425. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  426. exit 1
  427. fi
  428. echo "PG_CONFIG is set to $PG_CONFIG"
  429. # MySQLdb install
  430. # It is pre-installed
  431. # NODEJS 16 install
  432. # Upgrading to node-v16 because of the following CVE's in node-v14 "CVE-2021-3450, CVE-2021-44531, CVE-2023-32004, CVE-2023-32006"
  433. # Node-v20-LTS is not supported by old OS'es - Redhat7_ppc, Centos7, Ubuntu18, Sles12. So upgrading to node-v16
  434. sudo -- sh -c 'curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - && \
  435. apt -y install nodejs'
  436. # Pip modules install
  437. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  438. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  439. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  440. # sqlite3 install
  441. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  442. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  443. cd sqlite-autoconf-3350500 && \
  444. ./configure --prefix=/usr/local/ && make && make install'
  445. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  446. fi
  447. }
  448. function ubuntu20_install() {
  449. if [[ $FORCEINSTALL -eq 1 ]]; then
  450. # pre-req install
  451. sudo -- sh -c 'DEBIAN_FRONTEND=noninteractive apt -qq -y install \
  452. krb5-user \
  453. krb5-kdc \
  454. krb5-config \
  455. libkrb5-dev'
  456. sudo -- sh -c 'apt -y install \
  457. ldap-utils \
  458. libpython3.8-dev \
  459. libpython3.8-minimal \
  460. libpython3.8-stdlib \
  461. libxmlsec1 \
  462. libxmlsec1-openssl \
  463. libpq-dev \
  464. netcat \
  465. nmap \
  466. python-asn1crypto \
  467. python3-crypto \
  468. python3-cryptography \
  469. python3-keyring \
  470. python3-psycopg2 \
  471. python3-setuptools \
  472. python3-wheel \
  473. python3.8-venv \
  474. zlibc \
  475. openssl \
  476. sudo \
  477. tar \
  478. util-linux'
  479. # Ensure pg_config is available
  480. export PG_CONFIG=$(which pg_config)
  481. if [ -z "$PG_CONFIG" ]; then
  482. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  483. exit 1
  484. fi
  485. echo "PG_CONFIG is set to $PG_CONFIG"
  486. # MySQLdb install
  487. # It is pre-installed
  488. # NODEJS 20 install
  489. sudo -- sh -c 'apt-get install -y curl && \
  490. curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && \
  491. apt-get install -y nodejs'
  492. # Pip modules install
  493. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  494. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  495. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  496. # sqlite3 install
  497. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  498. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  499. cd sqlite-autoconf-3350500 && \
  500. ./configure --prefix=/usr/local/ && make && make install'
  501. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  502. fi
  503. }
  504. function ubuntu22_install() {
  505. if [[ $FORCEINSTALL -eq 1 ]]; then
  506. sudo -- sh -c 'apt update'
  507. # Add deadsnakes PPA for Python 3.8
  508. sudo -- sh -c 'add-apt-repository ppa:deadsnakes/ppa -y'
  509. sudo -- sh -c 'apt update'
  510. # pre-req install
  511. sudo -- sh -c 'DEBIAN_FRONTEND=noninteractive apt -qq -y install \
  512. krb5-user \
  513. krb5-kdc \
  514. krb5-config \
  515. libkrb5-dev'
  516. sudo -- sh -c 'apt -y install \
  517. ldap-utils \
  518. libpython3.8-dev \
  519. libpython3.8-minimal \
  520. libpython3.8-stdlib \
  521. libxmlsec1 \
  522. libxmlsec1-openssl \
  523. libpq-dev \
  524. netcat \
  525. nmap \
  526. python3-asn1crypto \
  527. python3-cryptography \
  528. python3-keyring \
  529. python3-psycopg2 \
  530. python3-setuptools \
  531. python3-wheel \
  532. python3.8-venv \
  533. openssl \
  534. sudo \
  535. tar \
  536. util-linux'
  537. # Ensure pg_config is available
  538. export PG_CONFIG=$(which pg_config)
  539. if [ -z "$PG_CONFIG" ]; then
  540. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  541. exit 1
  542. fi
  543. echo "PG_CONFIG is set to $PG_CONFIG"
  544. # MySQLdb install
  545. # It is pre-installed
  546. # NODEJS 20 install
  547. sudo -- sh -c 'apt-get install -y curl && \
  548. curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && \
  549. apt-get install -y nodejs'
  550. # Pip modules install
  551. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  552. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  553. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  554. # sqlite3 install
  555. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  556. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  557. cd sqlite-autoconf-3350500 && \
  558. ./configure --prefix=/usr/local/ && make && make install'
  559. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  560. fi
  561. }
  562. function redhat9_install() {
  563. if [[ $FORCEINSTALL -eq 1 ]]; then
  564. # pre-req install
  565. sudo -- sh -c 'yum install -y \
  566. java-11-openjdk \
  567. java-11-openjdk-devel \
  568. java-11-openjdk-headless \
  569. krb5-workstation \
  570. ncurses-devel \
  571. nmap-ncat \
  572. xmlsec1 \
  573. xmlsec1-openssl \
  574. libss \
  575. ncurses-c++-libs \
  576. postgresql-devel'
  577. # Ensure pg_config is available
  578. export PG_CONFIG=$(which pg_config)
  579. if [ -z "$PG_CONFIG" ]; then
  580. echo "Error: pg_config not found. Ensure PostgreSQL development libraries are installed."
  581. exit 1
  582. fi
  583. echo "PG_CONFIG is set to $PG_CONFIG"
  584. # MySQLdb install
  585. sudo -- sh -c 'yum install -y python3-mysqlclient'
  586. # NODEJS 20 install
  587. sudo -- sh -c 'curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash - && \
  588. yum install -y nodejs'
  589. # Pip modules install
  590. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install virtualenv=='${VIRTUAL_ENV_VERSION}' virtualenv-make-relocatable=='${VIRTUAL_ENV_RELOCATABLE_VERSION}' mysqlclient==2.1.1'
  591. sudo pip_bin=${pip_bin} -- sh -c '${pip_bin} install psycopg2==2.9.6 --global-option=build_ext --global-option="--pg-config=$PG_CONFIG"'
  592. sudo pip_bin=${pip_bin} -- sh -c 'ln -fs ${pip_bin} $(dirname ${pip_bin})/pip'
  593. # sqlite3 install
  594. sudo -- sh -c 'curl -o sqlite-autoconf-3350500.tar.gz https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz && \
  595. tar zxvf sqlite-autoconf-3350500.tar.gz && \
  596. cd sqlite-autoconf-3350500 && \
  597. ./configure --prefix=/usr/local/ && make && make install'
  598. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  599. fi
  600. }