Code Monkey home page Code Monkey logo

ovos-installer's Introduction

Open Voice OS and HiveMind Installer

A nice, simple, multilingual and intuitive way to install Open Voice OS and/or HiveMind using Bash, Whiptail (Newt) and Ansible.

Quickstart

curl, git and sudo packages must be installed before running the installer.

sh -c "curl -s https://raw.githubusercontent.com/OpenVoiceOS/ovos-installer/main/installer.sh -o installer.sh && chmod +x installer.sh && sudo ./installer.sh && rm installer.sh"

Then follow the instructions display on screen.

[HOWTO] Begin your Open Voice OS journey with the ovos-installer

Supported Linux distributions

Distribution Version
AlmaLinux >= 8
Arch rolling
CentOS >= 8
Debian GNU/Linux >= 10
EndeavourOS rolling
Fedora >= 37
Linux Mint >= 21
openSUSE Leap >= 15
openSUSE Tumbleweed rolling
openSUSE Slowroll rolling
Manjaro rolling
Raspbian 10
Raspberry Pi OS >= 11
Rocky Linux >=8
Ubuntu >=20.04
WSL2 20.04
Zorin OS >= 16

rolling as rolling Linux distribution which means that there is no specific version.

Update

To update the current Open Voice OS instance, backup your ~/.config/mycroft/mycroft.conf or ~/ovos/config/mycroft.conf (only if required) and re-run installer but answer "No" to the "Do you want to uninstall Open Voice OS?" question.

Automated install

The installer supports a non-interactive (automated) process of installation by using a scenario file, this file must be created under the ~/.config/ovos-installer/ directory and should be named scenario.yaml.

Here is an example of a scenario to install Open Voice OS within Docker containers on a Raspberry Pi 4B with default skills and GUI support.

mkdir -p ~/.config/ovos-installer
cat <<EOF > ~/.config/ovos-installer/scenario.yaml
---
uninstall: false
method: containers
channel: development
profile: ovos
features:
  skills: true
  extra_skills: false
  gui: true
rapsberry_pi_tuning: true
share_telemetry: true
EOF

Few scenarios are available as example in the scenarios directory of this repository.

Uninstall

To uninstall Open Voice OS run the installer with the --uninstall option (non-interactive) or simply run the installer and answer "Yes" to the "Do you want to uninstall Open Voice OS?" question.

sh -c "curl -s https://raw.githubusercontent.com/OpenVoiceOS/ovos-installer/main/installer.sh -o installer.sh && chmod +x installer.sh && sudo ./installer.sh --uninstall && rm installer.sh"

Screenshots

Screenshot 1

Screenshot 2

Screenshot 3

Screenshot 4

Screenshot 5

Screenshot 6

Screenshot 7

ovos-installer's People

Contributors

denics avatar emphasize avatar goldyfruit avatar jarbasal avatar lcipria avatar nilsgeorg avatar suvanbanerjee avatar timonvanhasselt avatar tobymurray avatar vaibhav-magadum avatar w-vi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ovos-installer's Issues

Auto-detect Mark II hardware

It would be nice to the installer to detect the Mycroft Mark II hardware in order to install the right Open Voice OS requirements and have a Mark II working out of the box.

Documentation

Write a basic and simple documentation with only few details to get people started easily.

ubuntu 23.10 install fails

I just tried this on a fresh install of Ubuntu Server 23.10 and it failed with this error

TASK [ovos_installer : Add ovos to pipewire group] **************************************************************************************
Sunday 07 January 2024  23:52:17 +0000 (0:00:00.455)       0:00:12.385 ******** 
fatal: [127.0.0.1]: FAILED! => {"msg": "The conditional check 'not (ansible_distribution == 'Ubuntu' and _distribution_version is version('23.04', '<=') or ansible_distribution == 'Debian' and _distribution_version is version('12.0', '<='))' failed. The error was: error while evaluating conditional (not (ansible_distribution == 'Ubuntu' and _distribution_version is version('23.04', '<=') or ansible_distribution == 'Debian' and _distribution_version is version('12.0', '<='))): '_distribution_version' is undefined. '_distribution_version' is undefined\n\nThe error appears to be in '/home/ovos/ovos-installer/ansible/roles/ovos_installer/tasks/sound.yml': line 31, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Add {{ ovos_installer_user }} to pipewire group\n  ^ here\nWe could be wrong, but this one looks like it might be an issue with\nmissing quotes. Always quote template expression brackets when they\nstart a value. For instance:\n\n    with_items:\n      - {{ foo }}\n\nShould be written as:\n\n    with_items:\n      - \"{{ foo }}\"\n"}

