- paru -R cryptopro-csp-k1
- выдаст ошибку, перейти в .cache/paru/clone/cryptopro-csp-k1
- здесь https://aur.archlinux.org/packages/cryptopro-csp-k1 есть коммент скачать пакет https://cryptopro.ru/sites/default/files/private/csp/50/13600/linux-amd64.tgz
- скачиваем в .cache/paru/clone/cryptopro-csp-k1
- paru -R cryptopro-csp-k1
- paru -S rutoken-plugin
- скачиваем пакеты deb из https://saby.ru/help/plugin/sbis3plugin/install_notconnection
- mkdir -p ~/saby_install_temp
- sudo pacman -S dpkg
- find ~/Загрузки -maxdepth 1 -iname "*.deb" -exec dpkg -x {} ~/saby_install_temp/ ;
- sudo cp -rn ~/saby_install_temp/opt/* /opt/
- sudo cp -rn ~/saby_install_temp/usr/* /usr/
- sudo chown -R root:root /opt/Tensor 2>/dev/null
- sudo chmod -R 755 /opt/Tensor 2>/dev/null
- sudo chown -R root:root /opt/nmh-transport 2>/dev/null
- sudo chmod -R 755 /opt/nmh-transport 2>/dev/null
- запустить /opt/Tensor/Saby/temp_saby/26.1200.489/service/saby
- sudo pacman -S opensc pcsc-tools
- sudo systemctl enable --now pcscd.socket
- sudo systemctl start pcscd.service
- /opt/cprocsp/bin/amd64/cptools # проверить что виден вставленный токен
По мотивам статьи:
https://manjaro.ru/d/129-ustanovit-sbis-plagin
и
https://cryptopro.ru/forum2/default.aspx?g=posts&t=20461
Скачать deb-пакеты отсюда в папку Downloads.
Открыть терминал, ввести cd ~/Downloads и затем создать новую папку для установки
mkdir -p ~/saby_install_temp Распаковать их командой
find ~/Downloads -maxdepth 1 -iname "*.deb" -exec dpkg -x {} ~/saby_install_temp/ ; Эта команда найдет все файлы .deb в ~/Downloads (независимо от регистра букв) и распакует их в папку saby_install_temp.
Скопировать в систему с помощью команд
sudo cp -rn ~/saby_install_temp/opt/* /opt/ и
sudo cp -rn ~/saby_install_temp/usr/* /usr/ (если папки нет, cp просто её не создаст, но и не упадет с ошибкой).
Выполнить команды:
sudo chown -R root:root /opt/Tensor 2>/dev/null sudo chmod -R 755 /opt/Tensor 2>/dev/null sudo chown -R root:root /opt/nmh-transport 2>/dev/null sudo chmod -R 755 /opt/nmh-transport 2>/dev/null Проверить, есть ли конфиги во временной папке:
ls -la ~/saby_install_temp/usr/share/ Там должна быть папка Tensor, если она есть, то выполнить:
sudo mkdir -p /usr/share/Tensor sudo cp -r ~/saby_install_temp/usr/share/Tensor/* /usr/share/Tensor/ Выдать права доступа:
sudo chown -R root:root /usr/share/Tensor sudo chmod -R 755 /usr/share/Tensor Запустить Saby Center как фоновый процесс:
nohup /opt/Tensor/Saby/temp_saby/26.1200.489/service/saby > /tmp/saby_log.txt 2>&1 & Выполнить проверку, работает ли служба:
ps aux | grep saby Проверить, появился ли в трее значок Саби (он может быть серым и виснуть в статусе "Загрузка" или "Loading", но он всё равно работает, не нужно его тыкать и пытаться перезапустить).
Известные проблемы: После обновления системы вся установка Саби слетает, нужно будет делать её заново. Для того, чтобы не делать это постоянно вручную, я написал однокнопочный скрипт-установщик:
#!/bin/bash
GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color
log_info() { echo -e "${GREEN}[INFO]${NC} $1" }
log_error() { echo -e "${RED}[ERROR]${NC} $1" }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" }
INSTALL_DIR="$HOME/saby_auto_install" mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" || exit 1
log_info "Начинаю установку Saby..."
log_info "ЭТАП 1: Проверка и отключение Read-Only файловой системы..." if steamos-readonly status | grep -q "readonly"; then log_info "Система в режиме Read-Only. Отключаю..." sudo steamos-readonly disable if [ $? -eq 0 ]; then log_info "Успешно отключено." else log_error "Не удалось отключить RO. Попробуйте вручную: sudo steamos-readonly disable" exit 1 fi else log_info "Система уже в режиме Read-Write." fi
log_info "ЭТАП 2: Проверка утилиты dpkg..." DPKG_OK=true
if [ ! -f "/usr/bin/dpkg" ]; then DPKG_OK=false elif ! dpkg --version &> /dev/null; then DPKG_OK=false fi
if [ "$DPKG_OK" = false ]; then log_error "dpkg не найден или работает некорректно." echo "" # Текст, который вы просили вставить cat << 'EOF' Привет! Я расшифровал ваше сообщение (вероятно, вы забыли переключить раскладку):
«Пожалуйста, помогите сделать в правильном порядке для установки это приложение программу».
Судя по логам, вы пытаетесь установить пакеты .deb (формата Debian/Ubuntu) на Steam Deck (который работает на Arch Linux) с помощью утилиты dpkg.
У вас возникли две ошибки:
- conflicting files: Файл /usr/bin/dpkg уже существует в системе (вероятно, остался от неудачной установки или был скопирован вручную), поэтому pacman не может установить нормальную версию dpkg.
- Permission denied: Когда вы пытаетесь запустить dpkg в цикле, система обращается к "сломанному" файлу, который не имеет прав на выполнение.
Вам нужно удалить "битый" файл, установить dpkg правильно через пакетный менеджер, а потом распаковать ваши архивы.
Выполните следующие команды по очереди в терминале:
Эта команда удалит старый/битый файл, который мешает установке.
sudo rm /usr/bin/dpkg
Теперь pacman сможет установить программу без конфликтов.
sudo pacman -S dpkg
(На вопрос "Proceed with installation?" нажмите Y и Enter).
Теперь, когда dpkg установлен и работает, ваша команда должна выполниться успешно. Убедитесь, что вы находитесь в нужной папке (где лежат .deb файлы).
cd ~/saby_install_temp for file in debs/*.deb; do dpkg -x "$file" .; done
Просто распаковать файлы (как вы делаете командой dpkg -x) может быть недостаточно для запуска программы, так как СБИС — это сложное приложение с множеством зависимостей (библиотек).
На Steam Deck (Arch Linux) пакеты .deb обычно не устанавливаются напрямую.
- Если вам нужно просто запустить: Попробуйте найти папку с исполняемым файлом после распаковки (часто это opt/СБИС/... или похожий путь) и запустить файл напрямую.
- Если нужно установить "как положено": Для Arch Linux существует утилита debtap, которая конвертирует .deb пакеты в родной формат Arch (.pkg.tar.zst). Это более надежный способ, так как он проверит зависимости.
Если после распаковки программа не запускается, напишите, и я подскажу, как конвертировать пакеты или запустить их через Proton (Windows-версию), если Linux-версия СБИС капризная. EOF echo "" read -p "Хотите, чтобы скрипт попытался исправить это автоматически? (y/n): " choice if [[ "$choice" == "y" || "$choice" == "Y" ]]; then log_info "Попытка удаления старого dpkg..." sudo rm -f /usr/bin/dpkg log_info "Установка dpkg через pacman..." sudo pacman -S --noconfirm dpkg if [ $? -eq 0 ]; then log_info "dpkg успешно установлен." else log_error "Не удалось установить dpkg. Прерывание." exit 1 fi else log_error "Установка прервана пользователем." exit 1 fi else log_info "dpkg найден и работает корректно." fi
log_info "ЭТАП 3: Скачивание необходимых .deb пакетов..."
declare -A URLs=( ["saby.deb"]="https://update.saby.ru/SabyDesktop/master/linux/deb_repo/saby.deb" ["sabycenter.deb"]="https://update.saby.ru/SabyCenter/master/linux/sabycenter.deb" ["nmh-transport.deb"]="https://update.saby.ru/NmhTransport/master/linux/nmh-transport.deb" ["sbis-libstdc++12.deb"]="https://update.saby.ru/SabyDesktop/master/linux/deb_repo/sbis-libstdc++12.deb" )
for filename in "${!URLs[@]}"; do url="${URLs[$filename]}" if [ -f "$filename" ]; then log_warn "Файл $filename уже существует. Пропускаю скачивание." else log_info "Скачиваю $filename с $url ..." wget -q --show-progress "$url" -O "$filename" if [ $? -ne 0 ]; then log_error "Не удалось скачать $filename." fi fi done log_info "Скачивание завершено."
log_info "ЭТАП 4: Распаковка пакетов..." for file in *.deb; do log_info "Распаковываю $file ..." dpkg -x "$file" . done log_info "Распаковка завершена."
log_info "ЭТАП 5: Установка файлов в системные директории..."
if [ -d "opt" ]; then sudo cp -rn opt/* /opt/ log_info "/opt обновлен." else log_warn "Папка opt не найдена в распакованных файлах." fi
if [ -d "usr/share" ]; then sudo cp -rn usr/share/* /usr/share/ log_info "/usr/share обновлен." else log_warn "Папка usr/share не найдена." fi
if [ -d "usr/lib" ]; then sudo cp -rn usr/lib/* /usr/lib/ log_info "/usr/lib обновлен." fi
log_info "ЭТАП 6: Настройка прав доступа (chown/chmod)..."
for dir in "/opt/Tensor" "/opt/tensor"; do if [ -d "$dir" ]; then sudo chown -R root:root "$dir" sudo chmod -R 755 "$dir" log_info "Права настроены для $dir" fi done
for dir in "/opt/NmhTransport" "/opt/nmh-transport"; do if [ -d "$dir" ]; then sudo chown -R root:root "$dir" sudo chmod -R 755 "$dir" log_info "Права настроены для $dir" fi done
log_info "ЭТАП 7: Настройка автозагрузки через systemd..."
SABY_BIN=$(find /opt/Tensor/Saby -path "*/service/saby" -type f | head -n 1)
if [ -z "$SABY_BIN" ]; then log_error "Не удалось найти исполняемый файл saby для настройки службы!" log_error "Автозагрузка не настроена. Вам придется запускать вручную." else log_info "Найден бинарник: $SABY_BIN"
mkdir -p ~/.config/systemd/user/
cat > ~/.config/systemd/user/saby.service << EOF
[Unit] Description=Saby Background Service After=graphical-session.target
[Service] ExecStart=$SABY_BIN Restart=on-failure RestartSec=5
[Install] WantedBy=default.target EOF
log_info "Файл службы создан."
# Перезагрузка и запуск демона
systemctl --user daemon-reload
systemctl --user enable saby.service
systemctl --user start saby.service
# Проверка статуса
sleep 2
if systemctl --user is-active --quiet saby.service; then
log_info "Служба Saby успешно запущена и добавлена в автозагрузку!"
else
log_error "Служба не запустилась. Проверьте логи: journalctl --user -u saby.service"
fi
fi
log_info "ЭТАП 8: Очистка временных файлов..."
Удаляем папку установки, но оставляем .deb файлы на всякий случай (можно раскомментировать rm для полной чистки)
cd ~
log_warn "ВНИМАНИЕ: Сейчас скрипт включит защиту файловой системы (steamos-readonly enable)." log_warn "Это может помешать автоматическим обновлениям Saby и записи логов." log_warn "Если Saby будет работать некорректно, выполните: sudo steamos-readonly disable"
read -p "Включить защиту сейчас? (y/n): " ro_choice if [[ "$ro_choice" == "y" || "$ro_choice" == "Y" ]]; then sudo steamos-readonly enable log_info "Защита включена." else log_warn "Защита осталась выключенной." fi
echo "" log_info "==================================================" log_info "УСТАНОВКА ЗАВЕРШЕНА!" log_info "==================================================" log_info "Если служба запустилась, Saby уже работает в фоне." log_info "Проверьте статус: systemctl --user status saby.service" log_info "==================================================" Засуньте его в install_saby.sh:
nano ~/install_saby.sh Вставьте туда код выше. Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X). Сделайте файл исполняемым:
chmod +x ~/install_saby.sh Запустите:
~/install_saby.sh Также можно сделать скрипт ручного запуска и скрипт автозапуска. Создаём скрипт для запуска:
cat > ~/start_saby.sh << 'EOF' #!/bin/bash
SABY_BIN="/opt/Tensor/Saby/temp_saby/26.1200.489/service/saby"
if pgrep -f "$SABY_BIN" > /dev/null; then echo "Saby уже запущен." exit 0 fi
echo "Запускаю Saby..."
nohup "$SABY_BIN" > /tmp/saby_log.txt 2>&1 & echo "Saby запущен. Логи: /tmp/saby_log.txt" EOF Делаем его исполняемым:
chmod +x ~/start_saby.sh Теперь, когда вам нужно запустить Saby вручную, просто напишите в терминале:
~/start_saby.sh Теперь сделаем автозапуск Саби как службы. В терминал копируем и вставляем целиком:
mkdir -p ~/.config/systemd/user/ cat > ~/.config/systemd/user/saby.service << 'EOF' [Unit] Description=Saby Background Service After=graphical-session.target
[Service]
ExecStart=/opt/Tensor/Saby/temp_saby/26.1200.489/service/saby Restart=on-failure RestartSec=5
[Install] WantedBy=default.target EOF Теперь нужно сказать системе, чтобы она загрузила этот файл и добавила в автозагрузку:
systemctl --user daemon-reload systemctl --user enable saby.service systemctl --user start saby.service Убедимся, что служба активна:
systemctl --user status saby.service Возможно это будет полезно новым пользователям Саби, у которых система на основе Arch Linux, типа SteamOS, CachyOS, Manjaro, Garuda, BlendOS и других.
Инструкции из этой темы подразумевают, что вы разобрались, как поставить Chromium-GOST, Рутокен/JaKarta и библиотеки зависимостей на свою машину под управлением Arch-based системы. Если нужна инструкция по полной интеграции всех этих ништяков в Arch-based Linux или инструкция для ДиаДок, то напишите мне в лс форума или здесь, в комментариях.