#
Установка программы
#
Версия Astra Linux
Компиляция приложения, сборка debian пакета и тестирование проводилось в Astra Linux версии v1.7.3
:
$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinux
Description: Astra Linux 1.7 x86-64
Release: 1.7_x86-64
Codename: 1.7_x86-64
$ cat /etc/astra_version
1.7.3
#
Установка программы и ee зависимостей
Для установки программы необходимо распокавать полученный архив:
$ tar -zxvf kinematic.tar.gz
$ ls . # ниже приблизительное содержимое архива
kinematic_0.16.0_amd64.deb license.json license.json.sig install.sh uninstall.sh
В архиве находятся следующие файлы:
- kinematic_X.Y.Z_amd64.deb - debian пакет с программой где
X.Y.Z
версия программы - license.json - файл с лицензией на программу
- license.json.sig - цифровая подпись лицензии на прогрмму
- install.sh - скрипт, который производит установку программы на компьютере пользователя
- uninstall.sh - скрипт, который удаляет программу с компьютера пользователя
Устанавливаемая программа зависит от следующих пакетов:
- pcscd - сервис для доступа к смарткартами через PC/SC
- opensc-pkcs11 - библиотеки для работы со сматр картами по протоколу PKCS#11
- libwebkit2gtk-4.0-37 - WebKit движок для отображения веб страниц
- libgtk-3-0 - графическая библиотека для создания оконных приложений
Узнать зависимости устанавливаемого пакета можно с помощью следующей комманды:
$ dpkg -I kinematic_0.16.0_amd64.deb
# ниже примерный вывод
new Debian package, version 2.0.
Package: kinematic
Version: 0.16.0
Architecture: amd64
Installed-Size: 12311
Maintainer:
Depends: opensc-pkcs11, pcscd, libwebkit2gtk-4.0-37, libgtk-3-0
Description:
Priority: optional
Для установки программы нужно задать права на исполнение скрипту install.sh
и запустить его из папки распакованного архива.
$ chmod u+x install.sh
$ ./install.sh
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Application configuration directory: /home/deform/.config/com.kinematic
Application configuration file generated at /home/deform/.config/com.kinematic/app.json
Инсталяционный скрипт загрузит и установит пакеты от которых зависит программа, после чего установит пакет приложения. Так же будет создана папка с идентификатором приложения внутри папки .config
, расположенной в домашней директории пользователя. В этой папке будет создан файл с конфигурацией приложения, а также скопированы файл с лицензией и цифровой подписью.
Установщик поместит исполняемую программу по пути usr/bin/kinematic
, что сделает ее доступной для запуска из терминала. Также установщик создаст *.desktop
файл по пути usr/share/applications/kinematic.desktop
, что даст возможность искать и запускать программу через графическое окружение операционной системы.
#
Подготовка перед запуском программы
Для работы приложения необходим лицензионный usb токен.
Не смотря на то, что usb токен похож на флэш карту, он таковой не является. В usb токене не хранятся файлы которые можно скопировать на компьютер.
Перед запуском приложения следует вставить лицензионный токен в usb порт компьютера. Чтобы убедиться, что токен доступен для работы можно выполнить следующую команду:
$ lsusb
...
Bus 001 Device 041: ID 1050:0407 Yubico.com Yubikey 4/5 OTP+U2F+CCID
...
Выше показан приблизительный вывод команды из которой следует, что лицензионный usb токен определился компьютером и готов к работе.
Для работы программы не важно в какой из usb портов вставлен токен.
При запуске приложения из под виртуальной машины необходимо предпринять дополнительные шаги, чтобы usb токен был доступен приложению. Подробнее описано в
#
Запуск программы
Запустить программу можно как из командой строки, так и через графическую оболочку Fly операционной системы. Ниже будут показаны оба способа.
При первом запуске рекомендуется запускать приложение с помощью терминала, т.к. в версии 0.16
логирование реализовано только в поток стандартного вывода ошибок (stderr), т.е. в терминал, а не файл для логов.
#
Запуск из консоли
Запуск приложения через терминал:
$ kinematic
# Ниже будут расположены логи программы
Если при запуске программы лицензионный токен не определяется системой, то программа аварийно завершится. Также программа аварийно завершит работу если извлечь лицензионный токен в процессе ее работы. Ниже показан пример аварийного завершения программы при отсутствии лицензионного токена.
$ kinematic
error while runnign tauri application: Setup(SetupError("[Token Error] No token found which satisfies license"))
#
Запуск через ярлык
Для запуска приложения с рабочего стола нужно создать ярлык. Ниже приведены скриншоты как это сделать.
#
Офлайн установка
Для офлайн установки программы нужно подключить локальный репозиторий из которого будут скачиваться пакеты от которых зависит приложение. Чаще всего папку с локальным репозиторием можно найти на диске с которого производилась установка операционной системы Astra Linux. Предположим, что папка с локального резпозитория скопирована в систему по пути /srv/local_repo/
:
$ ls /srv/local_repo/
dists pool repository-gostsums.txt
Чтобы подключить локальный репозиторий нужно добавить следующую запись в файл /etc/apt/sources.list
:
deb file:/srv/local_repo/ stable contrib main non-free
После чего нужно получить последние версии пакетов:
$ sudo apt update
После этого можно установить программу. Инсталятор скачает зависимые пакеты из локального репозитория, который расположен по пути /srv/local_repo/
.
Дополнительно о структуре Debian репозитория можно почитать в англоязычной статье Debian Package Repository HOWTO.
#
Отладка
#
Запуск в виртуальной машине
При запуске программы в виртуальной машине могут возникнуть проблемы с недоступностью лицензионного токена внутри виртуальной машины. Поэтому нужно предпринять дополнительные шаги, чтобы лицензионный токен был доступен внутри гостевой ОС. Если этого не сделать то программа аварийно завершится сразу после запуска с ошибкой показанной ниже.
error while runnign tauri application: Setup(SetupError("[Token Error] No token found which satisfies license"))
При работе из виртуальной машины, настройки по-умолчанию не дают доступа к usb устройствам подключенным к компьютеру из гостевой ОС. Инструкции как предоставить доступ к usb устройству из гостевой ОС зависят от используемого гипервизора. Ниже приведены ссылки на документации популярных гипервизоров:
- QEMU и virt-manager: Assigning Host USB device to a Guest VM
- VirtualBox: USB basics and troubleshooting
После того как в настройках гипервизора гостевой ОС был предоставлен доступ к usb токену нужно проверить, что токен определяется как usb устройство в системе:
$ lsusb
Bus 001 Device 041: ID 1050:0407 Yubico.com Yubikey 4/5 OTP+U2F+CCID
...
На текущий момент используются токены производителя Yubico
. Если в выводе команды lsusb
нет упоминания Yubico.com Yubikey
, то это означает, что usb токен не определился системой. Это может быть связано как с настройками гипервизора, так и с работоспособностью usb порта.
После того как usb устройство определяется в гостевой ОС нужно убедиться, что в usb устройсве присутствует логический кард-ридер и смарт-карта. В терминах стандарта pkcs#11 кард-ридер и смарт-карта называются слот и токен соответственно. Для просмотра подключенных кард-ридеров и вставленных в них смарт-карт необходимо установить пакет opensc
:
$ sudo apt install opensc
В пакет opensc
входит консольная программа с помощью которой можно узнать какие кард-ридеры подключены к системе:
$ pkcs11-tool --list-slots
Available slots:
Slot 0 (0x0): Yubico YubiKey OTP+FIDO+CCID 00 00
token label : app auth key
token manufacturer : piv_II
token model : PKCS#15 emulated
token flags : login required, rng, token initialized, PIN initialized
hardware version : 0.0
firmware version : 0.0
serial num : 00000000
pin min/max : 4/8
Вывод команды показывает, что в системе определился один кард-ридер под названием Yubico YubiKey OTP+FIDO+CCID
. В этот кард-ридер вставлена смарт-карта с названием app auth key
.
Если в системе не определился кард-ридер, то вывод программы будет как показано ниже:
# Кард-ридер не определяется системой
$ pkcs11-tool --list-slots
Available slots:
No slots.
Такая проблема может наблюдаться когда программа или сервис (служба) хостовой ОС использует кард-ридер, что делает его недоступным в виртуальном машине. В Debian подобных операционных системах, как Astra Linux или Ubuntu примером такого сервиса, который мешает сделать доступным кард-ридер гостевой ОС, является pcscd
. Его необходимо временно отключить в хостовой OC.
# врменно отключаем в хостовой ОС
$ sudo systemctl stop pcscd
# запускаем приложение в гостевой ОС
# пока сервис pcscd отключен в хостовой ОС,
# гостевая может получить экслкюзивный доступ к токену
# запускаем отключенный сервис в хостовой ОС
# после того как в гостевой запустилось приложение
$ sudo systemctl start pcscd