PLAY RECAP ******************************************************************************************************************************
127.0.0.1                  : ok=3    changed=2    unreachable=0    failed=1    skipped=24   rescued=0    ignored=0 

Request: Voice Selection

continuing #23

different voices options could be provided as part of advanced configuration

a default voice per language should also be selected by the community to be used

Request: Online/Offline setup

from a user POV i would expose in the installer, related to #2 and #3

Internet capabilites:

  • fully offline
    • ensure TTS/STT are on device
    • do not even install skills that require internet
    • main TTS/STT offline
    • ready_settings requires only offline skills to load
  • hybrid
    • prefers online usage
    • but will do it's best to work offline (internet considered optional)
    • requires fallback TTS/STT
    • ready_settings requires only offline skills to load
  • online
    • best performance
    • absolutely requires internet
    • no fallback TTS/STT
    • ready_settings requires all online and offline skills to load

Experiences with installer on a Rpi5 and some suggestions

First of all: I had a very good experience installing OVOS this way on a freshly installed rpi5 with RpiOS Bookworm.
Great work! It worked out of the box in combination with a Jabra 510 speakerphone.
The following are only suggestions. I can split it up in more feature requests/ 'issues' if you like, but I don't want to spam the whole repo. ;)

Pi5 specific:

  • During installing a message about:

I2C, I2S and SPI interfaces must be enahled. Follow the steps below:
Echo etc.

Can this maybe be scripted in the installer? I only had to copy & paste the commands that were given, so maybe it could be a IFTTT scenario (if I2C etc not recognized then install etc)

