Last active
April 20, 2025 13:30
-
-
Save cguldogan/5353f84781a6f56dc453cbbf04c9f875 to your computer and use it in GitHub Desktop.
install-dev-stack
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
# Function to check if a package is installed | |
is_installed() { | |
dpkg -s "$1" &> /dev/null | |
} | |
echo "π Updating package list..." | |
sudo apt-get update | |
# --- Essentials and Build Tools --- | |
essentials=( | |
git build-essential gcc g++ pkg-config cmake cmake-curses-gui | |
python3 python3-pip libmbedtls-dev libssl-dev libsasl2-dev | |
check libsubunit-dev libcurl4-openssl-dev | |
sphinx-doc sphinx-common graphviz python3-sphinx-rtd-theme | |
gdb valgrind htop net-tools | |
libgtk-4-dev libwebkitgtk-6.0-dev | |
) | |
for pkg in "${essentials[@]}"; do | |
if ! is_installed "$pkg"; then | |
echo "π¦ Installing $pkg..." | |
sudo apt-get install -y "$pkg" | |
else | |
echo "β $pkg already installed." | |
fi | |
done | |
# --- Mosquitto MQTT --- | |
if ! is_installed mosquitto; then | |
echo "π¦ Installing Mosquitto..." | |
sudo apt-get install -y mosquitto mosquitto-clients libmosquitto-dev | |
sudo systemctl enable mosquitto | |
sudo systemctl start mosquitto | |
else | |
echo "β Mosquitto is already installed." | |
fi | |
# --- MongoDB 8.0 --- | |
if ! command -v mongod &> /dev/null; then | |
echo "π¦ Installing MongoDB 8.0..." | |
sudo apt-get install -y gnupg curl wget | |
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor | |
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | \ | |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list | |
sudo apt-get update | |
sudo apt-get install -y mongodb-org | |
sudo systemctl enable mongod | |
sudo systemctl start mongod | |
else | |
echo "β MongoDB is already installed." | |
fi | |
# --- MongoDB Compass --- | |
if ! command -v mongodb-compass &> /dev/null; then | |
echo "π¦ Installing MongoDB Compass..." | |
wget https://downloads.mongodb.com/compass/mongodb-compass_1.45.4_amd64.deb | |
sudo apt install -y ./mongodb-compass_1.45.4_amd64.deb | |
rm mongodb-compass_1.45.4_amd64.deb | |
else | |
echo "β MongoDB Compass is already installed." | |
fi | |
# --- .NET 9 SDK --- | |
if ! command -v dotnet &> /dev/null || [[ "$(dotnet --version)" != 9.* ]]; then | |
echo "π¦ Installing .NET SDK 9..." | |
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb | |
sudo dpkg -i packages-microsoft-prod.deb | |
rm packages-microsoft-prod.deb | |
sudo apt-get update | |
sudo apt-get install -y dotnet-sdk-9.0 | |
else | |
echo "β .NET SDK 9 is already installed." | |
fi | |
# --- MongoDB C Driver --- | |
if ! ldconfig -p | grep -q "libmongoc-1.0"; then | |
echo "π¦ Installing MongoDB C Driver..." | |
cd /tmp | |
curl -LO https://github.com/mongodb/mongo-c-driver/releases/download/1.26.0/mongo-c-driver-1.26.0.tar.gz | |
tar -xzf mongo-c-driver-1.26.0.tar.gz | |
cd mongo-c-driver-1.26.0 | |
mkdir build && cd build | |
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF .. | |
cmake --build . --parallel | |
sudo cmake --install . | |
sudo ldconfig | |
else | |
echo "β MongoDB C driver already installed." | |
fi | |
# --- MongoDB C++ Driver --- | |
if ! ldconfig -p | grep -q "libmongocxx"; then | |
echo "π¦ Installing MongoDB C++ Driver..." | |
cd /tmp | |
curl -LO https://github.com/mongodb/mongo-cxx-driver/releases/download/r3.10.1/mongo-cxx-driver-r3.10.1.tar.gz | |
tar -xzf mongo-cxx-driver-r3.10.1.tar.gz | |
cd mongo-cxx-driver-r3.10.1/build | |
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local | |
cmake --build . --parallel | |
sudo cmake --install . | |
sudo ldconfig | |
else | |
echo "β MongoDB C++ driver already installed." | |
fi | |
# --- Open62541 (OPC UA Server) --- | |
OPEN62541_DIR="$HOME/open62541" | |
if [ ! -d "$OPEN62541_DIR" ]; then | |
echo "π¦ Installing Open62541 OPC UA Server in $OPEN62541_DIR..." | |
git clone https://github.com/open62541/open62541.git "$OPEN62541_DIR" | |
cd "$OPEN62541_DIR" | |
git checkout v1.4.6 | |
mkdir build && cd build | |
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | |
-DUA_ENABLE_ENCRYPTION=OPENSSL -DUA_NAMESPACE_ZERO=FULL \ | |
-DUA_ENABLE_SUBSCRIPTIONS=ON .. | |
make -j$(nproc) | |
make install | |
ldconfig | |
else | |
echo "β Open62541 already installed in $OPEN62541_DIR." | |
fi | |
echo "π All components installed and ready!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment