1
0
mirror of https://github.com/containers/ramalama.git synced 2026-02-05 06:46:39 +01:00
Files
ramalama/install.sh
Eric Curtin e25bc4a357 More cuda vLLM enablement
Get this working fully

Signed-off-by: Eric Curtin <ecurtin@redhat.com>
2025-07-26 21:40:58 +01:00

173 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
available() {
command -v "$1" >/dev/null
}
nvidia_lshw() {
lshw -c display -numeric -disable network | grep -q 'vendor: .* \[10DE\]'
}
amd_lshw() {
lshw -c display -numeric -disable network | grep -q 'vendor: .* \[1002\]'
}
mthreads_lshw() {
lshw -c display -numeric -disable network | grep -q 'vendor: .* \[1ED5\]'
}
dnf_install() {
if grep -q ostree= /proc/cmdline; then
return 1
fi
$sudo dnf install -y "$1"
return 0
}
dnf_install_podman() {
if ! available podman; then
dnf_install podman || true
fi
}
apt_install() {
apt install -y "$1"
}
apt_update_install() {
if ! available podman; then
$sudo apt update || true
# only install docker if podman can't be
if ! $sudo apt_install podman; then
if ! available docker; then
$sudo apt_install docker || true
fi
fi
fi
}
install_mac_dependencies() {
if [ "$EUID" -eq 0 ]; then
echo "This script is intended to run as non-root on macOS"
return 1
fi
if ! available "brew"; then
echo "RamaLama requires brew to complete installation."
echo
echo "To install brew please run:"
echo
echo "curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash"
echo
return 2
fi
brew install llama.cpp
echo
}
check_platform() {
if [ "$os" = "Darwin" ]; then
install_mac_dependencies
elif [ "$os" = "Linux" ]; then
if [ "$EUID" -ne 0 ]; then
if ! available sudo; then
error "This script is intended to run as root on Linux"
return 3
fi
sudo="sudo"
fi
else
echo "This script is intended to run on Linux and macOS only"
return 4
fi
return 0
}
parse_arguments() {
while [[ $# -gt 0 ]]; do
case "$1" in
-l)
local_install="true"
shift
;;
*)
break
esac
done
}
print_banner() {
echo -e " _____ _\n" \
"| __ \ | |\n" \
"| |__) |__ _ _ __ ___ __ _| | __ _ _ __ ___ __ _\n" \
"| _ // _\` | '_ \` _ \ / _\` | | / _\` | '_ \` _ \ / _\` |\n" \
"| | \ \ (_| | | | | | | (_| | |___| (_| | | | | | | (_| |\n" \
"|_| \_\__,_|_| |_| |_|\__,_|______\__,_|_| |_| |_|\__,_|\n"
}
print_success_info() {
echo
echo "====================== Installation Completed ======================"
echo "Success! RamaLama has been installed successfully."
echo "For further details, check the documentation at:"
echo "https://github.com/containers/ramalama/tree/main/docs"
echo "Or use the '--help' flag to learn more about usage."
echo "===================================================================="
}
is_python3_at_least_310() {
python3 -c 'import sys; exit(0 if sys.version_info >= (3, 10) else 1)'
}
install_uv() {
local host="raw.githubusercontent.com"
local install_uv_url="https://$host/containers/ramalama/s/install-uv.sh"
curl -fsSL "$install_uv_url" | bash
echo
}
main() {
set -e -o pipefail
print_banner
local local_install="false"
parse_arguments "$@"
local os
os="$(uname -s)"
local sudo=""
check_platform
if ! $local_install && [ -z "$BRANCH" ]; then
if available dnf; then
dnf_install_podman
if is_python3_at_least_310 && dnf_install "ramalama"; then
return 0
fi
elif available apt; then
apt_update_install
fi
if available brew && brew install ramalama; then
install_uv
uv tool install mlx-lm
return 0
fi
fi
install_uv
uv tool install --force --python python3.11 ramalama
print_success_info
}
main "$@"