Документация
ОС Аврора 5.0.1

Установка пакетов и работа с командной строкой

С помощью интерфейса командной строки предоставляется возможность авторизоваться на устройстве или эмуляторе. После авторизации можно установить пакет на устройство.

Ряд команд необходимо запускать от суперпользователя. Команда devel-su предоставляет возможность выполнять всю работу от имени корневого пользователя.

Авторизация на устройстве и эмуляторе

Авторизоваться на устройстве или эмуляторе также можно по SSH.

Команды ssh в данной инструкции приводятся для Unix-совместимого терминала. В Linux и macOS можно использовать стандартный терминал, в Windows необходимо использовать Git Bash.

Можно создать несколько пользователей и переключаться между ними. По умолчанию имя пользователя defaultuser.

Авторизация на устройстве:

ssh defaultuser@device

Пароль для авторизации следует указать в настройках: Настройки → Инструменты разработчика → Удалённое подключение.

Для удаления SSH-ключей устройства из файла known_hosts можно использовать команду:

ssh-keygen -R device

На эмуляторе также имеется приложение настроек разработчика, которое возможно использовать для установки пароля для пользователя defaultuser.

Авторизация на эмуляторе с правами пользователя:

ssh -p 2223 defaultuser@localhost
ssh -p 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk defaultuser@localhost

Авторизация на эмуляторе с правами суперпользователя:

ssh -p 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk root@localhost

В опции -i указывается путь к закрытому ключу для доступа через SSH. Один ключ используется для всех пользователей.

Передача данных на устройство или эмулятор

С помощью утилиты scp и ключа для авторизации можно передавать данные на эмулятор.

Команды scp в данной инструкции приводятся в оболочке Bash, рекомендуется на компьютере разработчика использовать его независимо от ОС (Linux, Windows, macOS).

Далее приведён пример передачи rpm-пакета, находящегося на ЭВМ разработчика по пути ./RPMS/.rpm:

scp -P 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk ./RPMS/<package>.rpm <user>@localhost:

Аналогично, данные можно передавать и на устройство. По умолчанию данные будут скопированы в домашний каталог пользователя. После @device: необходимо указать путь для размещения данных, например, стандартный каталог.

scp ./RPMS/<package>.rpm <user>@device:
scp *.jpg <user>@device:Pictures
scp *.mp4 <user>@device:Videos
scp *.pdf <user>@device:Documents
scp *.ogg <user>@device:Music

Работа с пакетами, библиотеками и репозиториями

С rpm-пакетами можно работать при помощи утилиты rpm:

rpm -ivh <rpm_file> # установить rpm-пакет из локального файла
rpm -ivh --nodeps --force <rpm_file> # установить rpm-пакет без проверки зависимостей
rpm -e <package> # удалить пакет
rpm -ql <package_name> # список файлов в пакете
rpm -qlP <file> # список файлов в пакете
rpm -qf <file> # узнать, какому пакету принадлежит файл
rpm -qpR <rpm-file> # узнать зависимости пакета
rpm -qR <package_name> # узнать зависимости пакета
rpm -q --changelog <package> | head # перечислить последние элементы журнала изменений пакета
rpm -q --whatrequires <package> # узнать обратные зависимости
rpm -qa | grep <string> # найти пакеты с фрагментом <string> в названиях
rpm -qa | xargs rpm -qR | grep -b5 <package> # вывести все пакеты, проверить, зависят ли они от package
rpm -U --oldpackage --replacepkgs --replacefiles <package> # переустановить rpm-пакет
rpm -qa | awk '{print $0" "$0}' | xargs printf "echo PACKAGE: %s && rpm -q --scripts %s\n" | sh # список RPM-скриптов в пакетах
rpm -qa --queryformat '%{license}\t%{name}-%{version}-%{release}\n' | sort # отсортировать пакеты по лицензиям
rpm -qa --queryformat '%{size} %{name}\n' | sort -rn | more # список RPM-пакетов, которые занимают наибольшее количество места в системе

Утилиты pkcon и zypper предоставляют возможность работать с репозиториями. На устройстве рекомендуется использовать pkcon.

Работа с пакетами и репозиториями с помощью pkcon:

pkcon refresh   # обновление репозиториев
pkcon search name [PACKAGE_NAME] # поиск пакета
pkcon install [PACKAGE_NAME] # установка пакета
pkcon get-details [PACKAGE_NAME] # информация о пакете
pkcon remove [PACKAGE_NAME] # удаление пакета
pkcon update [PACKAGE_NAME] # обновление пакета
pkcon install-local [FILE_NAME] # установка пакета из локального файла
pkcon repo-list # список репозиториев
pkcon repo-enable [REPO_ID] # включить репозиторий
pkcon repo-disable [REPO_ID] # отключить репозиторий
pkcon  # справка об утилите

Может возникнуть необходимость самостоятельной установки zypper:

pkcon install zypper

Дополнительные команды

Показать ход загрузки в виде журнала в реальном времени:

pkmon

Общий список зависимостей библиотеки:

ldd /usr/lib/qt5/qml/modulepath/libmodule.so

Очистка повреждённой базы данных rpm (запуск от имени корневого пользователя):

rm -rf /var/lib/rpm/__db* ; rpm --rebuilddb

Запуск packagekitd с выводом отладки (запуск от имени корневого пользователя):

G_MESSAGES_DEBUG=all /usr/libexec/packagekitd --keep-environment --verbose

Работа с файлами

Открытие файлов с соответствующим приложением по умолчанию:

xdg-open [наименование_файла]

Выполнение QML-документа:

pkcon install qt5-qtdeclarative-qmlscene # установка qmlscene
ln -s /usr/lib/qt5/bin/qmlscene /usr/bin/qmlscene # добавление символьной ссылки на путь
qmlscene app.qml # запуск

Поиск каталогов, которые занимают более 100 Мб пространства:

du --all --one-file-system / | awk \
'{if($1 > 102400) print int($1/1024) "MB" " " $2 }' # корневой раздел
du --all --one-file-system /home | awk \
'{if($1 > 102400) print int($1/1024) "MB" " " $2 }' # домашний раздел

Работа с данными пользователя

Телефония

Установка утилиты commhistory-tool:

devel-su -p pkcon install libcommhistory-qt5-tools

Утилита должна запускаться от имени суперпользователя.

Очистить журналы вызовов:

commhistory-tool deleteall -calls

Добавить данные журналов вызовов:

commhistory-tool import-json calllogs.json

Перезапустить мобильное приложение «Телефон», чтобы увидеть изменения:

pkill voicecall-ui

Звонки

Совершить исходящий звонок через D-Bus:

gdbus call -e -d com.jolla.voicecall.ui -o -m com.jolla.voicecall.ui.dial '<phone>'

Ответить на звонок:

gdbus call -e -d org.nemomobile.voicecall -o ``/usr/lib/qt5/bin/qdbus org.nemomobile.voicecall | grep "/calls/.\{32\}"``  -m org.nemomobile.voicecall.VoiceCall.answer

Завершить звонок:

gdbus call -e -d org.nemomobile.voicecall -o ``/usr/lib/qt5/bin/qdbus org.nemomobile.voicecall | grep "/calls/.\{32\}"``  -m org.nemomobile.voicecall.VoiceCall.hangup

Сообщения

Удалить все диалоги сообщений:

commhistory-tool deleteall -groups

Импорт данных сообщений:

commhistory-tool import-json messages.json

Для просмотра изменений необходимо перезапустить мобильное приложение «Сообщения»:

pkill jolla-messages

Отправка SMS

Примеры отправки SMS через D-Bus:

dbus-send --system --print-reply --dest=org.ofono /ril_0 org.ofono.MessageManager.SendMessage string:"+358500000000" string:"test sms"
dbus-send --type=method_call --dest=org.nemomobile.qmlmessages / org.nemomobile.qmlmessages.startSMS array:string:"+358123456" string:"Hello world"

Контакты

Установка утилиты vcardconverter:

devel-su -p pkcon install nemo-qml-plugin-contacts-qt5-tools

Импорт контактов из vCard:

devel-su -p vcardconverter contacts.vcf

Экспорт локальных контактов на vCard:

devel-su -p vcardconverter --export contacts.vcf

Календарь

Установка утилиты icalconverter:

devel-su -p pkcon install nemo-qml-plugin-calendar-qt5-tools

Импорт событий из iCal:

devel-su -p icalconverter import calendar.ics

Импорт событий с помощью страницы импорта календаря (два варианта):