General

  • During installing there's not an indication of the remaining time. Is a progressbar an option? Also: The installer shows all the logs of the installer. Maybe that could be an user checkbox (next to a progressbar?)

  • I had to reboot after install for the right time and date config to load. After the installer was done, 'hey mycroft, what time is it' worked, but it was in a different timezone.

  • The logs were missing after installing (at least: I can't find them). I followed a hint from a Matrix thread about removing the 'stdout' part in config and then they were created in ~/.local/state/mycroft

  • IMO the options in the profile part are what confusing. Maybe you can call them something like:

[*] OVOS stand-alone (default)
[ ] OVOS configured as a Hivemind satellite (Only the needed audio components)
[ ] OVOS configured as a Hivemind master (Full OVOS install, satellites can connect to it in a secure way)
  • I've tried reinstalling to update everything to the latest versions. The installer detects the current OVOS instance, and tells it has to be removed etc. That's ok. But from a user perspective, I'd expected that the installer would automatically install again (after removing), but that's not the case. It stops after deleting. I think that is something to explain more in the current "deinstall" screens. Or maybe a dedicated 'update' option via the installer is a possibility?

  • Container/ venv option: maybe mention something like this?

	[*] containers (install Docker Engine or Podman first before using this option) <-- otherwise errors during installing
	[ ] virtualenv  

Maybe call virtualenv a 'virtual Python enviroment (venv)'

  • Maybe add some useful (but necessary) OVOS commands in/after the last screen? For instance the following in the current finish screen or on another page. For instance:

In case there's something not working or you want to change the configuration you can use the following commands.

* ovos-cli-client (deprecated, but still useful for text commands to check if an utterance is working and to see if a utterance is transribed).
* ovos-config show (to show the current config).
	To change the user config, use:


        ovos-config get -k example
	ovos-config set -k 

Or open: ~/.config/mycroft/mycroft.conf with an editor.
  • For restarting all OVOS services on Raspberry Pi, use:
	systemctl --user restart ovos-*

	Or individual services with:
	systemctl --user restart ovos-listener
	systemctl --user restart ovos-audio
	systemctl --user restart ovos-core
	systemctl --user restart ovos-gui
  • Check the logs in realtime in ~/.local/state/mycroft:
	tail -f voice.log (for speech recognition)
	tail -f audio.log (for TTS and all audio)

A few specifics/ recommendations for the Dutch config:

  • Faster whisper in Dutch is not that good unfortunately... is it possible to use Chromium STT instead as default in the Dutch config and mention the use of this exernal STT also for the best experience?
  • The voice rdh-low is pretty good. It's a Flemish voice, but it's very responsive and pretty natural. The default is a server based version too (your server), should that be mentioned too? (maybe people expect OVOS to run fully local).
  • Can the standard time format be set to full instead of half in the nl-nl config?
  • Can the Date format be DMY instead of MDY?

(I can imagine that the last features are not doable with all of the different localizations, but it would improve the user experience a lot)

Implement CI via GitHub Actions

In order to provide a bug "free" installer, the code should go through a CI to achieve the code testing.

The pipeline should involve the technologies listed below

  • Shellcheck
  • BATS
  • ansible-lint
  • Molecule

Rpi5 with Raspberry Pi OS Bookworm --> not related to OVOS-installer but maybe helpful for others

I don't think it's related to OVOS or the installer, but after imaging a SD card with Bookworm lite/ full with the default Wayland + waywfire I had no display connection via HDMI. Only after changing to x11 + open box via raspi-config the screen worked.
After adding video=HDMI-A-1:1920x1080 (or other resolution) on the same line in /boot/firmware/cmdline.txt the screen is working with both wayland and/or x11 and open box.

services.ovos_gui.group_add array items[0,3] must be unique"]

TASK [ovos_installer : Deploy docker-compose stack] *****************************************************************
Monday 05 February 2024  08:51:24 -0500 (0:00:00.357)       0:02:46.535 ******* 
FAILED - RETRYING: [127.0.0.1]: Deploy docker-compose stack (5 retries left).
FAILED - RETRYING: [127.0.0.1]: Deploy docker-compose stack (4 retries left).
FAILED - RETRYING: [127.0.0.1]: Deploy docker-compose stack (3 retries left).
FAILED - RETRYING: [127.0.0.1]: Deploy docker-compose stack (2 retries left).
FAILED - RETRYING: [127.0.0.1]: Deploy docker-compose stack (1 retries left).
fatal: [127.0.0.1]: FAILED! => {"attempts": 5, "changed": false, "cmd": "/usr/bin/docker --host unix:///var/run/docker.sock compose --ansi never --progress plain --project-directory /tmp/ovos-docker/compose --project-name ovos --file docker-compose.yml --file docker-compose.raspberrypi.yml --file docker-compose.skills.yml --file docker-compose.gui.yml --file docker-compose.raspberrypi.gui.yml ps --format json --all --no-trunc", "msg": "validating /tmp/ovos-docker/compose/docker-compose.raspberrypi.gui.yml: services.ovos_gui.group_add array items[0,3] must be unique", "rc": 15, "stderr": "validating /tmp/ovos-docker/compose/docker-compose.raspberrypi.gui.yml: services.ovos_gui.group_add array items[0,3] must be unique\n", "stderr_lines": ["validating /tmp/ovos-docker/compose/docker-compose.raspberrypi.gui.yml: services.ovos_gui.group_add array items[0,3] must be unique"], "stdout": "", "stdout_lines": []}

Add getopts support for "debug" and "uninstall"

When running within the CI a debug option will be very useful to make Bash and Ansible verbose in order to get detailed information when a failure happens.

"uninstall" option might become handy in specific situation.

Auto-detect Mark 1 hardware

It would be nice to the installer to detect original Mycroft Mark 1 hardware in order to install the right Open Voice OS requirements and have a Mark 1 working out of the box.

Check for git command

The installer.sh script should check if git is installed on the system and return a message if not.

Support non-interactive install

When multiple installation are required, answering TUI questions could become overwhelming. The solution would be to provide a file with variables to the installer acting as a profile.

If the installer detects this file then the TUI will not be displayed and the installation will be non-interactive.

Request: Multilingual Config Option

provide the user with options to enable secondary languages

  • add new langs to mycroft.conf
  • [optional] validate / constrain STT options to models that support all user langs
  • [optional] assign a different wake word to each language
  • [optional] enable a audio lang detection plugin

provide user with option to enable bidirectional translation

  • for all langs except main lang (intent handling will always happen in main lang)
  • for all langs except main + secondary langs (handle requests in unplanned langs, usually via chat)

Installer fails on OrangePiPc armv7, Armbian 23.11.1

Environment

root@orangepipc:~# uname -a
Linux orangepipc 6.1.63-current-sunxi #1 SMP Mon Nov 20 10:52:19 UTC 2023 armv7l GNU/Linux
root@orangepipc:~# cat /etc/issue
Armbian 23.11.1 Bookworm \l 

Step to reproduce

apt install -yq libffi-dev rustc cargo pkg-config libssl-dev
# Set ENABLED=false /etc/default/armbian-zram-config
systemctl mask tmp.mount
reboot
curl -s https://raw.githubusercontent.com/OpenVoiceOS/ovos-installer/main/installer.sh | sudo bash

Result

Output of the script:

➤ Checking for existing instance... [done]
➤ Retrieving OS information... [done]
➤ Detecting AVX/SIMD support... [done]
➤ Checking for Raspberry Pi board... [done]
➤ Detecting sound server... [done]
➤ Detecting display server... [done]
➤ Validating installer package requirements... [done]
➤ Creating installer Python virtualenv... [done]
➤ Installing Ansible requirements in Python virtualenv... [done]
[fail]

Last log lines: /var/log/ovos-installer.log

Using cached packaging-23.2-py3-none-any.whl (53 kB)
Building wheels for collected packages: cryptography
  Building wheel for cryptography (pyproject.toml): started
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): still running...
  Building wheel for cryptography (pyproject.toml): finished with status 'done'
  Created wheel for cryptography: filename=cryptography-41.0.7-cp311-cp311-linux_armv7l.whl size=3550637 sha256=2d0a6fdc42f875ca4e090e00b1d81d2fd9e2bf4f440778b80a20b74c62b909a4
  Stored in directory: /root/.cache/pip/wheels/f4/22/73/793170c1884f52e858af74be658b9214135ba9fa4bb32902d1
