Installation Troubleshooting Guide¶
Updated January 2025 - Version 2.0.0
Overview¶
This guide helps resolve common installation issues for both Docker and manual installations of EEMT. Each section includes symptoms, diagnosis steps, and solutions. Many critical issues have been fixed in version 2.0.0.
🎉 Recently Fixed Issues (v2.0.0)¶
The following issues have been resolved and should no longer occur:
Web Interface Workflow Submission¶
Previous Issue: JSON parsing errors, container preparation hanging at 25% Status: ✅ FIXED Solution Implemented: Enhanced error handling with proper content-type checking
System Resource Detection¶
Previous Issue: Displayed "unknown (subprocess mode)" instead of actual resources Status: ✅ FIXED Solution Implemented: Added psutil-based CPU and memory detection
Job Monitoring¶
Previous Issue: Jobs not appearing, progress bars stuck Status: ✅ FIXED Solution Implemented: Enhanced progress parsing and job persistence
System Status Updates¶
Previous Issue: Timestamp stuck at "Updating..." Status: ✅ FIXED Solution Implemented: Fixed API error handling and response processing
Docker Installation Issues¶
Docker Daemon Not Running¶
Symptoms:
Solution:
# Linux
sudo systemctl start docker
sudo systemctl enable docker
# macOS - Start Docker Desktop from Applications
# Windows - Start Docker Desktop from Start Menu
# Verify Docker is running
docker ps
Permission Denied Errors¶
Symptoms:
Solution:
# Add user to docker group (Linux)
sudo usermod -aG docker $USER
# Log out and back in, then verify
groups | grep docker
# Alternative: use sudo (not recommended)
sudo docker-compose up
Container Build Failures¶
Symptoms:
Current Container Versions (v2.0.0): - eemt:ubuntu24.04 - Image ID: e3a84eb59c8e - eemt-web:latest - Image ID: e8e8fa0d382d
Solutions:
-
Network Issues:
-
Proxy Configuration:
-
Disk Space:
Port Already in Use¶
Symptoms:
Solution:
# Find process using port 5000
sudo lsof -i :5000 # Linux/macOS
netstat -ano | findstr :5000 # Windows
# Kill the process or use different port
# Edit docker-compose.yml
ports:
- "5001:5000" # Change host port to 5001
Volume Mount Issues¶
Symptoms:
Solutions:
-
Path Format (Windows):
-
Permissions:
Manual Installation Issues¶
Python Version Conflicts¶
Symptoms:
Solutions:
-
Install Python 3.11:
-
Use pyenv:
GRASS GIS Not Found¶
Symptoms:
Solutions:
-
Verify Installation:
-
Add to PATH:
-
Install Missing Dependencies:
GDAL Import Errors¶
Symptoms:
Solutions:
-
Version Mismatch:
-
Missing Libraries:
CCTools/Makeflow Issues¶
Symptoms:
Solutions:
-
Compilation Errors:
-
Library Path Issues:
NumPy/SciPy Installation Failures¶
Symptoms:
Solutions:
-
Install System Dependencies:
-
Use Pre-built Wheels:
Platform-Specific Issues¶
WSL2 (Windows)¶
GPU Access:
# Install CUDA support for WSL2
# Download from: https://developer.nvidia.com/cuda/wsl
# Verify GPU access
nvidia-smi
# Enable in Docker
docker run --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
File System Performance:
# Use native Linux filesystem for better performance
cd /home/username # Good performance
# Avoid /mnt/c/ # Poor performance
# Move data to WSL filesystem
cp -r /mnt/c/Users/username/data ~/data
macOS Apple Silicon¶
Architecture Issues:
# Install Rosetta 2
softwareupdate --install-rosetta
# Run with specific architecture
arch -x86_64 python script.py # Intel
arch -arm64 python script.py # ARM
# Check binary architecture
file $(which python)
Homebrew Paths:
# M1/M2 Homebrew location
export PATH=/opt/homebrew/bin:$PATH
# Intel Homebrew location
export PATH=/usr/local/bin:$PATH
SELinux (CentOS/RHEL)¶
Permission Denials:
# Check SELinux status
getenforce
# Temporary disable (testing only)
sudo setenforce 0
# Proper fix - set context
sudo chcon -Rt svirt_sandbox_file_t /path/to/data
# Or add SELinux rule
sudo setsebool -P container_manage_cgroup on
Web Interface Specific Issues¶
Resource Detection Shows Incorrect Values¶
Symptoms:
Solution:
# Ensure psutil is installed
pip install psutil
# Restart web interface
python app.py
# Verify detection is working
curl http://localhost:5000/api/system/status
Docker Subprocess Mode Issues¶
Symptoms:
Solution:
# Ensure user has Docker permissions
sudo usermod -aG docker $USER
# Log out and back in
# Test Docker access
docker ps
# For Docker Compose deployments
docker-compose up --build
Container Orchestration Problems¶
Symptoms:
Solution:
# Check container logs
docker logs <container_id>
# Verify volume mounts
docker inspect <container_id> | grep -A 10 Mounts
# Ensure workflow scripts are accessible
docker run --rm eemt:ubuntu24.04 ls /opt/eemt/
Diagnostic Commands¶
Enhanced System Information (v2.0.0)¶
#!/bin/bash
# Save as diagnose.sh
echo "System Diagnostics for EEMT"
echo "============================"
echo ""
# OS Information
echo "Operating System:"
if [ -f /etc/os-release ]; then
. /etc/os-release
echo " $NAME $VERSION"
else
echo " $(uname -s) $(uname -r)"
fi
# Architecture
echo " Architecture: $(uname -m)"
echo ""
# Python
echo "Python Environment:"
echo " Python: $(python3 --version 2>&1)"
echo " Pip: $(pip --version 2>&1)"
echo " Virtual Env: ${VIRTUAL_ENV:-Not activated}"
echo ""
# Docker
echo "Docker Status:"
if command -v docker &> /dev/null; then
echo " $(docker --version)"
echo " Daemon: $(docker ps &> /dev/null && echo 'Running' || echo 'Not running')"
# Check EEMT images
echo " EEMT Images:"
docker images | grep eemt | sed 's/^/ /'
# Check running containers
echo " Running Containers:"
docker ps --filter "ancestor=eemt:ubuntu24.04" --filter "ancestor=eemt-web:latest" | sed 's/^/ /'
else
echo " Docker: Not installed"
fi
echo ""
# GRASS GIS
echo "GRASS GIS:"
if command -v grass &> /dev/null; then
grass --version 2>&1 | head -1 | sed 's/^/ /'
else
echo " Not found in PATH"
fi
echo ""
# GDAL
echo "GDAL:"
if command -v gdalinfo &> /dev/null; then
gdalinfo --version | sed 's/^/ /'
else
echo " Not found in PATH"
fi
echo ""
# Disk Space
echo "Disk Space:"
df -h . | tail -1 | awk '{print " Available: "$4" of "$2}'
echo ""
# Memory
echo "Memory:"
if command -v free &> /dev/null; then
free -h | grep Mem | awk '{print " Total: "$2", Available: "$7}'
else
echo " Unable to determine"
fi
Dependency Check¶
#!/usr/bin/env python3
# Save as check_deps.py
import sys
import subprocess
def check_import(module):
"""Check if a Python module can be imported."""
try:
__import__(module)
return True, None
except ImportError as e:
return False, str(e)
def check_command(cmd):
"""Check if a system command exists."""
try:
subprocess.run([cmd, '--version'],
capture_output=True,
check=False)
return True
except FileNotFoundError:
return False
# Python modules to check (updated for v2.0.0)
modules = [
'numpy', 'pandas', 'xarray', 'rasterio',
'geopandas', 'dask', 'scipy', 'matplotlib',
'fastapi', 'uvicorn', 'psutil', 'docker'
]
# System commands to check
commands = ['grass', 'gdalinfo', 'docker', 'makeflow']
print("EEMT Dependency Check")
print("=" * 40)
print("\nPython Modules:")
for module in modules:
success, error = check_import(module)
status = "✓" if success else "✗"
print(f" {status} {module:20} {'OK' if success else error}")
print("\nSystem Commands:")
for cmd in commands:
success = check_command(cmd)
status = "✓" if success else "✗"
print(f" {status} {cmd:20} {'Found' if success else 'Not found'}")
print("\nPython Version:", sys.version)
Getting Help¶
If these solutions don't resolve your issue:
-
Collect Diagnostic Information:
-
Search Existing Issues:
- GitHub Issues
-
Create New Issue with:
- Diagnostic output
- Complete error messages
- Steps to reproduce
-
Installation method attempted
-
Community Support:
- GitHub Discussions
- GRASS GIS Mailing List
Return to Installation Overview or proceed to Quick Start Guide.