-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathinstall.sh
executable file
·120 lines (100 loc) · 2.94 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
available() {
command -v $1 >/dev/null
}
install_dnf() {
if sed "s/\s/\n/g" /proc/cmdline | grep -q -m1 "^ostree="; then
RPM_OSTREE="true"
if rpm-ostree install podman 2>&1 | grep -v "already provided"; then
echo 'Reboot to complete podman install.'
fi
elif available dnf; then
dnf -y install podman
elif available yum; then
yum -y install podman
fi
}
install_apt() {
DEBIAN_FRONTEND=noninteractive apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y install podman -q
}
cleanup() {
rm -rf "$TMP" &
}
lshw_display() {
$SUDO lshw -c display -numeric
}
check_gpu() {
if available "lspci" && lspci -d '10de:' | grep -q 'NVIDIA'; then
NVIDIA="true"
elif available "lshw" && lshw_display | grep -q 'vendor: .* \[10DE\]'; then
NVIDIA="true"
fi
}
error() {
echo "ERROR $*"
exit 1
}
set -e -o pipefail
if [ "$(uname -s)" != "Linux" ]; then
error 'This script is intended to run on Linux only.'
fi
if [ "$EUID" -ne 0 ]; then
for BINDIR in $HOME/bin $HOME/.local/bin $HOME/bin; do
echo $PATH | grep -q $BINDIR && break || continue
done
echo "rootless install, will install podman-ollama only, installing in: $BINDIR"
fi
. /etc/os-release
if [ "$EUID" -eq 0 ]; then
RPM_OSTREE="false"
case $ID in
centos|rhel|autosd|rocky|fedora|fedora-asahi-remix|amzn) install_dnf ;;
debian|ubuntu) install_apt ;;
esac
fi
NVIDIA="false"
check_gpu
if [ "$EUID" -eq 0 ] && ! $RPM_OSTREE; then
# This is a downstream version of the ollama install script, until podman
# related patches get reviewed:
# https://github.com/ollama/ollama/pulls/ericcurtin
URL="raw.githubusercontent.com/ericcurtin/podman-ollama/s/ollama-install.sh"
curl -fsSL "https://$URL" | OLLAMA_CONTAINER_MANAGER="podman" sh
fi
if [ -z "$BINDIR" ]; then
for BINDIR in /usr/local/bin /usr/bin /bin; do
echo $PATH | grep -q $BINDIR && break || continue
done
fi
FROM="podman-ollama"
FROM_COMPLETE="podman-ollama-complete"
TO="$BINDIR/$FROM"
TO_COMPLETE="/etc/bash_completion.d/$FROM_COMPLETE"
if [ -z "$1" ]; then
TMP="$(mktemp -d)"
trap cleanup EXIT
URL="raw.githubusercontent.com/ericcurtin/podman-ollama/s/$FROM"
URL_COMPLETE="raw.githubusercontent.com/ericcurtin/podman-ollama/s/$FROM_COMPLETE"
FROM="$TMP/$FROM"
FROM_COMPLETE="$TMP/$FROM_COMPLETE"
curl -fsSL -o "$FROM" "https://$URL"
curl -fsSL -o "$FROM_COMPLETE" "https://$URL_COMPLETE"
fi
install -D -m755 "$FROM" "$TO"
install -D -m644 "$FROM_COMPLETE" "$TO_COMPLETE" || true
if [ "$EUID" -eq 0 ] && $RPM_OSTREE; then
echo "rpm-ostree installs are not fully automated for NVIDIA GPUs, if using NVIDIA refer to:"
echo
echo " https://raw.githubusercontent.com/ericcurtin/podman-ollama/main/ollama-install.sh"
echo
echo "and ensure packages are installed for:"
echo
echo " nvidia-container-toolkit"
echo " nvidia-driver-latest-dkms"
echo " cuda-drivers"
echo " kernel-devel"
echo " kernel-headers"
echo
echo "and reboot"
fi