Successfully built cryptography
Installing collected packages: resolvelib, PyYAML, pycparser, packaging, MarkupSafe, jinja2, cffi, cryptography, ansible-core, ansible
Successfully installed MarkupSafe-2.1.3 PyYAML-5.3.1 ansible-8.6.1 ansible-core-2.15.8 cffi-1.16.0 cryptography-41.0.7 jinja2-3.1.3 packaging-23.2 pycparser-2.21 resolvelib-1.0.1
Starting galaxy collection install process
Process install dependency map
Starting collection install process
'ansible.posix:1.5.4' is already installed, skipping.
Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-docker-3.4.11.tar.gz to /root/.ansible/tmp/ansible-local-35380iy5ytf9/tmpk6c6krcu/community-docker-3.4.11-eup_lp3m
Installing 'community.docker:3.4.11' to '/root/.ansible/collections/ansible_collections/community/docker'
community.docker:3.4.11 was installed successfully
Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-general-8.0.2.tar.gz to /root/.ansible/tmp/ansible-local-35380iy5ytf9/tmpk6c6krcu/community-general-8.0.2-oertu68w
Installing 'community.general:8.0.2' to '/root/.ansible/collections/ansible_collections/community/general'
community.general:8.0.2 was installed successfully

Make sure required groups are there when running on Raspberry Pi

https://community.mycroft.ai/t/tornado-web-httperror-http-404-not-found/6664/29

ovos_phal container failed to start because of missing groups.

