-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall_dependencies.sh
More file actions
executable file
·224 lines (179 loc) · 5.73 KB
/
install_dependencies.sh
File metadata and controls
executable file
·224 lines (179 loc) · 5.73 KB
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#!/bin/bash
# Skrypt automatycznej instalacji zależności dla Generator Kodów QR
# Wspiera Ubuntu/Debian, Arch Linux, Fedora/CentOS
set -e # Zatrzymaj skrypt w przypadku błędu
echo "=================================="
echo "Generator Kodów QR - Instalator zależności"
echo "=================================="
# Funkcja wykrywania dystrybucji
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO=$ID
VERSION=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
DISTRO=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
VERSION=$(lsb_release -sr)
elif [ -f /etc/redhat-release ]; then
DISTRO="centos"
else
echo "❌ Nie można wykryć dystrybucji Linuxa"
exit 1
fi
echo "🔍 Wykryto dystrybucję: $DISTRO $VERSION"
}
# Instalacja dla Ubuntu/Debian
install_debian() {
echo "📦 Instalacja zależności dla Ubuntu/Debian..."
sudo apt update
# Podstawowe narzędzia budowania
sudo apt install -y build-essential cmake pkg-config git
# Qt6
echo "🔧 Instalacja Qt6..."
sudo apt install -y qt6-base-dev qt6-tools-dev
# libqrencode
echo "📱 Instalacja libqrencode..."
sudo apt install -y libqrencode-dev
# OpenCV
echo "👁 Instalacja OpenCV..."
sudo apt install -y libopencv-dev
echo "✅ Instalacja zależności zakończona pomyślnie!"
}
# Instalacja dla Arch Linux/Manjaro
install_arch() {
echo "📦 Instalacja zależności dla Arch Linux..."
# Aktualizacja systemu
sudo pacman -Syu --noconfirm
# Podstawowe narzędzia
sudo pacman -S --noconfirm base-devel cmake pkgconf git
# Qt6
echo "🔧 Instalacja Qt6..."
sudo pacman -S --noconfirm qt6-base qt6-tools
# libqrencode
echo "📱 Instalacja qrencode..."
sudo pacman -S --noconfirm qrencode
# OpenCV
echo "👁 Instalacja OpenCV..."
sudo pacman -S --noconfirm opencv
echo "✅ Instalacja zależności zakończona pomyślnie!"
}
# Instalacja dla Fedora/CentOS
install_fedora() {
echo "📦 Instalacja zależności dla Fedora/CentOS..."
# Wybór menedżera pakietów
if command -v dnf &> /dev/null; then
PKG_MGR="dnf"
elif command -v yum &> /dev/null; then
PKG_MGR="yum"
else
echo "❌ Nie znaleziono dnf ani yum"
exit 1
fi
# Podstawowe narzędzia
sudo $PKG_MGR install -y gcc-c++ cmake pkgconfig git
sudo $PKG_MGR groupinstall -y "Development Tools"
# Qt6
echo "🔧 Instalacja Qt6..."
sudo $PKG_MGR install -y qt6-qtbase-devel
# libqrencode
echo "📱 Instalacja qrencode..."
sudo $PKG_MGR install -y qrencode-devel
# OpenCV
echo "👁 Instalacja OpenCV..."
sudo $PKG_MGR install -y opencv-devel
echo "✅ Instalacja zależności zakończona pomyślnie!"
}
# Instalacja dla openSUSE
install_opensuse() {
echo "📦 Instalacja zależności dla openSUSE..."
sudo zypper refresh
# Podstawowe narzędzia
sudo zypper install -y gcc-c++ cmake pkg-config git
sudo zypper install -y -t pattern devel_basis
# Qt6
echo "🔧 Instalacja Qt6..."
sudo zypper install -y qt6-base-devel
# libqrencode
echo "📱 Instalacja qrencode..."
sudo zypper install -y libqrencode-devel
# OpenCV
echo "👁 Instalacja OpenCV..."
sudo zypper install -y opencv-devel
echo "✅ Instalacja zależności zakończona pomyślnie!"
}
# Weryfikacja instalacji
verify_installation() {
echo ""
echo "🔍 Weryfikacja instalacji..."
# Sprawdź cmake
if command -v cmake &> /dev/null; then
echo "✅ CMake: $(cmake --version | head -n1)"
else
echo "❌ CMake nie został zainstalowany"
fi
# Sprawdź gcc
if command -v g++ &> /dev/null; then
echo "✅ G++: $(g++ --version | head -n1)"
else
echo "❌ G++ nie został zainstalowany"
fi
# Sprawdź pkg-config
if command -v pkg-config &> /dev/null; then
echo "✅ pkg-config: $(pkg-config --version)"
else
echo "❌ pkg-config nie został zainstalowany"
fi
# Sprawdź qrencode
if pkg-config --exists libqrencode; then
echo "✅ libqrencode: $(pkg-config --modversion libqrencode)"
else
echo "❌ libqrencode nie został zainstalowany"
fi
# Sprawdź OpenCV
if pkg-config --exists opencv4; then
echo "✅ OpenCV: $(pkg-config --modversion opencv4)"
elif pkg-config --exists opencv; then
echo "✅ OpenCV: $(pkg-config --modversion opencv)"
else
echo "❌ OpenCV nie został zainstalowany"
fi
}
# Główna funkcja
main() {
detect_distro
case $DISTRO in
ubuntu|debian|linuxmint|pop)
install_debian
;;
arch|manjaro|cachyos|endeavouros)
install_arch
;;
fedora|centos|rhel)
install_fedora
;;
opensuse*|sled|sles)
install_opensuse
;;
*)
echo "❌ Nieobsługiwana dystrybucja: $DISTRO"
echo "📖 Sprawdź README.md dla instrukcji instalacji ręcznej"
exit 1
;;
esac
verify_installation
echo ""
echo "🎉 Instalacja zakończona!"
echo "📁 Możesz teraz skompilować projekt:"
echo " mkdir build && cd build"
echo " cmake .."
echo " make"
echo " ./bin/qr-generator"
}
# Sprawdź czy skrypt jest uruchamiany jako root
if [[ $EUID -eq 0 ]]; then
echo "❌ Nie uruchamiaj tego skryptu jako root!"
echo " Skrypt automatycznie użyje sudo gdy będzie potrzebne"
exit 1
fi
# Uruchom główną funkcję
main "$@"