mirror of
https://github.com/mudler/LocalAI.git
synced 2025-04-25 05:19:47 +00:00
fix: installation script compatibility with fedora 41 and later, fedora headless unclear errors (#5239)
Update installation script for improved compatibility and clarity - Renamed VERSION to LOCALAI_VERSION to avoid conflicts with system variables. - Enhanced NVIDIA and CUDA repository installation for DNF5 compatibility. - Adjusted default Fedora version handling for CUDA installation. - Updated Docker image tag handling to use LOCALAI_VERSION consistently. - Improved logging messages for repository and LocalAI binary downloads. - Added a temporary bypass for nvidia-smi installation on Fedora Cloud Edition.
This commit is contained in:
parent
3937407cb3
commit
1ae0b896fa
74
docs/static/install.sh
vendored
74
docs/static/install.sh
vendored
@ -161,7 +161,7 @@ else
|
|||||||
fi
|
fi
|
||||||
THREADS=${THREADS:-$procs}
|
THREADS=${THREADS:-$procs}
|
||||||
LATEST_VERSION=$(curl -s "https://api.github.com/repos/mudler/LocalAI/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
LATEST_VERSION=$(curl -s "https://api.github.com/repos/mudler/LocalAI/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||||
VERSION="${VERSION:-$LATEST_VERSION}"
|
LOCALAI_VERSION="${LOCALAI_VERSION:-$LATEST_VERSION}" #changed due to VERSION beign already defined in Fedora 42 Cloud Edition
|
||||||
MODELS_PATH=${MODELS_PATH:-/usr/share/local-ai/models}
|
MODELS_PATH=${MODELS_PATH:-/usr/share/local-ai/models}
|
||||||
|
|
||||||
|
|
||||||
@ -261,13 +261,20 @@ EOF
|
|||||||
|
|
||||||
# ref: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-yum-or-dnf
|
# ref: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-yum-or-dnf
|
||||||
install_container_toolkit_yum() {
|
install_container_toolkit_yum() {
|
||||||
info 'Installing NVIDIA repository...'
|
info 'Installing NVIDIA container toolkit repository...'
|
||||||
|
|
||||||
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
|
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
|
||||||
$SUDO tee /etc/yum.repos.d/nvidia-container-toolkit.repo
|
$SUDO tee /etc/yum.repos.d/nvidia-container-toolkit.repo
|
||||||
|
|
||||||
if [ "$PACKAGE_MANAGER" = "dnf" ]; then
|
if [ "$PACKAGE_MANAGER" = "dnf" ]; then
|
||||||
$SUDO $PACKAGE_MANAGER config-manager --enable nvidia-container-toolkit-experimental
|
DNF_VERSION=$($PACKAGE_MANAGER --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 | cut -d. -f1)
|
||||||
|
if [ "$DNF_VERSION" -ge 5 ]; then
|
||||||
|
# DNF5: Use 'setopt' to enable the repository
|
||||||
|
$SUDO $PACKAGE_MANAGER config-manager setopt nvidia-container-toolkit-experimental.enabled=1
|
||||||
|
else
|
||||||
|
# DNF4: Use '--set-enabled' to enable the repository
|
||||||
|
$SUDO $PACKAGE_MANAGER config-manager --enable nvidia-container-toolkit-experimental
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
$SUDO $PACKAGE_MANAGER -y install yum-utils
|
$SUDO $PACKAGE_MANAGER -y install yum-utils
|
||||||
$SUDO $PACKAGE_MANAGER-config-manager --enable nvidia-container-toolkit-experimental
|
$SUDO $PACKAGE_MANAGER-config-manager --enable nvidia-container-toolkit-experimental
|
||||||
@ -277,7 +284,7 @@ install_container_toolkit_yum() {
|
|||||||
|
|
||||||
# ref: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
|
# ref: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
|
||||||
install_container_toolkit_apt() {
|
install_container_toolkit_apt() {
|
||||||
info 'Installing NVIDIA repository...'
|
info 'Installing NVIDIA container toolkit repository...'
|
||||||
|
|
||||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | $SUDO gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
|
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | $SUDO gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
|
||||||
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
||||||
@ -289,7 +296,7 @@ install_container_toolkit_apt() {
|
|||||||
|
|
||||||
# ref: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-zypper
|
# ref: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-zypper
|
||||||
install_container_toolkit_zypper() {
|
install_container_toolkit_zypper() {
|
||||||
info 'Installing NVIDIA repository...'
|
info 'Installing NVIDIA zypper repository...'
|
||||||
$SUDO zypper ar https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
|
$SUDO zypper ar https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
|
||||||
$SUDO zypper modifyrepo --enable nvidia-container-toolkit-experimental
|
$SUDO zypper modifyrepo --enable nvidia-container-toolkit-experimental
|
||||||
$SUDO zypper --gpg-auto-import-keys install -y nvidia-container-toolkit
|
$SUDO zypper --gpg-auto-import-keys install -y nvidia-container-toolkit
|
||||||
@ -325,14 +332,21 @@ install_container_toolkit() {
|
|||||||
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#rhel-9-rocky-9
|
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#rhel-9-rocky-9
|
||||||
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#fedora
|
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#fedora
|
||||||
install_cuda_driver_yum() {
|
install_cuda_driver_yum() {
|
||||||
info 'Installing NVIDIA repository...'
|
info 'Installing NVIDIA CUDA repository...'
|
||||||
case $PACKAGE_MANAGER in
|
case $PACKAGE_MANAGER in
|
||||||
yum)
|
yum)
|
||||||
$SUDO $PACKAGE_MANAGER -y install yum-utils
|
$SUDO $PACKAGE_MANAGER -y install yum-utils
|
||||||
$SUDO $PACKAGE_MANAGER-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-$1$2.repo
|
$SUDO $PACKAGE_MANAGER-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-$1$2.repo
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
$SUDO $PACKAGE_MANAGER config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-$1$2.repo
|
DNF_VERSION=$($PACKAGE_MANAGER --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 | cut -d. -f1)
|
||||||
|
if [ "$DNF_VERSION" -ge 5 ]; then
|
||||||
|
# DNF5: Use 'addrepo' to add the repository
|
||||||
|
$SUDO $PACKAGE_MANAGER config-manager addrepo --id=nome-repo --set=name="nvidia-cuda" --set=baseurl="https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-$1$2.repo"
|
||||||
|
else
|
||||||
|
# DNF4: Use '--add-repo' to add the repository
|
||||||
|
$SUDO $PACKAGE_MANAGER config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-$1$2.repo
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -356,7 +370,7 @@ install_cuda_driver_yum() {
|
|||||||
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu
|
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu
|
||||||
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#debian
|
# ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#debian
|
||||||
install_cuda_driver_apt() {
|
install_cuda_driver_apt() {
|
||||||
info 'Installing NVIDIA repository...'
|
info 'Installing NVIDIA CUDA repository...'
|
||||||
curl -fsSL -o $TEMP_DIR/cuda-keyring.deb https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-keyring_1.1-1_all.deb
|
curl -fsSL -o $TEMP_DIR/cuda-keyring.deb https://developer.download.nvidia.com/compute/cuda/repos/$1$2/$(uname -m)/cuda-keyring_1.1-1_all.deb
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
@ -395,7 +409,7 @@ install_cuda() {
|
|||||||
case $OS_NAME in
|
case $OS_NAME in
|
||||||
centos|rhel) install_cuda_driver_yum 'rhel' $(echo $OS_VERSION | cut -d '.' -f 1) ;;
|
centos|rhel) install_cuda_driver_yum 'rhel' $(echo $OS_VERSION | cut -d '.' -f 1) ;;
|
||||||
rocky) install_cuda_driver_yum 'rhel' $(echo $OS_VERSION | cut -c1) ;;
|
rocky) install_cuda_driver_yum 'rhel' $(echo $OS_VERSION | cut -c1) ;;
|
||||||
fedora) [ $OS_VERSION -lt '37' ] && install_cuda_driver_yum $OS_NAME $OS_VERSION || install_cuda_driver_yum $OS_NAME '37';;
|
fedora) [ $OS_VERSION -lt '41' ] && install_cuda_driver_yum $OS_NAME $OS_VERSION || install_cuda_driver_yum $OS_NAME '41';;
|
||||||
amzn) install_cuda_driver_yum 'fedora' '37' ;;
|
amzn) install_cuda_driver_yum 'fedora' '37' ;;
|
||||||
debian) install_cuda_driver_apt $OS_NAME $OS_VERSION ;;
|
debian) install_cuda_driver_apt $OS_NAME $OS_VERSION ;;
|
||||||
ubuntu) install_cuda_driver_apt $OS_NAME $(echo $OS_VERSION | sed 's/\.//') ;;
|
ubuntu) install_cuda_driver_apt $OS_NAME $(echo $OS_VERSION | sed 's/\.//') ;;
|
||||||
@ -502,20 +516,24 @@ install_docker() {
|
|||||||
|
|
||||||
IMAGE_TAG=
|
IMAGE_TAG=
|
||||||
if [ "$HAS_CUDA" ]; then
|
if [ "$HAS_CUDA" ]; then
|
||||||
IMAGE_TAG=${VERSION}-cublas-cuda12-ffmpeg
|
IMAGE_TAG=${LOCALAI_VERSION}-cublas-cuda12-ffmpeg
|
||||||
# CORE
|
# CORE
|
||||||
if [ "$CORE_IMAGES" = true ]; then
|
if [ "$CORE_IMAGES" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-cublas-cuda12-ffmpeg-core
|
IMAGE_TAG=${LOCALAI_VERSION}-cublas-cuda12-ffmpeg-core
|
||||||
fi
|
fi
|
||||||
# AIO
|
# AIO
|
||||||
if [ "$USE_AIO" = true ]; then
|
if [ "$USE_AIO" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-aio-gpu-nvidia-cuda-12
|
IMAGE_TAG=${LOCALAI_VERSION}-aio-gpu-nvidia-cuda-12
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! available nvidia-smi; then
|
if ! available nvidia-smi; then
|
||||||
info "Installing nvidia-cuda-toolkit..."
|
#TODO Temporary Bypass for Fedora Headless (Cloud Edition), need to find a way to install nvidia-smi without pulling x11
|
||||||
# TODO:
|
OS_NAME=$ID
|
||||||
$SUDO apt-get -y install nvidia-cuda-toolkit
|
OS_VERSION=$VERSION_ID
|
||||||
|
|
||||||
|
case $OS_NAME in
|
||||||
|
debian|ubuntu) $SUDO apt-get -y install nvidia-cuda-toolkit;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$SUDO docker run -v local-ai-data:/build/models \
|
$SUDO docker run -v local-ai-data:/build/models \
|
||||||
@ -526,14 +544,14 @@ install_docker() {
|
|||||||
$envs \
|
$envs \
|
||||||
-d -p $PORT:8080 --name local-ai localai/localai:$IMAGE_TAG $STARTCOMMAND
|
-d -p $PORT:8080 --name local-ai localai/localai:$IMAGE_TAG $STARTCOMMAND
|
||||||
elif [ "$HAS_AMD" ]; then
|
elif [ "$HAS_AMD" ]; then
|
||||||
IMAGE_TAG=${VERSION}-hipblas-ffmpeg
|
IMAGE_TAG=${LOCALAI_VERSION}-hipblas-ffmpeg
|
||||||
# CORE
|
# CORE
|
||||||
if [ "$CORE_IMAGES" = true ]; then
|
if [ "$CORE_IMAGES" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-hipblas-ffmpeg-core
|
IMAGE_TAG=${LOCALAI_VERSION}-hipblas-ffmpeg-core
|
||||||
fi
|
fi
|
||||||
# AIO
|
# AIO
|
||||||
if [ "$USE_AIO" = true ]; then
|
if [ "$USE_AIO" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-aio-gpu-hipblas
|
IMAGE_TAG=${LOCALAI_VERSION}-aio-gpu-hipblas
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$SUDO docker run -v local-ai-data:/build/models \
|
$SUDO docker run -v local-ai-data:/build/models \
|
||||||
@ -545,14 +563,14 @@ install_docker() {
|
|||||||
$envs \
|
$envs \
|
||||||
-d -p $PORT:8080 --name local-ai localai/localai:$IMAGE_TAG $STARTCOMMAND
|
-d -p $PORT:8080 --name local-ai localai/localai:$IMAGE_TAG $STARTCOMMAND
|
||||||
elif [ "$HAS_INTEL" ]; then
|
elif [ "$HAS_INTEL" ]; then
|
||||||
IMAGE_TAG=${VERSION}-sycl-f32-ffmpeg
|
IMAGE_TAG=${LOCALAI_VERSION}-sycl-f32-ffmpeg
|
||||||
# CORE
|
# CORE
|
||||||
if [ "$CORE_IMAGES" = true ]; then
|
if [ "$CORE_IMAGES" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-sycl-f32-ffmpeg-core
|
IMAGE_TAG=${LOCALAI_VERSION}-sycl-f32-ffmpeg-core
|
||||||
fi
|
fi
|
||||||
# AIO
|
# AIO
|
||||||
if [ "$USE_AIO" = true ]; then
|
if [ "$USE_AIO" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-aio-gpu-intel-f32
|
IMAGE_TAG=${LOCALAI_VERSION}-aio-gpu-intel-f32
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$SUDO docker run -v local-ai-data:/build/models \
|
$SUDO docker run -v local-ai-data:/build/models \
|
||||||
@ -563,14 +581,14 @@ install_docker() {
|
|||||||
$envs \
|
$envs \
|
||||||
-d -p $PORT:8080 --name local-ai localai/localai:$IMAGE_TAG $STARTCOMMAND
|
-d -p $PORT:8080 --name local-ai localai/localai:$IMAGE_TAG $STARTCOMMAND
|
||||||
else
|
else
|
||||||
IMAGE_TAG=${VERSION}-ffmpeg
|
IMAGE_TAG=${LOCALAI_VERSION}-ffmpeg
|
||||||
# CORE
|
# CORE
|
||||||
if [ "$CORE_IMAGES" = true ]; then
|
if [ "$CORE_IMAGES" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-ffmpeg-core
|
IMAGE_TAG=${LOCALAI_VERSION}-ffmpeg-core
|
||||||
fi
|
fi
|
||||||
# AIO
|
# AIO
|
||||||
if [ "$USE_AIO" = true ]; then
|
if [ "$USE_AIO" = true ]; then
|
||||||
IMAGE_TAG=${VERSION}-aio-cpu
|
IMAGE_TAG=${LOCALAI_VERSION}-aio-cpu
|
||||||
fi
|
fi
|
||||||
$SUDO docker run -v local-ai-data:/models \
|
$SUDO docker run -v local-ai-data:/models \
|
||||||
--restart=always \
|
--restart=always \
|
||||||
@ -588,8 +606,8 @@ install_docker() {
|
|||||||
install_binary_darwin() {
|
install_binary_darwin() {
|
||||||
[ "$(uname -s)" = "Darwin" ] || fatal 'This script is intended to run on macOS only.'
|
[ "$(uname -s)" = "Darwin" ] || fatal 'This script is intended to run on macOS only.'
|
||||||
|
|
||||||
info "Downloading LocalAI ${VERSION}..."
|
info "Downloading LocalAI ${LOCALAI_VERSION}..."
|
||||||
curl --fail --show-error --location --progress-bar -o $TEMP_DIR/local-ai "https://github.com/mudler/LocalAI/releases/download/${VERSION}/local-ai-Darwin-${ARCH}"
|
curl --fail --show-error --location --progress-bar -o $TEMP_DIR/local-ai "https://github.com/mudler/LocalAI/releases/download/${LOCALAI_VERSION}/local-ai-Darwin-${ARCH}"
|
||||||
|
|
||||||
info "Installing to /usr/local/bin/local-ai"
|
info "Installing to /usr/local/bin/local-ai"
|
||||||
install -o0 -g0 -m755 $TEMP_DIR/local-ai /usr/local/bin/local-ai
|
install -o0 -g0 -m755 $TEMP_DIR/local-ai /usr/local/bin/local-ai
|
||||||
@ -620,8 +638,8 @@ install_binary() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "Downloading LocalAI ${VERSION}..."
|
info "Downloading LocalAI ${LOCALAI_VERSION}..."
|
||||||
curl --fail --location --progress-bar -o $TEMP_DIR/local-ai "https://github.com/mudler/LocalAI/releases/download/${VERSION}/local-ai-Linux-${ARCH}"
|
curl --fail --location --progress-bar -o $TEMP_DIR/local-ai "https://github.com/mudler/LocalAI/releases/download/${LOCALAI_VERSION}/local-ai-Linux-${ARCH}"
|
||||||
|
|
||||||
for BINDIR in /usr/local/bin /usr/bin /bin; do
|
for BINDIR in /usr/local/bin /usr/bin /bin; do
|
||||||
echo $PATH | grep -q $BINDIR && break || continue
|
echo $PATH | grep -q $BINDIR && break || continue
|
||||||
|
Loading…
x
Reference in New Issue
Block a user