�[0;31mfatal: [127.0.0.1]: FAILED! => {"attempts": 5, "changed": false, "msg": "Configuration error - The Compose file '/tmp/ovos-docker/compose/docker-compose.raspberrypi.yml' is invalid because:\nservices.ovos_core.group_add value ['', '', ''] has non-unique elements\nservices.ovos_phal.group_add value ['', '', ''] has non-unique elements\nservices.ovos_phal_admin.group_add value ['', '', ''] has non-unique elements"}�[0m

Groups listed on the device:

$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,pi
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:pi
dialout:x:20:pi
fax:x:21:
voice:x:22:
cdrom:x:24:pi
floppy:x:25:
tape:x:26:
sudo:x:27:pi
audio:x:29:pulse,pi
dip:x:30:pi
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:pi
sasl:x:45:
plugdev:x:46:pi
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-network:x:102:
systemd-resolve:x:103:
crontab:x:104:
messagebus:x:105:
systemd-timesync:x:106:
input:x:107:
sgx:x:108:
kvm:x:109:
render:x:110:
syslog:x:111:
tss:x:112:
bluetooth:x:113:
ssl-cert:x:114:
uuidd:x:115:
systemd-oom:x:116:
tcpdump:x:117:
_ssh:x:118:
avahi-autoipd:x:119:
rdma:x:120:
netdev:x:121:
avahi:x:122:
lpadmin:x:123:pi
rtkit:x:124:
whoopsie:x:125:
sssd:x:126:
fwupd-refresh:x:127:
nm-openvpn:x:128:
scanner:x:129:saned
saned:x:130:
colord:x:131:
geoclue:x:132:
pulse:x:133:pi
pulse-access:x:134:pi,mpd
gdm:x:135:
lxd:x:136:pi
pi:x:1000:mpd
sambashare:x:137:pi
plocate:x:138:
docker:x:139:pi

gpio, i2c and spi are by default on Raspberry Pi OS but if for some reason they are not there anymore (removal, etc...), the installer should fail with a clear message.

Updating box in finish.sh

Hello!

When finishing an install of en-us the whiptail box does not allow the user to view all of the text. Scroll is not available. This is visible via the final screenshot in the readme

I would like to try increasing the height of the whiptail box to include this extra text. I believe the relevant change would be to alter

whiptail --msgbox --ok-button "$OK_BUTTON" --title "$TITLE" "$CONTENT" 25 80

by increasing 25 to 35 like this

whiptail --msgbox --ok-button "$OK_BUTTON" --title "$TITLE" "$CONTENT" 35 80

However, I am having trouble configuring a test environment where I can test this change. How does one configure a test environment to check a whiptail box?

I apologize if this is a lot to ask! I figured it would be quicker for me to learn now - or someone can enlighten me on the proper process to help in this way.

Thank you!

Installer localisation

It would be nice to support different languages during the installation process to make it more friendly.

Let starts with the list below:

  • English
  • French

PipeWire and PulseAudio both installed

Installer fails to detect sound system because both PipeWire and PulseAudio are installed on the system.

[done]
+ detect_sound
+ echo -ne '➤ Detecting sound server... '
➤ Detecting sound server... ++ pgrep -a -f pulse
++ awk -F/ '{ print $NF }'
+ [[ pipewire-pulse
pulseaudio =~ pulse ]]
+ '[' -S /run/user/1000/pulse/native ']'
+ '[' '!' -S /mnt/wslg/PulseServer ']'
+ export PULSE_SERVER=/run/user/1000/pulse/native
+ PULSE_SERVER=/run/user/1000/pulse/native
+ command -v pactl
++ awk -F: '$1 ~ /Server Name/ { print $2 }'
++ pactl info
++ sed 's/^ *//'
Connection failure: Access denied
+ SOUND_SERVER=
+ export SOUND_SERVER
+ echo -e '[\e[32mdone\e[0m]'
[done]

Processes:

pi           626  0.0  0.1  27956  7952 ?        S<sl Jan17   0:00  \_ /usr/bin/pipewire-pulse
pi           628  2.4  0.3 349052 24076 ?        S<sl Jan17 105:38  \_ /usr/bin/pulseaudio

The installer must stop with a clear message when this edge situation is detected.

Detect AVX/SIMD CPU support

When running on "old" hardware some CPU instruction will not be available which will prevent the use of some Open Voice capabilities such as Precise wake work for example.

To solve the user some painful moments, the installer should be able to detect the available CPU instructions and install a supported wake word and VAD plugins according the CPU capabilities.

"Extreme" tuning mode for Raspberry Pi

Raspberry Pi is a very capable board, to get the most of it some overclock is possible and the installer should provide an easy way to do it.

Some other improvements could be done as well such as:

  • Update EEPROM
  • Update kernel
  • Use Debian Backports (when running Raspberry Pi OS)

Support for Mac OS

Add Mac OS x86_64 and aarch64 architectures supported by the installer.

GUI tuning

request: EGLFS support
we should be able to run ovos-shell via eglfs when no x-server or wayland is installed
example https://github.com/OpenVoiceOS/raspbian-ovos/blob/dev/stage-gui/02-gui/files/ovos-shell.service

considerations:

  • (touchscreen) flag to hide mouse cursor should also be configurable
    • if not touchscreen -> don't hide mouse
    • some USB remotes will have a gyroscope to control the mouse -> don't hide even if touchscreen
  • (virtual kboard) enable or not virtual keyboard, this feature depends on what screen / keyboard you are running
    • no keyboard -> virtual enabled
    • no keyboard + no touchscreen -> virtual disabled, it's a render only device
    • some usb remotes have only numbers -> virtual enabled
    • others have all keys -> virtual disabled
  • (vertical screen) in GUI we can force screen rotation to be vertical
    • "fake rotation" can be done via GUI or via config file
    • if using EGLFS this is the only way to rotate screen, mouse coordinates can not be rotated however (touchscreen works)
    • rotating the device itself needs additional setup, either in the compositor or cmdline.txt to rotate at kernel level (in eglfs just makes the cli itself rotate, no impact in GUI)

Uninstall process

Add an uninstall process to the installer in order to remove what has been installed by the installer.

Request: Home Assistant integration

as part of setup a number of components provide HA integration, the setup stage could prompt to install them and configure the HA access token under mycroft.conf immediately

to control HA via OVOS

to expose OVOS in HA

  • ovos-PHAL-sensors - show OVOS device in HA
  • hivemind-home-assistant-notify - allow HA to make OVOS speak, this is not installed with OVOS but we want to allow the speak message in hivemind listener and generate credentials during install to be copy pasted into HA

Make sure WSL2 uses systemd

In order to make OVOS running properly on WLS2 using the installer, WSL2 must be configured to start with systemd which is well supported now.

If the system is not configured with systemd then the installer will stop.

Unable to deploy containers on RPi if I2C is not enable

ovos_phal container doesn't start because /dev/i2c-1 is not available on the RPi.

        "State": {
            "Status": "created",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 128,
            "Error": "error gathering device information while adding custom device \"/dev/i2c-1\": no such file or directory",
            "StartedAt": "0001-01-01T00:00:00Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        }

image

Failed to connect to bus: No such file or directory

Had this error while doing an initial install:

fatal: [127.0.0.1]: FAILED! => {"changed": false, "cmd": "/usr/bin/systemctl --user", "msg": "Failed to connect to bus: No such file or directory", "rc": 1, "stderr": "Failed to connect to bus: No such file or directory\n", "stderr_lines": ["Failed to connect to bus: No such file or directory"], "stdout": "", "stdout_lines": []}

To address, I needed to execute the generated exports from: dbus-launch --sh-syntax

Some notes:

  1. I'm installing on a Raspberry Pi 4 Model B running Raspberry Pi OS (Bookworm).
  2. Created a user, ovos, for the install (added to sudo group).
  3. Using ssh to execute the installer.
  4. Installing using docker containers, development channel, default skills / gui support support enabled.
  5. I also bumped up swiotlb=65536 as I was get complaints in dmesg.

The install was "successful" although I am getting some permission errors in the docker containers, and so ovos_core and ovos_gui_websocket won't come up, yet. I haven't looked into why.

I just thought I would mention the above in case I am doing something wrong or if anything should be improved for this case.

Version comparison failed: '<' not supported between instances of 'str'

TASK [ovos_installer : Install PipeWire with ALSA support] **************************************************************************************************************
Sunday 26 November 2023  19:05:49 -0800 (0:00:00.007)       0:00:01.279 ******* 
�[0;31mfatal: [127.0.0.1]: FAILED! => {"msg": "The conditional check 'not (ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('23.04', '<=') or ansible_distribution == 'Debian' and ansible_distribution_version is version('12.0', '<='))' failed. The error was: Version comparison failed: '<' not supported between instances of 'str' and 'int'\n\nThe error appears to be in '/extra/home/dth/ovos-installer/ansible/roles/ovos_installer/tasks/sound.yml': line 2, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: Install PipeWire with ALSA support\n  ^ here\n"}�[0m

Implement telemetry to collect setup information

Telemetry will collect information about

  • Operating system
  • Lang
  • Sound server
  • Graphic server
  • Hardware
  • etc...

These information will be collection only if the user is willing to share them, once collected the data will be aggregated and available publicly.

Fail the installer if requirements fail

Hit:1 http://deb.debian.org/debian bookworm InRelease
Get:2 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:3 http://deb.debian.org/debian bookworm-updates InRelease [52.1 kB]
Get:4 http://archive.raspberrypi.com/debian bookworm InRelease [23.6 kB]
Get:5 http://deb.debian.org/debian-security bookworm-security/main armhf Packages [96.0 kB]
Get:6 http://deb.debian.org/debian-security bookworm-security/main arm64 Packages [98.5 kB]
Get:7 http://deb.debian.org/debian-security bookworm-security/main Translation-en [58.7 kB]
Get:8 http://deb.debian.org/debian-security bookworm-security/contrib Translation-en [372 B]
Get:9 http://deb.debian.org/debian bookworm-updates/main armhf Packages [6,648 B]
Get:10 http://deb.debian.org/debian bookworm-updates/main arm64 Packages [6,672 B]
Get:11 http://deb.debian.org/debian bookworm-updates/main Translation-en [5,204 B]
Get:12 http://archive.raspberrypi.com/debian bookworm/main armhf Packages [346 kB]
Get:13 http://archive.raspberrypi.com/debian bookworm/main arm64 Packages [338 kB]
Fetched 1,080 kB in 11s (96.2 kB/s)
Reading package lists...
E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1329 (apt)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt install python3.11-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: /home/goldyfruit/.venvs/ovos-installer/bin/python3

utils/common.sh: line 187: pip3: command not found
utils/common.sh: line 207: pip3: command not found
utils/common.sh: line 208: ansible-galaxy: command not found

Add possibility to backup some data during the uninstall process

During the instance's life, some data might have been stored, created or even changed by the user. Some of them might be related to skill configurations (settings.json).

During the uninstall process, the TUI should suggest a backup of the current state of the instance.

Can't install on WSL Ubuntu 20.04

So I installed python 3.11, so it passed the first problem with the missing
python3.11 python3.11-dev python3.11-venv

E: Couldn't find any package by regex python3.11 E: Couldn't find any package by glob python3.11 E: Couldn't find any package by regex python3.11-dev E: Couldn't find any package by glob python3.11-dev E: Couldn't find any package by regex python3.11-venv E: Couldn't find any package by glob python3.11-venv

....

===============================================
OPEN VOICE OS INSTALLER | Version: b376ab7
===============================================

➤ Checking for existing instance... [done]
➤ Retrieving OS information... [done]
➤ Validating WSL2 requirements... [done]
➤ Detecting AVX/SIMD support... [done]
➤ Checking for Raspberry Pi board... [done]
➤ Detecting sound server... [done]
➤ Detecting display server... [done]
➤ Validating installer package requirements... [done]
➤ Creating installer Python virtualenv... [done]
➤ Installing Ansible requirements in Python virtualenv... [done]
utils/common.sh: line 268: $YQ_URL/yq_${kernel@L}_$arch: bad substitution

user20@WORKSTATION:~$ uname -a
Linux WORKSTATION 5.15.90.1-microsoft-standard-WSL2 #1 SMP Fri Jan 27 02:56:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

user20@WORKSTATION:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal

ChatGPT suggests to install separately Docker and Podman
...


/var/log/ovos-installer.log
/usr/bin/pactl
Hit:1 https://download.docker.com/linux/ubuntu focal InRelease
Hit:2 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:3 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal InRelease
Get:5 https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04 InRelease [1642 B]
Hit:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Fetched 1642 B in 1s (1539 B/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
whiptail is already the newest version (0.52.21-4ubuntu2).
expect is already the newest version (5.45.4-2build1).
jq is already the newest version (1.6-1ubuntu0.20.04.1).
python3-pip is already the newest version (20.0.2-5ubuntu1.10).
python3.11 is already the newest version (3.11.7-1+focal1).
python3.11-dev is already the newest version (3.11.7-1+focal1).
python3.11-venv is already the newest version (3.11.7-1+focal1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Requirement already satisfied: pip in /home/user20/.venvs/ovos-installer/lib/python3.11/site-packages (23.2.1)
Collecting pip
Obtaining dependency information for pip from https://files.pythonhosted.org/packages/15/aa/3f4c7bcee2057a76562a5b33ecbd199be08cdb4443a02e26bd2c3cf6fc39/pip-23.3.2-py3-none-any.whl.metadata
Using cached pip-23.3.2-py3-none-any.whl.metadata (3.5 kB)
Requirement already satisfied: setuptools in /home/user20/.venvs/ovos-installer/lib/python3.11/site-packages (65.5.0)
Collecting setuptools
Obtaining dependency information for setuptools from https://files.pythonhosted.org/packages/bb/e1/ed2dd0850446b8697ad28d118df885ad04140c64ace06c4bd559f7c8a94f/setuptools-69.0.2-py3-none-any.whl.metadata
Using cached setuptools-69.0.2-py3-none-any.whl.metadata (6.3 kB)
Using cached pip-23.3.2-py3-none-any.whl (2.1 MB)
Using cached setuptools-69.0.2-py3-none-any.whl (819 kB)
Installing collected packages: setuptools, pip
Attempting uninstall: setuptools
Found existing installation: setuptools 65.5.0
Uninstalling setuptools-65.5.0:
Successfully uninstalled setuptools-65.5.0
Attempting uninstall: pip
Found existing installation: pip 23.2.1
Uninstalling pip-23.2.1:
Successfully uninstalled pip-23.2.1
Successfully installed pip-23.3.2 setuptools-69.0.2
Collecting ansible==8.6.1
Using cached ansible-8.6.1-py3-none-any.whl.metadata (7.9 kB)
Collecting PyYAML==5.3.1
Using cached PyYAML-5.3.1-cp311-cp311-linux_x86_64.whl
Collecting ansible-core~=2.15.6 (from ansible==8.6.1)
Using cached ansible_core-2.15.8-py3-none-any.whl.metadata (7.0 kB)
Collecting jinja2>=3.0.0 (from ansible-core~=2.15.6->ansible==8.6.1)
Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting cryptography (from ansible-core~=2.15.6->ansible==8.6.1)
Using cached cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl.metadata (5.2 kB)
Collecting packaging (from ansible-core~=2.15.6->ansible==8.6.1)
Using cached packaging-23.2-py3-none-any.whl.metadata (3.2 kB)
Collecting resolvelib<1.1.0,>=0.5.3 (from ansible-core~=2.15.6->ansible==8.6.1)
Using cached resolvelib-1.0.1-py2.py3-none-any.whl (17 kB)
Collecting MarkupSafe>=2.0 (from jinja2>=3.0.0->ansible-core~=2.15.6->ansible==8.6.1)
Using cached MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)
Collecting cffi>=1.12 (from cryptography->ansible-core~=2.15.6->ansible==8.6.1)
Using cached cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting pycparser (from cffi>=1.12->cryptography->ansible-core~=2.15.6->ansible==8.6.1)
Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Using cached ansible-8.6.1-py3-none-any.whl (48.3 MB)
Using cached ansible_core-2.15.8-py3-none-any.whl (2.2 MB)
Using cached cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl (4.4 MB)
Using cached packaging-23.2-py3-none-any.whl (53 kB)
Using cached cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (464 kB)
Using cached MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB)
Installing collected packages: resolvelib, PyYAML, pycparser, packaging, MarkupSafe, jinja2, cffi, cryptography, ansible-core, ansible
Successfully installed MarkupSafe-2.1.3 PyYAML-5.3.1 ansible-8.6.1 ansible-core-2.15.8 cffi-1.16.0 cryptography-41.0.7 jinja2-3.1.2 packaging-23.2 pycparser-2.21 resolvelib-1.0.1
Starting galaxy collection install process
Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using --force.
_------------------------

I don't know what would be the easiest fix... ;\

Handle existing `docker.list` file and GPG key

TASK [ovos-installer : Add Docker repository] ***************************************************************************************************************************************************
Saturday 11 November 2023  23:35:18 +0100 (0:00:00.308)       0:00:06.653 ***** 
�[0;31mAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: apt_pkg.Error: E:Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/debian/ bookworm: /etc/apt/keyrings/docker.gpg != /usr/share/keyrings/docker.gpg, E:The list of sources could not be read.�[0m
�[0;31mfatal: [127.0.0.1]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"<stdin>\", line 16, in <module>\n  File \"<frozen runpy>\", line 226, in run_module\n  File \"<frozen runpy>\", line 98, in _run_module_code\n  File \"<frozen runpy>\", line 88, in _run_code\n  File \"/tmp/ansible_ansible.builtin.apt_repository_payload_gz5cntlz/ansible_ansible.builtin.apt_repository_payload.zip/ansible/modules/apt_repository.py\", line 765, in <module>\n  File \"/tmp/ansible_ansible.builtin.apt_repository_payload_gz5cntlz/ansible_ansible.builtin.apt_repository_payload.zip/ansible/modules/apt_repository.py\", line 742, in main\n  File \"/usr/lib/python3/dist-packages/apt/cache.py\", line 170, in __init__\n    self.open(progress)\n  File \"/usr/lib/python3/dist-packages/apt/cache.py\", line 232, in open\n    self._cache = apt_pkg.Cache(progress)\n                  ^^^^^^^^^^^^^^^^^^^^^^^\napt_pkg.Error: E:Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/debian/ bookworm: /etc/apt/keyrings/docker.gpg != /usr/share/keyrings/docker.gpg, E:The list of sources could not be read.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}�[0m

Default Logging Bug

When Installing via VENV, the logging in ~/.config/mycroft/mycroft.conf defaults to STDOUT instead of ~/.local/state

Python 3.11 not available on Debian Bullseye (11)

E: Unable to locate package python3.11
E: Couldn't find any package by glob 'python3.11'
E: Couldn't find any package by regex 'python3.11'
E: Unable to locate package python3.11-dev
E: Couldn't find any package by glob 'python3.11-dev'
E: Couldn't find any package by regex 'python3.11-dev'
E: Unable to locate package python3.11-venv
E: Couldn't find any package by glob 'python3.11-venv'
E: Couldn't find any package by regex 'python3.11-venv'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.