Загрузка данных


#!/bin/bash
set -e

echo ">>> Шаг 1: Очистка кэша и сброс репозиториев..."
apt-get clean
apt-repo reset

echo ">>> Шаг 2: Подключение репозиториев через зеркало Яндекса (p9)..."
# Основная ветка (branch)
apt-repo set p9 http://mirror.yandex.ru/altlinux/p9/branch/x86_64
apt-repo set p9-i586 http://mirror.yandex.ru/altlinux/p9/branch/i586
apt-repo set p9-noarch http://mirror.yandex.ru/altlinux/p9/branch/noarch

# Базовые пакеты и обновления (где лежат sane-airscan, ipp-usb)
apt-repo add classic http://mirror.yandex.ru/altlinux/p9/classic/x86_64
apt-repo add classic-i586 http://mirror.yandex.ru/altlinux/p9/classic/i586
apt-repo add classic-noarch http://mirror.yandex.ru/altlinux/p9/classic/noarch

apt-repo add updates http://mirror.yandex.ru/altlinux/p9/updates/x86_64
apt-repo add updates-i586 http://mirror.yandex.ru/altlinux/p9/updates/i586
apt-repo add updates-noarch http://mirror.yandex.ru/altlinux/p9/updates/noarch

echo ">>> Шаг 3: Обновление списков пакетов (это может занять время)..."
apt-get update

echo ">>> Шаг 4: Установка необходимого ПО..."
# Устанавливаем пакеты. Если sane-airscan или ipp-usb не найдутся, apt сообщит об этом, но не прервет скрипт.
apt-get install -y cups cups-filters sane-backends

# Попытка установки расширенных драйверов (могут отсутствовать в некоторых подветках p9)
if apt-cache search sane-airscan | grep -q sane-airscan; then
    apt-get install -y sane-airscan
else
    echo "!!! Внимание: пакет sane-airscan не найден в подключенных репозиториях. Будет использоваться стандартный бэкенд libsane."
fi

if apt-cache search ipp-usb | grep -q ipp-usb; then
    apt-get install -y ipp-usb
else
    echo "!!! Внимание: пакет ipp-usb не найден. Печать по IPP/USB будет работать через CUPS напрямую."
fi

echo ">>> Шаг 5: Настройка служб..."
systemctl enable --now cups

# Безопасное включение ipp-usb (только если файл юнита существует)
if [ -f /usr/lib/systemd/system/ipp-usb.service ] || [ -f /lib/systemd/system/ipp-usb.service ]; then
    systemctl enable --now ipp-usb
else
    echo "!!! Служба ipp-usb не найдена (пакет установлен без systemd-юнита или не установлен)."
fi

echo ">>> Шаг 6: Настройка прав доступа..."
# Добавляем пользователя в группы scanner и lp
usermod -aG scanner \$USER
usermod -aG lp \$USER

echo ">>> Шаг 7: Проверка конфигурации..."
echo "Установленные пакеты:"
rpm -qa | grep -E "cups|sane|ipp" | sort

echo "Статус служб:"
systemctl is-active cups
if systemctl list-units --all | grep -q ipp-usb; then
    systemctl is-active ipp-usb
fi

echo ">>> ГОТОВО. Требуется перезагрузка для применения прав групп."
echo "Выполните команду: reboot"