Advertisement
Guest User

~/OpenVino/l_openvino_toolkit_ubuntu20_2024.0.0.14509.34caeefd078_x86_64/install_dependencies$

a guest
Jun 2nd, 2024
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 13.29 KB | Software | 0 0
  1. #!/bin/bash
  2.  
  3. # Copyright (C) 2018-2024 Intel Corporation
  4. # SPDX-License-Identifier: Apache-2.0
  5.  
  6. set -e
  7.  
  8. #===================================================================================================
  9. # Option parsing
  10.  
  11. all_comp=(core dev gpu python)
  12. os=${os:-auto}
  13.  
  14. # public options
  15. interactive=yes
  16. dry=
  17. extra=
  18. print=
  19. comp=()
  20.  
  21. # private options
  22. keepcache=
  23. selftest=
  24.  
  25. while :; do
  26.     case $1 in
  27.         -h|-\?|--help)
  28.             echo "Options:"
  29.             echo "  -y          non-interactive run (off)"
  30.             echo "  -n          dry-run, assume no (off)"
  31.             echo "  -c=<name>   install component <name>, can be repeated (${all_comp[*]})"
  32.             echo "  -e          add extra repositories (RHEL 7, 8, 9) (off)"
  33.             echo "  -p          print package list and exit (off)"
  34.             exit
  35.             ;;
  36.         -y) interactive= ;;
  37.         -n) dry=yes ;;
  38.         -c=?*) comp+=("${1#*=}") ;;
  39.         -e) extra=yes ;;
  40.         -p) print=yes ;;
  41.         --selftest) selftest=yes ;;
  42.         --keepcache) keepcache=yes ;;
  43.         *) break ;;
  44.     esac
  45.     shift
  46. done
  47.  
  48. # No components selected - install default
  49. if [ ${#comp[@]} -eq 0 ]; then
  50.     comp=("${all_comp[@]}")
  51. fi
  52.  
  53. #===================================================================================================
  54. #  Selftest
  55.  
  56. if [ -n "$selftest" ] ; then
  57.     for image in centos:7 centos:8 rhel:8 rhel:9.1 \
  58.                  almalinux:8.7 amazonlinux:2 \
  59.                  fedora:34 fedora:35 fedora:36 fedora:37 fedora:38 \
  60.                  opensuse/leap:15.3 \
  61.                  raspbian:9 debian:9 ubuntu:18.04 \
  62.                  raspbian:10 debian:10 ubuntu:20.04 ubuntu:20.10 ubuntu:21.04 \
  63.                  raspbian:11 debian:11 ubuntu:21.10 ubuntu:22.04 \
  64.                  raspbian:12 debian:12 ubuntu:22.10 ubuntu:23.04 ; do
  65.         for opt in  "-h" "-p" "-e -p" "-n" "-n -e" "-y" "-y -e" ; do
  66.             echo "||"
  67.             echo "|| Test $image / '$opt'"
  68.             echo "||"
  69.             SCRIPT_DIR="$( cd "$( dirname "$(realpath "${BASH_SOURCE[0]}")" )" >/dev/null 2>&1 && pwd )"
  70.             docker run -it --rm \
  71.                 --volume "${SCRIPT_DIR}":/scripts:ro,Z  \
  72.                 --volume yum-cache:/var/cache/yum \
  73.                 --volume apt-cache:/var/cache/apt/archives \
  74.                 -e DEBIAN_FRONTEND=noninteractive \
  75.                 $image \
  76.                 bash "/scripts/${0##*/}" "$opt" --keepcache
  77.             echo "||"
  78.             echo "|| Completed: $image / '$opt'"
  79.             echo "||"
  80.         done
  81.     done
  82.     echo "Self test finished, to remove temporary docker volumes run:
  83.        'docker volume rm yum-cache apt-cache'"
  84.     exit 0
  85. fi
  86.  
  87. #===================================================================================================
  88. # OS detection
  89.  
  90. if [ "$os" == "auto" ] ; then
  91.     # shellcheck source=/dev/null
  92.     os=$( . /etc/os-release ; echo "${ID}${VERSION_ID}" )
  93.     if [[ "$os" =~ "rhel8".* ]] ; then
  94.       os="rhel8"
  95.     fi
  96.     case $os in
  97.         centos7|centos8|centos9|\
  98.         rhel8|rhel9.1|\
  99.         anolis8.6|anolis8.8|\
  100.         openEuler20.03|openEuler22.03|openEuler23.03|\
  101.         almalinux8.7|almalinux8.8|almalinux9.2|\
  102.         amzn2|amzn2022|amzn2023|\
  103.         ol8.7|ol8.8|ol9.2|\
  104.         rocky8.7|rocky8.8|rocky9.2|\
  105.         fedora29|fedora30|fedora31|fedora32|fedora33|fedora34|fedora35|fedora36|fedora37|fedora38|fedora39|fedora40|\
  106.         opensuse-leap15.3|\
  107.         raspbian9|debian9|ubuntu18.04|\
  108.         raspbian10|debian10|ubuntu20.04|ubuntu20.10|ubuntu21.04|\
  109.         raspbian11|debian11|ubuntu21.10|ubuntu22.04|\
  110.         raspbian12|debian12|ubuntu22.10|linuxmint21.3) [ -z "$print" ] && echo "Detected OS: ${os}" ;;
  111.         *) echo "Unsupported OS: ${os:-detection failed}" >&2 ; exit 1 ;;
  112.     esac
  113. fi
  114.  
  115. #===================================================================================================
  116. # Collect packages
  117.  
  118. extra_repos=()
  119.  
  120. if [ "$os" == "raspbian9" ] || [ "$os" == "debian9" ] ; then
  121.  
  122.     # proper versions of cmake and python should be installed separately, because the defaults are:
  123.     # - python version is 3.5
  124.     # - cmake version is 3.7.2
  125.     # which are not supported by OpenVINO
  126.  
  127.     pkgs_core=()
  128.     pkgs_gpu=(ocl-icd-libopencl1)
  129.     pkgs_python=()
  130.     pkgs_dev=(pkg-config g++ gcc libc6-dev make sudo)
  131. elif [ "$os" == "ubuntu18.04" ] ; then
  132.     pkgs_core=(libtbb2)
  133.     pkgs_gpu=(ocl-icd-libopencl1)
  134.     pkgs_python=(python3.8 libpython3.8 python3.8-venv python3-pip)
  135.     pkgs_dev=(cmake pkg-config g++ gcc libc6-dev make sudo)
  136.  
  137. elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] ||
  138.      [ "$os" == "ubuntu21.10" ] || [ "$os" == "ubuntu22.04" ] || [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] ||
  139.      [ "$os" == "ubuntu22.10" ] || [ "$os" == "ubuntu23.04" ] || [ "$os" == "linuxmint21.3" ] || [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ]; then
  140.     echo "Testing branch C (Ubuntu etc..)"
  141.  
  142.     pkgs_core=()
  143.     pkgs_gpu=(ocl-icd-libopencl1)
  144.     pkgs_python=(python3 python3-venv python3-pip)
  145.     pkgs_dev=(cmake pkg-config g++ gcc libc6-dev make sudo)
  146.  
  147.     if [ "$os" == "ubuntu22.04" ] || [ "$os" == "ubuntu22.10" ] || [ "$os" == "ubuntu23.04" ] ||  [ "$os" == "linuxmint21.3" ] ||
  148.        [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] ; then
  149.         pkgs_core+=(libtbb12)
  150.     else
  151.         pkgs_core+=(libtbb2)
  152.     fi
  153.     echo "pkgs_core: $pkgs_core"
  154.  
  155.     if [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] ; then
  156.         pkgs_python+=(libpython3.7)
  157.     elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "ubuntu20.10" ] || [ "$os" == "ubuntu21.04" ] ; then
  158.         pkgs_python+=(libpython3.8)
  159.     elif [ "$os" == "ubuntu21.10" ] ||
  160.          [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] ; then
  161.         pkgs_python+=(libpython3.9)
  162.     elif [ "$os" == "ubuntu22.04" ] || [ "$os" == "ubuntu22.10" ] ||
  163.          [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] ; then
  164.         pkgs_python+=(libpython3.10)
  165.     elif [ "$os" == "ubuntu23.04" ] || [ "$os" == "linuxmint21.3" ] ; then
  166.         pkgs_python+=(libpython3.11)
  167.     fi
  168.     echo "pkgs_python: ${pkgs_python[@]} on $os"
  169. #    read -p "... Please check and press a key to continue."
  170. elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || [ "$os" == "centos9" ] ||
  171.      [ "$os" == "rhel8" ] || [ "$os" == "rhel9.1" ] ||
  172.      [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] ||
  173.      [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] ||
  174.      [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] ||
  175.      [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] ||
  176.      [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] ||
  177.      [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || [ "$os" == "ol9.2" ] ||
  178.      [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || [ "$os" == "rocky9.2" ] ||
  179.      [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || [ "$os" == "almalinux9.2" ] ||
  180.      [ "$os" == "amzn2" ] || [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] ; then
  181.     echo "Testing branch D (Fedora etc..)"
  182.  
  183.     arch=$(uname -m)
  184.  
  185.     if [ "$os" == "amzn2" ] ; then
  186.         amazon-linux-extras install epel python3.8
  187.     fi
  188.  
  189.     pkgs_core=()
  190.     pkgs_gpu=()
  191.     pkgs_python=()
  192.     pkgs_dev=(gcc gcc-c++ make glibc libstdc++ libgcc cmake3 sudo)
  193.  
  194.     if [ "$os" == "centos7" ] || [ "$os" == "amzn2" ] ; then
  195.         pkgs_dev+=(pkgconfig)
  196.     else
  197.         pkgs_dev+=(pkgconf-pkg-config)
  198.     fi
  199.  
  200.     if [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] ||
  201.        [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] ||
  202.        [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] ||
  203.        [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || [ "$os" == "ol9.2" ] ||
  204.        [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || [ "$os" == "rocky9.2" ] ||
  205.        [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || [ "$os" == "almalinux9.2" ] ||
  206.        [ "$os" == "centos8" ] || [ "$os" == "centos9" ] ||
  207.        [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] ||
  208.        [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] ||
  209.        [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] ; then
  210.         pkgs_core+=("tbb.$arch")
  211.         pkgs_python+=(python3 python3-pip)
  212.     fi
  213.  
  214.     if [ "$os" == "centos7" ] || [ "$os" == "amzn2" ] ; then
  215.         pkgs_gpu+=("ocl-icd.$arch")
  216.         extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm")
  217.     elif [ "$os" == "rhel8" ] ; then
  218.         pkgs_core+=("https://vault.centos.org/centos/8/AppStream/$arch/os/Packages/tbb-2018.2-9.el8.$arch.rpm")
  219.         pkgs_gpu+=("http://mirror.centos.org/centos/8-stream/AppStream/$arch/os/Packages/ocl-icd-2.2.12-1.el8.$arch.rpm")
  220.         pkgs_python+=(python38 python38-pip)
  221.         extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm")
  222.     elif [ "$os" == "rhel9.1" ] ; then
  223.         pkgs_core+=("http://mirror.stream.centos.org/9-stream/AppStream/$arch/os/Packages/tbb-2020.3-8.el9.$arch.rpm")
  224.         pkgs_gpu+=("https://mirror.stream.centos.org/9-stream/AppStream/$arch/os/Packages/ocl-icd-2.2.13-4.el9.$arch.rpm")
  225.         pkgs_python+=(python3 python3-pip)
  226.         extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm")
  227.     fi
  228. elif [ "$os" == "opensuse-leap15.3" ] ; then
  229.     pkgs_core=(libtbb2 libtbbmalloc2)
  230.     pkgs_gpu=(libOpenCL1)
  231.     pkgs_python=(python39-base python39 python39-venv python39-pip)
  232.     pkgs_dev=(cmake pkg-config gcc-c++ gcc make sudo)
  233. else
  234.     echo "Internal script error: invalid OS (${os}) after check (package selection)" >&2
  235.     exit 3
  236. fi
  237.  
  238. echo "NOTE: This was end of the block where pkgs_ variables were set."
  239.  
  240. #===================================================================================================
  241. # Gather packages and print list
  242.  
  243. pkgs=()
  244. for comp in "${comp[@]}" ; do
  245.     var="pkgs_${comp}[@]"
  246.     pkgs+=("${!var}")
  247. done
  248.  
  249. if [ ${#pkgs[@]} -eq 0 ]; then
  250.     if  [ -n "$print" ] ; then
  251.         echo "No packages to install" >&2
  252.         exit 1
  253.     else
  254.         echo "No packages to install"
  255.         exit 0
  256.     fi
  257. fi
  258.  
  259. if  [ -n "$print" ] ; then
  260.     echo "${pkgs[*]}"
  261.     exit 0
  262. fi
  263.  
  264. #===================================================================================================
  265. # Actual installation
  266.  
  267. if [ $EUID -ne 0 ]; then
  268.     echo "ERROR: this script must be run as root to install 3rd party packages." >&2
  269.     echo "Please try again with \"sudo -E $0\", or as root." >&2
  270.     exit 1
  271. fi
  272.  
  273. iopt=
  274.  
  275.  
  276. if [ "$os" == "debian9" ] || [ "$os" == "raspbian9" ] || [ "$os" == "ubuntu18.04" ] ||
  277.    [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] || [ "$os" == "ubuntu20.04" ] || [ "$os" == "ubuntu20.10" ] || [ "$os" == "ubuntu21.04" ] ||
  278.    [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] || [ "$os" == "ubuntu21.10" ] || [ "$os" == "ubuntu22.04" ] ||
  279.    [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] || [ "$os" == "ubuntu22.10" ] || [ "$os" == "linuxmint21.3" ]; then
  280.  
  281.     [ -z "$interactive" ] && iopt="-y"
  282.     [ -n "$dry" ] && iopt="--dry-run"
  283.     [ -n "$keepcache" ] && rm -f /etc/apt/apt.conf.d/docker-clean
  284.  
  285.     apt-get update && apt-get install --no-install-recommends "$iopt" "${pkgs[@]}"
  286.  
  287. elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || [ "$os" == "centos9" ] ||
  288.      [ "$os" == "rhel8" ] || [ "$os" == "rhel9.1" ] ||
  289.      [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] ||
  290.      [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] ||
  291.      [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] ||
  292.      [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] ||
  293.      [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] ||
  294.      [ "$os" == "fedora36" ] || [ "$os" == "fedora38" ] ||
  295.      [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || [ "$os" == "ol9.2" ] ||
  296.      [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || [ "$os" == "rocky9.2" ] ||
  297.      [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || [ "$os" == "almalinux9.2" ] ||
  298.      [ "$os" == "amzn2" ] || [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] ; then
  299.  
  300.     [ -z "$interactive" ] && iopt="--assumeyes"
  301.     [ -n "$dry" ] && iopt="--downloadonly"
  302.     [ -n "$keepcache" ] && iopt="$iopt --setopt=keepcache=1"
  303.     [ -n "$extra" ] && [ ${#extra_repos[@]} -ne 0 ] && yum localinstall "$iopt" --nogpgcheck "${extra_repos[@]}"
  304.  
  305.     yum install "$iopt" "${pkgs[@]}"
  306.  
  307. elif [ "$os" == "opensuse-leap15.3" ] ; then
  308.  
  309.     [ -z "$interactive" ] && iopt="-y"
  310.     [ -n "$dry" ] && iopt="--dry-run"
  311.     [ -n "$keepcache" ] && zypper clean --all
  312.  
  313.     zypper ref && zypper in --auto-agree-with-licenses --no-recommends "$iopt" "${pkgs[@]}"
  314.  
  315. else
  316.     echo "Internal script error: invalid OS (${os}) after check (package installation)" >&2
  317.     exit 3
  318. fi
  319.  
  320. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement