Skip to content

Instantly share code, notes, and snippets.

@vmpartner
Last active March 9, 2026 20:53
Show Gist options
  • Select an option

  • Save vmpartner/77a59edcb9b03fd027021cad431e6034 to your computer and use it in GitHub Desktop.

Select an option

Save vmpartner/77a59edcb9b03fd027021cad431e6034 to your computer and use it in GitHub Desktop.
Установка saby и криптопро в cachyos
  • 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

=============================================================================

SCRYPT: Автоматическая установка Saby на SteamOS

Включает: Отключение RO, проверку dpkg, скачивание, распаковку, настройку systemd

=============================================================================

Цвета для вывода

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..."

=============================================================================

ЭТАП 1: Отключение защиты файловой системы

=============================================================================

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

=============================================================================

ЭТАП 2: Проверка и исправление dpkg

=============================================================================

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.

У вас возникли две ошибки:

  1. conflicting files: Файл /usr/bin/dpkg уже существует в системе (вероятно, остался от неудачной установки или был скопирован вручную), поэтому pacman не может установить нормальную версию dpkg.
  2. Permission denied: Когда вы пытаетесь запустить dpkg в цикле, система обращается к "сломанному" файлу, который не имеет прав на выполнение.

Как исправить (пошагово)

Вам нужно удалить "битый" файл, установить dpkg правильно через пакетный менеджер, а потом распаковать ваши архивы.

Выполните следующие команды по очереди в терминале:

Шаг 1. Удалите конфликтующий файл

Эта команда удалит старый/битый файл, который мешает установке.

sudo rm /usr/bin/dpkg

Шаг 2. Установите dpkg корректно

Теперь pacman сможет установить программу без конфликтов.

sudo pacman -S dpkg

(На вопрос "Proceed with installation?" нажмите Y и Enter).

Шаг 3. Распакуйте ваши .deb файлы

Теперь, когда dpkg установлен и работает, ваша команда должна выполниться успешно. Убедитесь, что вы находитесь в нужной папке (где лежат .deb файлы).

cd ~/saby_install_temp for file in debs/*.deb; do dpkg -x "$file" .; done


Важное примечание про СБИС на Steam Deck

Просто распаковать файлы (как вы делаете командой dpkg -x) может быть недостаточно для запуска программы, так как СБИС — это сложное приложение с множеством зависимостей (библиотек).

На Steam Deck (Arch Linux) пакеты .deb обычно не устанавливаются напрямую.

  1. Если вам нужно просто запустить: Попробуйте найти папку с исполняемым файлом после распаковки (часто это opt/СБИС/... или похожий путь) и запустить файл напрямую.
  2. Если нужно установить "как положено": Для 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

=============================================================================

ЭТАП 3: Скачивание пакетов

=============================================================================

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 "Скачивание завершено."

=============================================================================

ЭТАП 4: Распаковка

=============================================================================

log_info "ЭТАП 4: Распаковка пакетов..." for file in *.deb; do log_info "Распаковываю $file ..." dpkg -x "$file" . done log_info "Распаковка завершена."

=============================================================================

ЭТАП 5: Копирование файлов в систему

=============================================================================

log_info "ЭТАП 5: Установка файлов в системные директории..."

Копируем opt (основные программы)

if [ -d "opt" ]; then sudo cp -rn opt/* /opt/ log_info "/opt обновлен." else log_warn "Папка opt не найдена в распакованных файлах." fi

Копируем usr/share (иконки, конфиги)

if [ -d "usr/share" ]; then sudo cp -rn usr/share/* /usr/share/ log_info "/usr/share обновлен." else log_warn "Папка usr/share не найдена." fi

Копируем библиотеки (важно для libstdc++)

if [ -d "usr/lib" ]; then sudo cp -rn usr/lib/* /usr/lib/ log_info "/usr/lib обновлен." fi

=============================================================================

ЭТАП 6: Настройка прав доступа

=============================================================================

log_info "ЭТАП 6: Настройка прав доступа (chown/chmod)..."

Tensor и Saby (с большой и маленькой буквы, на всякий случай)

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

NmhTransport (с большой и маленькой буквы)

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

=============================================================================

ЭТАП 7: Настройка автозагрузки (Systemd)

=============================================================================

log_info "ЭТАП 7: Настройка автозагрузки через systemd..."

Ищем исполняемый файл saby внутри папок версии

Ищем путь вида .../service/saby

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

=============================================================================

ЭТАП 8: Финализация

=============================================================================

log_info "ЭТАП 8: Очистка временных файлов..."

Удаляем папку установки, но оставляем .deb файлы на всякий случай (можно раскомментировать rm для полной чистки)

rm -rf "$INSTALL_DIR"

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 (содержит версию)

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]

Указываем путь к бинарнику напрямую (systemd сам запустит его в фоне)

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 или инструкция для ДиаДок, то напишите мне в лс форума или здесь, в комментариях.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment