Установка пакетов и работа с командной строкой
С помощью интерфейса командной строки предоставляется возможность авторизоваться на устройстве или эмуляторе. После авторизации можно установить пакет на устройство.
Ряд команд необходимо запускать от суперпользователя.
Команда 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/
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