refactor(installer): generate distro package map (#872)
* refactor(installer): generate distro package map * fix(installer): handle Debian derivative package maps * docs(installer): document generated package map * fix(installer): validate package map and refresh derivative probes * fix(installer): name openSUSE package roles
This commit is contained in:
@@ -36,9 +36,10 @@ The `.desktop` entry is automatically configured with the detected `GI_TYPELIB_P
|
||||
## Officially Supported Distributions
|
||||
|
||||
These distributions are tested and known to work well with Vocalinux. A
|
||||
derivative is judged by the Python it ships rather than by its own version
|
||||
number, which rarely tracks the base release, and `install.sh` checks the
|
||||
interpreter rather than the release label.
|
||||
derivative is judged by the Python and package repositories it ships rather
|
||||
than by its own version number, which rarely tracks the base release. In
|
||||
particular, `install.sh` does not interpret a Debian-based derivative's product
|
||||
version as a Debian release number.
|
||||
|
||||
| Distribution | Version | Status | Notes |
|
||||
|--------------|---------|--------|-------|
|
||||
@@ -72,13 +73,20 @@ These distributions are known to be incompatible:
|
||||
|
||||
| Distribution | Status | Reason |
|
||||
|--------------|--------|--------|
|
||||
| Debian 11 and earlier | ❌ Not Supported | EOL and below the Python 3.11 floor; the installer requires Debian 12+ |
|
||||
| NixOS | ❌ Not Supported | Completely different filesystem layout (/nix/store), incompatible with standard installer |
|
||||
|
||||
## Requirements by Distribution
|
||||
|
||||
These are baseline commands for manual installations. The exact inventory used
|
||||
by `install.sh`, including package alternatives and conditional dependencies,
|
||||
lives in [`scripts/distro-package-map.yaml`](../scripts/distro-package-map.yaml).
|
||||
For the complete manual setup sequence, including native build prerequisites,
|
||||
use [INSTALL_MANUAL.md](INSTALL_MANUAL.md#system-packages-by-distribution).
|
||||
|
||||
### Ubuntu/Debian-based
|
||||
```bash
|
||||
sudo apt install -y python3-gi gir1.2-gtk-3.0 gir1.2-gdkpixbuf-2.0 \
|
||||
sudo apt install -y python3-gi gir1.2-gtk-3.0 gir1.2-ibus-1.0 gir1.2-gdkpixbuf-2.0 \
|
||||
portaudio19-dev python3-dev python3-venv pkg-config
|
||||
```
|
||||
|
||||
@@ -134,13 +142,13 @@ the VOSK engine (`--engine=vosk`) as a fully-packaged alternative.
|
||||
|
||||
### Fedora/RHEL-based
|
||||
```bash
|
||||
sudo dnf install -y python3-gobject gtk3-devel gobject-introspection-devel \
|
||||
sudo dnf install -y python3-gobject gtk3-devel ibus-devel cairo-devel gobject-introspection-devel \
|
||||
portaudio-devel python3-devel python3-virtualenv pkg-config
|
||||
```
|
||||
|
||||
### Arch Linux-based
|
||||
```bash
|
||||
sudo pacman -S --needed python-gobject gtk3 gobject-introspection \
|
||||
sudo pacman -S --needed python-gobject gtk3 ibus gobject-introspection \
|
||||
portaudio python pkg-config
|
||||
```
|
||||
|
||||
@@ -151,9 +159,11 @@ PYVER=$(python3 -c 'import sys; print(f"python{sys.version_info.major}{sys.versi
|
||||
sudo zypper install -y \
|
||||
"${PYVER}-pip" "${PYVER}-gobject" "${PYVER}-gobject-cairo" \
|
||||
"${PYVER}-devel" "${PYVER}-virtualenv" \
|
||||
gtk3 typelib-1_0-AyatanaAppIndicator3-0_1 libayatana-appindicator3-1 \
|
||||
gtk3 ibus typelib-1_0-IBus-1_0 \
|
||||
typelib-1_0-AyatanaAppIndicator3-0_1 libayatana-appindicator3-1 \
|
||||
typelib-1_0-Notify-0_7 libnotify4 \
|
||||
gobject-introspection-devel portaudio-devel pkg-config cmake wget curl unzip \
|
||||
gcc gcc-c++ make patchelf \
|
||||
xdotool wtype
|
||||
|
||||
# Optional: only needed for whisper.cpp Vulkan GPU builds
|
||||
@@ -224,7 +234,7 @@ Before running `pip install vocalinux`, `pip install "vocalinux[vosk]"`, or
|
||||
|
||||
#### Ubuntu/Debian
|
||||
```bash
|
||||
sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-ayatanaappindicator3-0.1 \
|
||||
sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-ibus-1.0 gir1.2-ayatanaappindicator3-0.1 \
|
||||
libgirepository1.0-dev libcairo2-dev portaudio19-dev python3-dev \
|
||||
python3-venv pkg-config xdotool wtype wl-clipboard xclip xsel
|
||||
```
|
||||
@@ -234,14 +244,14 @@ On Ubuntu 24.04+ or Pop!_OS, install `libgirepository-2.0-dev` if
|
||||
|
||||
#### Fedora
|
||||
```bash
|
||||
sudo dnf install python3-gobject gtk3 gtk3-devel libayatana-appindicator-gtk3 \
|
||||
sudo dnf install python3-gobject gtk3 gtk3-devel ibus-devel cairo-devel libayatana-appindicator-gtk3 \
|
||||
gobject-introspection-devel portaudio-devel python3-devel \
|
||||
python3-virtualenv pkg-config xdotool wtype wl-clipboard xclip xsel
|
||||
```
|
||||
|
||||
#### Arch Linux
|
||||
```bash
|
||||
sudo pacman -S python-gobject gtk3 libayatana-appindicator gobject-introspection \
|
||||
sudo pacman -S python-gobject gtk3 ibus libayatana-appindicator gobject-introspection \
|
||||
python-cairo portaudio python-virtualenv pkg-config xdotool wtype wl-clipboard xclip xsel
|
||||
```
|
||||
|
||||
@@ -249,7 +259,8 @@ sudo pacman -S python-gobject gtk3 libayatana-appindicator gobject-introspection
|
||||
```bash
|
||||
PYVER=$(python3 -c 'import sys; print(f"python{sys.version_info.major}{sys.version_info.minor}")')
|
||||
|
||||
sudo zypper install "${PYVER}-gobject" "${PYVER}-gobject-cairo" gtk3 \
|
||||
sudo zypper install "${PYVER}-gobject" "${PYVER}-gobject-cairo" gtk3 ibus typelib-1_0-IBus-1_0 \
|
||||
gcc gcc-c++ make patchelf \
|
||||
typelib-1_0-AyatanaAppIndicator3-0_1 libayatana-appindicator3-1 \
|
||||
typelib-1_0-Notify-0_7 libnotify4 \
|
||||
portaudio-devel "${PYVER}-devel" "${PYVER}-virtualenv" pkg-config xdotool wtype wl-clipboard xclip xsel
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ chmod +x Vocalinux-*-x86_64.AppImage # or aarch64
|
||||
./Vocalinux-*-x86_64.AppImage
|
||||
```
|
||||
|
||||
Built against glibc 2.35, so it starts on Debian 12+, Ubuntu 22.04+, Fedora 36+, Arch, and Tumbleweed. Older bases (RHEL 9, Debian 11, Ubuntu 20.04) are below that floor; use the installer or PyPI there.
|
||||
Built against glibc 2.35, so it starts on Debian 12+, Ubuntu 22.04+, Fedora 36+, Arch, and Tumbleweed. Older bases (RHEL 9, Debian 11, Ubuntu 20.04) are below that AppImage floor. The installer and PyPI package still require a distro that ships Python 3.11+, so they are not a workaround for Debian 11 or Ubuntu 20.04.
|
||||
|
||||
Still needs host text-injection tools (`xdotool` on X11; `wtype` / `ydotool` / clipboard tools on Wayland). Current AppImages rebuild whisper.cpp with Vulkan and use the host GPU driver (`vulkaninfo --summary`). Prefer the installer when you want system deps, a CUDA build, and models set up automatically.
|
||||
|
||||
|
||||
+24
-8
@@ -2,12 +2,21 @@
|
||||
|
||||
Use this when the [recommended installer](INSTALL.md) is not a fit, or you want an explicit package list. Prefer `./install.sh` for a normal desktop install.
|
||||
|
||||
The commands below are human-readable baselines for manual installs. The
|
||||
installer's authoritative package inventory, including build helpers and
|
||||
fallbacks, is [`scripts/distro-package-map.yaml`](../scripts/distro-package-map.yaml).
|
||||
Its generated shell module is committed so installations do not need a YAML
|
||||
parser.
|
||||
|
||||
Related: [DISTRO_COMPATIBILITY.md](DISTRO_COMPATIBILITY.md), [TROUBLESHOOTING.md](TROUBLESHOOTING.md).
|
||||
|
||||
## System packages by distribution
|
||||
|
||||
Install desktop/system dependencies **before** creating a venv or running `pip install vocalinux`. Pip cannot install GTK typelibs, AppIndicator, PortAudio, or text-injection tools.
|
||||
|
||||
Debian 11 and earlier are unsupported; the Debian instructions start at Debian
|
||||
12, which is the oldest release with the required Python 3.11.
|
||||
|
||||
### Ubuntu
|
||||
|
||||
```bash
|
||||
@@ -15,8 +24,9 @@ sudo apt update
|
||||
sudo apt install -y \
|
||||
python3-pip python3-venv python3-dev \
|
||||
python3-gi python3-gi-cairo \
|
||||
gir1.2-gtk-3.0 \
|
||||
libgirepository1.0-dev portaudio19-dev \
|
||||
gir1.2-gtk-3.0 gir1.2-ibus-1.0 \
|
||||
libgirepository1.0-dev libcairo2-dev portaudio19-dev \
|
||||
build-essential pkg-config cmake libssl-dev autoconf automake libtool patchelf \
|
||||
wget curl unzip
|
||||
|
||||
# Tray: older Ubuntu → gir1.2-appindicator3-0.1
|
||||
@@ -36,8 +46,9 @@ sudo apt update
|
||||
sudo apt install -y \
|
||||
python3-pip python3-venv python3-dev \
|
||||
python3-gi python3-gi-cairo \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-gtk-3.0 gir1.2-ibus-1.0 \
|
||||
libgirepository1.0-dev libcairo2-dev portaudio19-dev \
|
||||
build-essential pkg-config cmake libssl-dev autoconf automake libtool patchelf \
|
||||
wget curl unzip \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
xdotool wtype wl-clipboard xclip xsel
|
||||
@@ -50,8 +61,9 @@ sudo apt update
|
||||
sudo apt install -y \
|
||||
python3-pip python3-venv python3-dev \
|
||||
python3-gi python3-gi-cairo \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-gtk-3.0 gir1.2-ibus-1.0 \
|
||||
libgirepository-2.0-dev libcairo2-dev portaudio19-dev \
|
||||
build-essential pkg-config cmake libssl-dev autoconf automake libtool patchelf \
|
||||
wget curl unzip \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
xdotool wtype wl-clipboard xclip xsel
|
||||
@@ -64,8 +76,9 @@ Debian notes (OpenSSL build deps, ydotool, etc.): [DISTRO_COMPATIBILITY.md](DIST
|
||||
```bash
|
||||
sudo dnf install -y \
|
||||
python3-pip python3-devel python3-virtualenv \
|
||||
python3-gobject gtk3 libayatana-appindicator-gtk3 \
|
||||
gobject-introspection-devel portaudio-devel \
|
||||
python3-gobject gtk3 ibus-devel libayatana-appindicator-gtk3 \
|
||||
gobject-introspection-devel portaudio-devel cairo-devel \
|
||||
gcc gcc-c++ make pkg-config cmake patchelf \
|
||||
wget curl unzip xdotool wtype wl-clipboard xclip xsel
|
||||
```
|
||||
|
||||
@@ -75,9 +88,10 @@ Prefer the AUR package (`yay -S vocalinux`). Manual packages:
|
||||
|
||||
```bash
|
||||
sudo pacman -S --needed \
|
||||
python-pip python-gobject gtk3 \
|
||||
python-pip python-gobject gtk3 ibus \
|
||||
libayatana-appindicator gobject-introspection \
|
||||
python-cairo portaudio python-virtualenv \
|
||||
base-devel pkg-config cmake patchelf \
|
||||
wget curl unzip xdotool wtype wl-clipboard xclip xsel
|
||||
```
|
||||
|
||||
@@ -89,9 +103,11 @@ PYVER=$(python3 -c 'import sys; print(f"python{sys.version_info.major}{sys.versi
|
||||
sudo zypper install -y \
|
||||
"${PYVER}-pip" "${PYVER}-gobject" "${PYVER}-gobject-cairo" \
|
||||
"${PYVER}-devel" "${PYVER}-virtualenv" \
|
||||
gtk3 typelib-1_0-AyatanaAppIndicator3-0_1 libayatana-appindicator3-1 \
|
||||
gtk3 ibus typelib-1_0-IBus-1_0 \
|
||||
typelib-1_0-AyatanaAppIndicator3-0_1 libayatana-appindicator3-1 \
|
||||
typelib-1_0-Notify-0_7 libnotify4 \
|
||||
gobject-introspection-devel portaudio-devel pkg-config cmake \
|
||||
gcc gcc-c++ make patchelf \
|
||||
wget curl unzip xdotool wtype wl-clipboard xclip xsel
|
||||
|
||||
# Optional: whisper.cpp Vulkan builds
|
||||
|
||||
Reference in New Issue
Block a user