dbus-send --print-reply --type=method_call --dest=ru.auroraos.calendar.ui /ru/auroraos/calendar/ui ru.auroraos.calendar.ui.importFile string:$HOME/<readableDir>/calendar.ics
xdg-open calendar.ics

Для обоих вариантов предполагается, что данные ICS обязательно располагаются в каталоге, доступном изнутри среды с запущенным приложением "Календарь". Например, $HOME/Documents/.

Экспорт событий локального календаря в iCal:

devel-su -p icalconverter export calendar.ics

Атмосфера

Установить изображение в качестве атмосферы:

dbus-send --session --print-reply --dest=com.jolla.ambienced /com/jolla/ambienced com.jolla.ambienced.setAmbience string:"file://home/<user>/Pictures/image.jpg"

Работа с аудио

Запись аудио с микрофона в файл:

parec filename

Воспроизведение аудио из файла:

pacat filename

Или:

gst-launch-0.10 playbin2 uri=file:///path/to/file/music.mp3

Работа с часами

Таймер через 3 секунды:

timedclient-qt5 -b'TITLE=button0' -e'APPLICATION=nemoalarms;TITLE=Timer;type=countdown;timeOfDay=1;triggerTime=1395217218;ticker=3'

Будильник через 3 секунды:

timedclient-qt5 -b'TITLE=button0' -e'APPLICATION=nemoalarms;TITLE=Clock;type=event;timeOfDay=772;ticker=3'

Диалог о подключении по USB-кабелю

Всегда вести диалог с пользователем при подключении по USB-кабелю:

dbus-send --print-reply --type=method_call --dest=com.jolla.lipstick.ConnectionSelector / com.jolla.lipstick.ConnectionSelectorIf.openConnection string:
USB Dialog

Для проверки результата необходимо подключение USB-кабеля. Также следует удостовериться, что системная настройка Настройки → USB → Режим USB по умолчанию указана как Всегда спрашивать.

Диалоги с приложениями

Диалог загрузки:

xdg-open package.rpm

Диалог набора телефона:

xdg-open "tel://0123456789"

Описанные ниже действия также откроют диалоговое окно для взаимодействия с пользователем.

Сделать приложение неотвечающим, остановив его выполнение:

kill -SIGSTOP `pgrep appname`

Продолжить выполнение:

kill -SIGCONT `pgrep appname`

Настройки

Настройки (Bluetooth, учетные записи, ввод текста, VPN и т. д.) объявляются в файлах JSON, находящихся в /usr/share/jolla-settings/entries/.

Метод D-Bus даёт возможность открытия приложения «Настройки» на указанной странице. Ниже приведён пример открытия страницы настроек USB:

dbus-send --type=method_call --print-reply --dest=com.jolla.settings /com/jolla/settings/ui com.jolla.settings.ui.showPage string:system_settings/connectivity/usb

Команда работает для настроек JSON, указанных в свойстве page. Свойство path, найденное в файле JSON, используется для идентификации страницы настроек, которую метод принимает в качестве аргумента.

Настройка приложений через DConf

Некоторые настройки приложений доступны через механизм DConf. Установка значения DConf на примере фонового изображения:

dconf write /desktop/meego/background/portrait/picture_filename \'/pathto/wallpaper.jpg\'

Вывод значения DConf на примере фонового изображения:

dconf read /desktop/meego/background/portrait/picture_filename

Установка домашней страницы браузера:

dconf write /apps/sailfish-browser/settings/home_page "'http://jolla.com'"

Добавить диалог-предупреждение о слишком высоком уровне звука в наушниках:

dconf write /desktop/<user>/audiowarning true

Установить портретную ориентацию экрана:

dconf write /lipstick/orientationLock \'portrait\'

Для автоматической ориентации экрана portrait следует заменить на dynamic.

Сброс настроек приложений

Сбросить порядок приложений в панели запуска на главном экране:

rm /home/<user>/.config/lipstick/applications.menu

Удалить локации для приложения «Погода»:

rm /home/<user>/.local/share/sailfish-weather/weather.json

Другой вариант расположения файла:

rm /home/<user>/.local/share/org.sailfishos/sailfish-weather/weather.json

Управление сетью и прочими соединениями

Включение WLAN:

dbus-send --print-reply --type=method_call --system --dest=net.connman /net/connman/technology/wifi net.connman.Technology.SetProperty string:Powered variant:boolean:true

Для отключения true нужно заменить на false.

