An issue with the verification and extraction of the .tgz file was resolved.
This commit is contained in:
stornic56
2026-10-08 15:16:33 -05:00
committed by GitHub
parent 252d4a83a0
commit cbc405a486
9 changed files with 425 additions and 109 deletions
+11 -4
View File
@@ -1,9 +1,16 @@
#!/bin/bash
# ------------------------------------------------------------------------------
# Common printing functions for all installer scripts.
# Dual output: colores ANSI a stdout + texto plano (sin codigos) a $LOG_FILE.
# El log es AUXILIAR: su fallo de escritura no debe abortar la operacion
# (p. ej. log root-owned + doctor sin root) — por eso el append va guardado.
# ------------------------------------------------------------------------------
print_step() { echo -e "\n\033[1;34m>>>\033[0m \033[1m$1\033[0m"; }
print_substep() { echo -e "\033[1;32m =>\033[0m $1"; }
print_warning() { echo -e "\033[1;33m [AVISO]\033[0m $1"; }
print_error() { echo -e "\033[1;31m [ERROR]\033[0m $1"; }
LOG_FILE="${LOG_FILE:-install.log}"
_log_plain() { printf '%s\n' "$1" >> "$LOG_FILE" 2>/dev/null || true; }
print_step() { echo -e "\n\033[1;34m>>>\033[0m \033[1m$1\033[0m"; _log_plain ""; _log_plain ">>> $1"; }
print_substep() { echo -e "\033[1;32m =>\033[0m $1"; _log_plain " => $1"; }
print_warning() { echo -e "\033[1;33m [WARNING]\033[0m $1"; _log_plain " [WARNING] $1"; }
print_error() { echo -e "\033[1;31m [ERROR]\033[0m $1"; _log_plain " [ERROR] $1"; }
+71
View File
@@ -0,0 +1,71 @@
#!/bin/bash
# ------------------------------------------------------------------------------
# doctor: post-installation verification (no root required).
# Sourced by main.sh (doctor subcommand) and by the menu.
# Output with print_* from common.sh; exit code = number of failed checks.
# ------------------------------------------------------------------------------
run_doctor_checks() {
print_step "Doctor: verifying OpenVINO installation..."
local fails=0
# 1. Stable symlink
if [ -L /opt/intel/openvino_2026 ]; then
print_substep "Symlink OK: /opt/intel/openvino_2026 -> $(readlink /opt/intel/openvino_2026)"
else
print_error "Missing symlink /opt/intel/openvino_2026 (was the installation performed?)"
fails=$((fails+1))
fi
# 2. Installed version
if [ -f /opt/intel/openvino_2026/runtime/version.txt ]; then
print_substep "Installed version: $(cat /opt/intel/openvino_2026/runtime/version.txt)"
else
print_error "runtime/version.txt not found"
fails=$((fails+1))
fi
# 3. OpenCL (clinfo) — capture first (clinfo output is large; grep -q would
# SIGPIPE-kill the pipe and report a false negative under pipefail)
if command -v clinfo >/dev/null 2>&1; then
CLINFO_OUT=$(clinfo 2>/dev/null || true) # clinfo exits !=0 when no devices
if [[ "${CLINFO_OUT^^}" == *"DEVICE NAME"* ]]; then
print_substep "OpenCL OK (device detected)"
else
print_warning "clinfo does not detect a device (missing NEO driver or render/video groups?)"
fails=$((fails+1))
fi
else
print_warning "clinfo is not installed"
fails=$((fails+1))
fi
# 4. VAAPI (vainfo) — same capture-first pattern (consistency + latent SIGPIPE)
if command -v vainfo >/dev/null 2>&1; then
VAINFO_OUT=$(vainfo 2>/dev/null || true)
if [[ "${VAINFO_OUT^^}" == *"DRIVER VERSION"* ]]; then
print_substep "VAAPI OK (driver loaded)"
else
print_warning "vainfo does not load a driver (missing intel-media-va-driver?)"
fails=$((fails+1))
fi
else
print_warning "vainfo is not installed"
fails=$((fails+1))
fi
# 5. render/video groups
if id -Gn 2>/dev/null | grep -qw render && id -Gn 2>/dev/null | grep -qw video; then
print_substep "Groups OK: user is in render and video"
else
print_warning "User is NOT in the render/video groups (restart your session after installing)"
fails=$((fails+1))
fi
if [ "$fails" -eq 0 ]; then
print_substep "Doctor: ALL OK"
else
print_warning "Doctor: $fails check(s) with warnings or failures"
fi
return "$fails"
}
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
# ------------------------------------------------------------------------------
# Minimalist pure-bash menu (zero external dependencies: ANSI + read -sn1).
# Navigation: up/down arrows + Enter, number keys as a shortcut, q/ESC exit.
# Returns: 0=exit, 1=full installation, 2=NEO only, 3=OpenVINO only,
# 4=doctor, 5=uninstall
# Requires: common.sh already sourced (print_*), no root needed to navigate.
# ------------------------------------------------------------------------------
MENU_OPTS=("Full installation" "NEO drivers only" "OpenVINO Runtime only" "Verify installation (doctor)" "Uninstall" "Exit")
show_menu() {
local sel=0
local n=${#MENU_OPTS[@]}
local key rest i opt pad
while true; do
printf '\033[2J\033[H'
echo ""
echo "┌──────────────────────────────────────────────┐"
echo "│ OpenVINO Simple Installer 2026.4 │"
echo "└──────────────────────────────────────────────┘"
echo ""
i=0
for opt in "${MENU_OPTS[@]}"; do
pad=$(( 38 - ${#opt} ))
if [ "$i" -eq "$sel" ]; then
printf '│ \033[1;34m▸ %s. %s\033[0m%*s│\n' "$((i+1))" "$opt" "$pad" ""
else
printf '│ %s. %s%*s│\n' "$((i+1))" "$opt" "$pad" ""
fi
i=$((i+1))
done
echo "└──────────────────────────────────────────────┘"
echo ""
echo " Arrows + Enter · number + Enter · q/ESC exit"
if ! read -rsn1 key; then
print_error "No input available."
return 0
fi
if [ "$key" = $'\x1b' ]; then
rest=""
read -rsn2 -t 0.001 rest || true
case "$rest" in
'[A') sel=$(( (sel - 1 + n) % n )) ;;
'[B') sel=$(( (sel + 1) % n )) ;;
*) return 0 ;; # ESC sin flecha: salir
esac
elif [ "$key" = "" ]; then
# Enter: seleccionar la opcion marcada
[ "$sel" -eq $((n-1)) ] && return 0
return $((sel+1))
elif [[ "$key" =~ ^[0-9]$ ]]; then
# Atajo numerico: 1..5 seleccionan, 0 sale
[ "$key" = "0" ] && return 0
if [ "$key" -ge 1 ] && [ "$key" -le $((n-1)) ]; then
return "$key"
fi
elif [ "$key" = "q" ]; then
return 0
fi
done
}
+75
View File
@@ -0,0 +1,75 @@
#!/bin/bash
# ------------------------------------------------------------------------------
# Shared NEO block: version variables, SHA256 hashes, download with
# verification and install via apt. Sourced by the setup_*.sh modules.
#
# The next version update changes ONLY the 4 variables here
# (+ the NEO_HASHES values if the hashes change).
# Requires: common.sh already sourced (uses print_*), CWD = TEMP_DIR when
# calling install_neo_packages.
# ------------------------------------------------------------------------------
# --- Versions (pinned; no auto-detection) ---
IGC_TAG="v2.41.5" # release tag in intel/intel-graphics-compiler
IGC_BUILD="22716" # IGC package build: 2.41.5+22716
IGC_VERSION="${IGC_TAG#v}" # derived: 2.41.5
NEO_VERSION="26.35.39758.10" # release in intel/compute-runtime
GMM_VERSION="22.10.0" # libigdgmm12 (stable across releases)
# --- SHA256 hashes by package name (values change with each version) ---
declare -A NEO_HASHES=(
["intel-igc-core-2"]="0a6e64a663ae65a0fa02d6912ae3b6b37cf85b90c21cc423fd9fef70aaf4f628"
["intel-igc-opencl-2"]="779e1b9e88098eb25711e9a8f67c2752665bad22f134aa40ed5649f6e1b87058"
["intel-ocloc"]="c64bff586edf2bd9b49f3e4c9c2be25e05c43466e4dafa2a2c3948d498c736b7"
["intel-opencl-icd"]="61712caaddeba3d38e4f79e2a0fb23fea25596ca2d72c3144c6eea2331ec4301"
["libigdgmm12"]="6031a63d6e8a12ce61c14efc15f2c8e727061286e3820b8594e6d00615e04d54"
["libze-intel-gpu1"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470"
)
# --- Package filename by family ---
neo_pkg_filename() {
case "$1" in
intel-igc-core-2|intel-igc-opencl-2)
echo "${1}_${IGC_VERSION}+${IGC_BUILD}_amd64.deb" ;;
libigdgmm12)
echo "${1}_${GMM_VERSION}_amd64.deb" ;;
*)
echo "${1}_${NEO_VERSION}-0_amd64.deb" ;;
esac
}
# --- Download URL by family ---
neo_pkg_url() {
case "$1" in
intel-igc-core-2|intel-igc-opencl-2)
echo "https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_TAG}/$(neo_pkg_filename "$1")" ;;
*)
echo "https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/$(neo_pkg_filename "$1")" ;;
esac
}
# --- Download with SHA256 verification ---
download_and_verify() {
local url="$1"
local filename="$2"
local expected="$3"
wget -q --show-progress "$url" -O "$filename"
local actual
actual=$(sha256sum "$filename" | awk '{print $1}')
if [ "$actual" != "$expected" ]; then
print_error "SHA256 mismatch for $filename"
exit 1
fi
}
# --- Download + verify + install of the 6 production packages ---
install_neo_packages() {
local pkg f
for pkg in intel-igc-core-2 intel-igc-opencl-2 intel-ocloc libigdgmm12 libze-intel-gpu1 intel-opencl-icd; do
f="$(neo_pkg_filename "$pkg")"
download_and_verify "$(neo_pkg_url "$pkg")" "$f" "${NEO_HASHES[$pkg]}"
done
print_substep "Installing deb packages..."
apt-get install -y ./*.deb
}
+36 -9
View File
@@ -6,10 +6,40 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
if [ $# -lt 2 ]; then
print_error "Usage: $0 <URL> <OUTPUT_FILE> | $0 --install <FILE>"
print_error "Usage: $0 <URL> <OUTPUT_FILE> | $0 --extract <FILE> | $0 --install <FILE>"
exit 1
fi
if [ "$1" = "--extract" ]; then
FILENAME="$2"
if [ ! -f "$FILENAME" ]; then
print_error " $FILENAME could not be found to extract."
exit 1
fi
# Known before tar (enables partial-extraction cleanup on abort)
DIRNAME="${FILENAME%.tgz}"
# Cleanup ONLY on abort: the trap is set before tar and DISARMED on success —
# otherwise the EXIT trap deletes the just-extracted folder on 'exit 0' and
# the deps step (and the later --install) find nothing.
trap 'rm -rf "$DIRNAME"' EXIT
print_substep "Unzipping $FILENAME..."
if ! tar -xf "$FILENAME"; then
print_error "Extraction of $FILENAME failed."
exit 1 # trap fires: partial extraction is cleaned up
fi
trap - EXIT # success: keep the extracted folder for the deps and install steps
# fallback if the extracted folder name differs from the tarball name
if [ ! -d "$DIRNAME" ]; then
TAR_LIST=$(tar -tf "$FILENAME")
DIRNAME="${TAR_LIST%%$'\n'*}" # first entry (no pipe, no SIGPIPE)
DIRNAME="${DIRNAME%%/*}"
fi
exit 0
fi
if [ "$1" = "--install" ]; then
FILENAME="$2"
if [ ! -f "$FILENAME" ]; then
@@ -30,9 +60,9 @@ if [ "$1" = "--install" ]; then
INSTALL_DIR="/opt/intel/openvino_$(echo "$VERSION_FULL" | cut -d. -f1-3)"
# Replace policy (updates): remove ANY previous 2026 install and the previous symlink.
# Known limitation: the previous install is deleted BEFORE extracting; if the tar
# failed afterwards, the system would be left without OpenVINO. Acceptable because
# the SHA256 was already verified during the download step.
# Known limitation: the previous install is deleted BEFORE moving the new one; if the
# mv failed afterwards, the system would be left without OpenVINO. Acceptable because
# the extraction and its SHA256 verification already succeeded in the --extract step.
if ls -d /opt/intel/openvino_2026.* >/dev/null 2>&1; then
print_warning "An existing OpenVINO installation was found. Replacing it..."
fi
@@ -40,10 +70,7 @@ if [ "$1" = "--install" ]; then
rm -rf /opt/intel/openvino_2026.* # ANY previous 2026 install
mkdir -p /opt/intel
DIRNAME="${FILENAME%.tgz}" # known before tar (enables trap cleanup)
trap 'rm -rf "$DIRNAME"' EXIT
print_substep "Unzipping $FILENAME..."
tar -xf "$FILENAME"
DIRNAME="${FILENAME%.tgz}"
if [ ! -d "$DIRNAME" ]; then
# guess the real name
@@ -51,7 +78,7 @@ if [ "$1" = "--install" ]; then
DIRNAME="${TAR_LIST%%$'\n'*}" # first entry (no pipe, no SIGPIPE)
DIRNAME="${DIRNAME%%/*}"
fi
print_substep "Moving $DIRNAME a $INSTALL_DIR..."
print_substep "Moving $DIRNAME to $INSTALL_DIR..."
mv "$DIRNAME" "$INSTALL_DIR"
print_substep "Create symbolic link /opt/intel/openvino_2026..."
+57
View File
@@ -0,0 +1,57 @@
#!/bin/bash
# ------------------------------------------------------------------------------
# uninstall: removes OpenVINO Runtime (and optionally the NEO drivers).
# Sourced by main.sh (uninstall subcommand). Requires root to operate.
# Arguments: --purge-drivers (dpkg -r of the 6 NEO packages), --yes (no prompt).
# ------------------------------------------------------------------------------
run_uninstall() {
local PURGE_DRIVERS=false
local ASSUME_YES=false
while [ $# -gt 0 ]; do
case "$1" in
--purge-drivers) PURGE_DRIVERS=true ;;
--yes) ASSUME_YES=true ;;
*) break ;;
esac
shift
done
if [ "$EUID" -ne 0 ]; then
print_error "uninstall requires root. Use: sudo bash main.sh uninstall [--purge-drivers] [--yes]"
exit 1
fi
print_step "Uninstall: removing OpenVINO Runtime..."
# Mandatory confirmation (skipped with --yes)
if [ "$ASSUME_YES" != true ]; then
read -r -p "This will remove /opt/intel/openvino_2026* (all 2026 installations). Continue? [y/n]: " response || {
print_error "No input available. Uninstall cancelled."
exit 1
}
case "$response" in
[yY]*) ;;
*)
print_error "Uninstall cancelled by the user."
exit 0
;;
esac
fi
# Runtime: symlink OR real directory + any 2026 installation
# (rm -rf does not follow symlinks — covers both cases)
rm -rf /opt/intel/openvino_2026
rm -rf /opt/intel/openvino_2026.*
print_substep "OpenVINO Runtime removed (/opt/intel/openvino_2026*)"
# NEO drivers (optional, best-effort with a warning)
if [ "$PURGE_DRIVERS" = true ]; then
print_substep "Purging NEO drivers (dpkg -r)..."
if ! dpkg -r intel-opencl-icd intel-ocloc libigdgmm12 libze-intel-gpu1 intel-igc-core-2 intel-igc-opencl-2 2>/dev/null; then
print_warning "Some NEO packages were not installed (on Fedora: dnf remove intel-compute-runtime)"
fi
fi
print_substep "Uninstall completed."
}
+97 -13
View File
@@ -7,6 +7,79 @@ set -euo pipefail
# It supports Debian 13, Ubuntu 22.04/24.04/26.04, and Fedora (latest stable versions).
# ------------------------------------------------------------------------------
# routes
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CORE_DIR="$SCRIPT_DIR/core"
MODULES_DIR="$SCRIPT_DIR/modules"
# print
source "$CORE_DIR/common.sh"
# Subcommands (before the root check: doctor is a post-install user verification)
case "${1:-}" in
doctor)
shift
source "$CORE_DIR/doctor.sh"
run_doctor_checks
exit 0
;;
uninstall)
shift
source "$CORE_DIR/uninstall.sh"
run_uninstall "$@"
exit 0
;;
esac
# Option parsing (before the root check: parsing needs no privileges)
ASSUME_YES=false
FORCE_NO_GPU=false
while [ $# -gt 0 ]; do
case "$1" in
--yes) ASSUME_YES=true ;;
--no-gpu) FORCE_NO_GPU=true ;;
--help | -h)
echo "Usage: sudo bash main.sh [--yes] [--no-gpu] [doctor]"
echo " --yes non-interactive: assume 'yes' at the GPU-absent prompt"
echo " --no-gpu skip NEO drivers without prompting"
echo " doctor post-install verification (no root required)"
exit 0
;;
*)
print_error "Unknown option: $1 (use --help)"
exit 1
;;
esac
shift
done
# Menu (Pure-bash ANSI, cero dependencias): la entrada por defecto; los flags la bypassan
MODE="full"
if [ "$ASSUME_YES" != true ] && [ "$FORCE_NO_GPU" != true ]; then
source "$CORE_DIR/menu.sh"
sel=0
show_menu || sel=$?
case "$sel" in
0)
print_step "See you soon."
exit 0
;;
1) : ;;
2) MODE="neo" ;;
3) MODE="openvino" ;;
4)
source "$CORE_DIR/doctor.sh"
run_doctor_checks
exit 0
;;
5)
source "$CORE_DIR/uninstall.sh"
run_uninstall
exit 0
;;
esac
fi
# privileges
if [ "$EUID" -ne 0 ]; then
echo "ERROR: This script must be run as root. Use:"
@@ -14,15 +87,6 @@ if [ "$EUID" -ne 0 ]; then
exit 1
fi
# routes
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CORE_DIR="$SCRIPT_DIR/core"
MODULES_DIR="$SCRIPT_DIR/modules"
DEPS_DIR="$SCRIPT_DIR/deps"
# print
source "$CORE_DIR/common.sh"
print_step "============================================="
print_step " OpenVINO 2026 - SimpleInstaller"
print_step "============================================="
@@ -82,6 +146,11 @@ if [ -n "$GPU_LINE" ]; then
else
print_warning "No Intel GPU was detected."
GPU_PRESENT=false
if [ "$FORCE_NO_GPU" = true ]; then
print_substep "--no-gpu set: skipping NEO driver installation."
elif [ "$ASSUME_YES" = true ]; then
print_substep "--yes set: continuing WITHOUT GPU support."
else
read -r -p "Do you want to continue the installation WITHOUT GPU support? [y/n]: " response || {
print_error "No interactive input available (stdin closed). Installation cancelled."
exit 1
@@ -93,12 +162,13 @@ else
exit 0
;;
esac
fi
fi
# ------------------------------------------------------------------------------
# 3. Install NEO (only if there is a GPU)
# ------------------------------------------------------------------------------
if [ "$GPU_PRESENT" = true ]; then
if [ "$MODE" != "openvino" ] && [ "$GPU_PRESENT" = true ]; then
print_step "3. Installing GPU drivers (Intel Compute Runtime NEO)..."
case "$OS_ID" in
debian)
@@ -115,6 +185,11 @@ else
print_step "3. Skipping NEO driver installation (no Intel GPU)."
fi
if [ "$MODE" = "neo" ]; then
print_step "NEO installation finished."
exit 0
fi
# ------------------------------------------------------------------------------
# 4. Download OpenVINO Runtime
# ------------------------------------------------------------------------------
@@ -132,10 +207,19 @@ bash "$CORE_DIR/openvino_logic.sh" "$URL" "$FILENAME"
print_step "5. Integrity verification completed."
# ------------------------------------------------------------------------------
# 6. Install system dependencies for OpenVINO
# ------------------------------------------------------------------------------
print_step "6. Installing system dependencies (Python, cmake, etc.)..."
bash "$DEPS_DIR/install_openvino_dependencies.sh" -y
# 6. Extract the tarball and install system dependencies from it (official flow)
# ------------------------------------------------------------------------------
print_step "6. Extracting tarball and installing system dependencies..."
bash "$CORE_DIR/openvino_logic.sh" --extract "$FILENAME"
DEPS_SCRIPT="${FILENAME%.tgz}/install_dependencies/install_openvino_dependencies.sh"
if [ ! -f "$DEPS_SCRIPT" ]; then
print_error "Unexpected tarball layout: install_dependencies/ not found in the extracted folder."
exit 1
fi
print_substep "Installing system dependencies from the tarball..."
bash "$DEPS_SCRIPT" -y
# ------------------------------------------------------------------------------
# 7. Install OpenVINO
+2 -36
View File
@@ -4,6 +4,7 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../core/common.sh"
source "$SCRIPT_DIR/../core/neo_apt.sh"
print_step "Debian Module – Drivers and Multimedia"
@@ -44,42 +45,7 @@ cd "$TEMP_DIR"
trap 'rm -rf "$TEMP_DIR"' EXIT
# Hashes SHA256
declare -A NEO_HASHES=(
["intel-igc-core-2_2.41.5+22716_amd64.deb"]="0a6e64a663ae65a0fa02d6912ae3b6b37cf85b90c21cc423fd9fef70aaf4f628"
["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]="779e1b9e88098eb25711e9a8f67c2752665bad22f134aa40ed5649f6e1b87058"
["intel-ocloc_26.35.39758.10-0_amd64.deb"]="c64bff586edf2bd9b49f3e4c9c2be25e05c43466e4dafa2a2c3948d498c736b7"
["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]="61712caaddeba3d38e4f79e2a0fb23fea25596ca2d72c3144c6eea2331ec4301"
["libigdgmm12_22.10.0_amd64.deb"]="6031a63d6e8a12ce61c14efc15f2c8e727061286e3820b8594e6d00615e04d54"
["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470"
)
download_and_verify() {
local url="$1"
local filename="$2"
local expected="$3"
wget -q --show-progress "$url" -O "$filename"
actual=$(sha256sum "$filename" | awk '{print $1}')
if [ "$actual" != "$expected" ]; then
print_error "SHA256 mismatch para $filename"
exit 1
fi
}
download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-core-2_2.41.5+22716_amd64.deb" \
"intel-igc-core-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-core-2_2.41.5+22716_amd64.deb"]}"
download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-opencl-2_2.41.5+22716_amd64.deb" \
"intel-igc-opencl-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-ocloc_26.35.39758.10-0_amd64.deb" \
"intel-ocloc_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-ocloc_26.35.39758.10-0_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-opencl-icd_26.35.39758.10-0_amd64.deb" \
"intel-opencl-icd_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libigdgmm12_22.10.0_amd64.deb" \
"libigdgmm12_22.10.0_amd64.deb" "${NEO_HASHES["libigdgmm12_22.10.0_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libze-intel-gpu1_26.35.39758.10-0_amd64.deb" \
"libze-intel-gpu1_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]}"
print_substep "Instalando paquetes deb..."
apt-get install -y ./*.deb
install_neo_packages
cd /
rm -rf "$TEMP_DIR"
+3 -36
View File
@@ -3,6 +3,7 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../core/common.sh"
source "$SCRIPT_DIR/../core/neo_apt.sh"
print_step "Ubuntu Module – Drivers and Multimedia"
@@ -32,47 +33,13 @@ TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
trap 'rm -rf "$TEMP_DIR"' EXIT
declare -A NEO_HASHES=(
["intel-igc-core-2_2.41.5+22716_amd64.deb"]="0a6e64a663ae65a0fa02d6912ae3b6b37cf85b90c21cc423fd9fef70aaf4f628"
["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]="779e1b9e88098eb25711e9a8f67c2752665bad22f134aa40ed5649f6e1b87058"
["intel-ocloc_26.35.39758.10-0_amd64.deb"]="c64bff586edf2bd9b49f3e4c9c2be25e05c43466e4dafa2a2c3948d498c736b7"
["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]="61712caaddeba3d38e4f79e2a0fb23fea25596ca2d72c3144c6eea2331ec4301"
["libigdgmm12_22.10.0_amd64.deb"]="6031a63d6e8a12ce61c14efc15f2c8e727061286e3820b8594e6d00615e04d54"
["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470"
)
download_and_verify() {
local url="$1"
local filename="$2"
local expected="$3"
wget -q --show-progress "$url" -O "$filename"
actual=$(sha256sum "$filename" | awk '{print $1}')
if [ "$actual" != "$expected" ]; then
print_error "SHA256 mismatch para $filename"
exit 1
fi
}
download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-core-2_2.41.5+22716_amd64.deb" \
"intel-igc-core-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-core-2_2.41.5+22716_amd64.deb"]}"
download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-opencl-2_2.41.5+22716_amd64.deb" \
"intel-igc-opencl-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-ocloc_26.35.39758.10-0_amd64.deb" \
"intel-ocloc_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-ocloc_26.35.39758.10-0_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-opencl-icd_26.35.39758.10-0_amd64.deb" \
"intel-opencl-icd_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libigdgmm12_22.10.0_amd64.deb" \
"libigdgmm12_22.10.0_amd64.deb" "${NEO_HASHES["libigdgmm12_22.10.0_amd64.deb"]}"
download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libze-intel-gpu1_26.35.39758.10-0_amd64.deb" \
"libze-intel-gpu1_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]}"
apt-get install -y ./*.deb
install_neo_packages
cd /
rm -rf "$TEMP_DIR"
# ---- 4. add user ----
print_substep "Añadiendo usuario a grupos render y video..."
print_substep "Adding user to render and video groups..."
if [ -n "${SUDO_USER:-}" ]; then
usermod -a -G render,video "$SUDO_USER"
else