137 lines
4.4 KiB
Bash
Executable File
137 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# install.sh - Установка Stego App
|
|
# Запуск: chmod +x install.sh && ./install.sh
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "Установка Stego App"
|
|
echo "=========================================="
|
|
|
|
PROJECT_DIR="$(pwd)"
|
|
USER_BIN="$HOME/.local/bin"
|
|
|
|
# 1. Проверка Python
|
|
if ! command -v python3 &> /dev/null; then
|
|
echo "❌ Python 3 не найден"
|
|
echo "Установите Python 3.8+: sudo apt install python3 python3-pip python3-venv"
|
|
exit 1
|
|
fi
|
|
echo "✓ Python найден: $(python3 --version)"
|
|
|
|
# 2. Установка Tkinter (для GUI)
|
|
if ! python3 -c "import tkinter" &> /dev/null; then
|
|
echo "Установка Tkinter..."
|
|
sudo apt update
|
|
sudo apt install python3-tk -y
|
|
fi
|
|
echo "✓ Tkinter установлен"
|
|
|
|
# 3. Создание виртуального окружения
|
|
echo "Создание виртуального окружения..."
|
|
if [ -d ".venv" ]; then
|
|
echo "Виртуальное окружение уже существует, обновляем..."
|
|
rm -rf .venv
|
|
fi
|
|
python3 -m venv .venv
|
|
echo "✓ Виртуальное окружение создано"
|
|
|
|
# 4. Установка зависимостей
|
|
echo "Установка зависимостей..."
|
|
source .venv/bin/activate
|
|
pip install --upgrade pip
|
|
pip install numpy pillow scipy
|
|
deactivate
|
|
echo "✓ Зависимости установлены"
|
|
|
|
# 5. Создание запускаторов
|
|
echo "Создание запускаторов..."
|
|
mkdir -p "$USER_BIN"
|
|
|
|
cat > "$USER_BIN/stego" << EOF
|
|
#!/bin/bash
|
|
cd "$PROJECT_DIR"
|
|
source .venv/bin/activate
|
|
python main.py "\$@"
|
|
EOF
|
|
|
|
cat > "$USER_BIN/stego-gui" << EOF
|
|
#!/bin/bash
|
|
cd "$PROJECT_DIR"
|
|
source .venv/bin/activate
|
|
python main.py --gui
|
|
EOF
|
|
|
|
chmod +x "$USER_BIN/stego"
|
|
chmod +x "$USER_BIN/stego-gui"
|
|
echo "✓ Запускаторы созданы: stego, stego-gui"
|
|
|
|
# 6. Добавление ~/.local/bin в PATH (если нужно)
|
|
if [[ ":$PATH:" != *":$USER_BIN:"* ]]; then
|
|
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
|
|
echo "✓ PATH обновлён. Перезагрузите терминал или выполните: source ~/.bashrc"
|
|
fi
|
|
|
|
# 7. Установка иконки
|
|
echo "Установка иконки..."
|
|
if [ -f "icons/stego.png" ]; then
|
|
sudo mkdir -p /usr/local/share/stego/icons
|
|
sudo cp icons/stego.png /usr/local/share/stego/icons/
|
|
echo "✓ Иконка установлена"
|
|
else
|
|
echo "⚠️ Иконка не найдена: icons/stego.png"
|
|
fi
|
|
|
|
# 8. Установка .desktop файла (ярлык в меню)
|
|
echo "Установка ярлыка в меню..."
|
|
mkdir -p ~/.local/share/applications
|
|
cat > ~/.local/share/applications/stego.desktop << DESKTOP
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Stego App
|
|
Comment=Сокрытие данных в изображениях
|
|
Exec=$USER_BIN/stego-gui
|
|
Icon=/usr/local/share/stego/icons/stego.png
|
|
Terminal=false
|
|
Categories=Graphics;Utility;
|
|
StartupNotify=true
|
|
DESKTOP
|
|
|
|
# 9. Ярлык на рабочий стол (опционально)
|
|
read -p "Создать ярлык на рабочем столе? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
cat > ~/Desktop/stego.desktop << DESKTOP
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Stego App
|
|
Comment=Сокрытие данных в изображениях
|
|
Exec=$USER_BIN/stego-gui
|
|
Icon=/usr/local/share/stego/icons/stego.png
|
|
Terminal=false
|
|
Categories=Graphics;
|
|
StartupNotify=true
|
|
DESKTOP
|
|
chmod +x ~/Desktop/stego.desktop
|
|
echo "✓ Ярлык создан на рабочем столе"
|
|
fi
|
|
|
|
# Обновление базы приложений
|
|
update-desktop-database ~/.local/share/applications/ 2>/dev/null || true
|
|
update-desktop-database /usr/share/applications/ 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "✅ Установка завершена!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Запуск GUI: stego-gui"
|
|
echo "CLI справка: stego --help"
|
|
echo "LSB кодирование: stego encode lsb image.png out.png -m \"Сообщение\""
|
|
echo "LSB декодирование: stego decode lsb out.png"
|
|
echo ""
|
|
echo "Ярлык появится в меню приложений (Graphics/Stego App)"
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "Ярлык также создан на рабочем столе"
|
|
fi
|
|
echo "==========================================" |