Утилита mcetool также даёт возможность управлять WLAN и другими соединениями:

mcetool --enable-radio=<master|cellular|wlan|bluetooth> # включение
mcetool --disable-radio=<master|cellular|wlan|bluetooth> # отключение
mcetool --disable-radio=master # режим полёта

Включение Bluetooth:

dbus-send --type=method_call --dest=com.jolla.Bluetooth /com/jolla/Bluetooth com.jolla.Bluetooth.startSession

Перезапуск системных сервисов

Перезапуск сессии пользователя:

systemctl restart user@100000

Перезапуск сети. При этом будет прервано ssh-соединение с устройством или эмулятором.

systemctl restart connman.service

Перезапус домашнего экрана:

systemctl --user restart lipstick

Перезапуск клавиатуры:

systemctl --user restart maliit-server

Перезапуск мобильного приложения «Телефон»:

systemctl --user restart voicecall-ui-prestart

Перезапуск системы телефонии:

systemctl restart ofono
systemctl-user restart voicecall-manager

Работа с экраном

Установка утилиты mcetool:

zypper in mce-tools

Блокировка приостановки устройства

Отключить позднюю приостановку:

mcetool -searly

Отключить раннюю приостановку:

mcetool -sdisabled

Восстановить обычную политику приостановки:

mcetool -senabled

Яркость экрана

Установить максимальное значение уровню яркости:

mcetool -b100

Отключение затемнения экрана при открытом главном экране либо приложении:

mcetool -Don

Отключение затемнения экрана при открытом экране блокировки:

mcetool -tdisabled

Вернуться к обычному поведению:

mcetool -Doff -tenabled

Проблема возникновения излишне тёмного дисплея может быть решена путём отключения фильтрации яркости дисплея следующей командой:

mcetool -gdisabled

Сброс всех значений mce на значения по умолчанию:

systemctl stop mce.service
rm /var/lib/mce/builtin-gconf.values
systemctl start mce.service

Работа с системными утилитами

Версия ОС Аврора:

version

Обновление ОС Аврора:

version --dup

Статус батареи:

upower -i /org/freedesktop/UPower/devices/battery_battery
upower -d

Вывод списка входящих аппаратных событий:

evdev_trace -t

Вызов списка экспортируемых символов. Необходима предварительная установка пакета binutils.

zypper in binutils
nm -D /usr/lib/library.so.0

Скриншот экрана:

/usr/bin/grabscreen [/path/to/snapshot.png]

Беззвучный режим:

dbus-send --type=method_call --dest=com.nokia.profiled /com/nokia/profiled com.nokia.profiled.set_profile string:"silent"

Обычный режим звука:

dbus-send --type=method_call --dest=com.nokia.profiled /com/nokia/profiled com.nokia.profiled.set_profile string:"general"

Получение геолокации:

dbus-send --session --type=method_call --print-reply \
    --dest=org.freedesktop.Geoclue.Providers.Here \
    /org/freedesktop/Geoclue/Providers/Here \
    org.freedesktop.Geoclue.Position.GetPosition

Установка пакетов для трассировки

Для того чтобы собрать подробную информацию, можно установить пакеты для трассировки с помощью команды pkcon install [наименование_пакета]. Например:

Команда Описание
pkcon install connman-tracing Установка пакета для трассировки Connman
pkcon install bluez5-tracing Установка пакета для трассировки BlueZ
pkcon install connectionagent-qt5-tracing Установка пакета для трассировки компонентов cвязи

Сбор информации для отладки

При сборе отладочной информации полезно обратиться к логам из журналов. Команда для устройства:

devel-su journalctl -a -b --no-tail --no-pager

В этой и аналогичных командах для эмулятора следует использовать sudo:

sudo journalctl -a -b --no-tail --no-pager

Просмотр всего системного журнала:

devel-su journalctl -fa

Поиск в системном журнале по ключевому слову без учёта регистра:

devel-su journalctl | grep -i [ключевое слово]

Список неисправных служб:

devel-su systemctl list-units --failed

Собрать журналы по определённому индентификатору от systemd:

devel-su journalctl -u <unitname>

Информация об аудио:

devel-su systemctl status pulseaudio
devel-su journalctl -u pulseaudio

Информация о Bluetooth:

devel-su systemctl status bluetooth
devel-su journalctl -u bluetooth

Информация о телефонии:

devel-su journalctl -u ofono

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.