Files
voculinux/scripts/distro-package-map.yaml
T
Jatin K MalikandGitHub 86766d0ea0 fix(install): refresh ldconfig after openSUSE typelib install, clarify python3XY placeholder convention (#438)
- Add 'sudo ldconfig' after zypper install in suse_install_appindicator_runtime()
  to ensure GI typelib cache is refreshed so newly installed typelib packages
  are immediately discoverable by GObject introspection
- Add section-level comment in distro-package-map.yaml explaining that
  python3XY is a placeholder convention resolved at install time by
  suse_python_package_prefix() / suse_python_package_candidates()

Follow-up polish from review of #420.
2026-05-30 15:08:13 -07:00

243 lines
7.3 KiB
YAML

# Package name mapping for different Linux distributions
# This file documents the package names used by the installer for each distribution
# It serves as a reference for manual installation and for adding support for new distributions
# System packages required for Vocalinux
system_packages:
# GTK3 and PyGObject
gtk3:
ubuntu: ["python3-gi", "python3-gi-cairo", "gir1.2-gtk-3.0", "gir1.2-gdkpixbuf-2.0"]
debian: ["python3-gi", "python3-gi-cairo", "gir1.2-gtk-3.0", "gir1.2-gdkpixbuf-2.0", "libcairo2-dev"]
fedora: ["python3-gobject", "gtk3", "gobject-introspection-devel"]
arch: ["python-gobject", "gtk3", "gobject-introspection", "python-cairo"]
# Tumbleweed often uses versioned Python package names such as python313-gobject.
# NOTE: "python3XY" is a placeholder convention. The XY suffix is resolved at
# install time by install.sh via suse_python_package_prefix() and
# suse_python_package_candidates(), which try the active Python minor version
# first (e.g. python313-gobject) and fall back to the unversioned name.
opensuse: ["python3XY-gobject", "python3XY-gobject-cairo", "gtk3", "gobject-introspection-devel"]
gentoo: ["dev-python/pygobject:3", "x11-libs/gtk+:3"]
alpine: ["py3-gobject3", "py3-cairo", "gtk+3.0"]
void: ["python3-gobject", "gtk+3"]
solus: ["python3-gobject", "gtk3"]
# AppIndicator / Ayatana AppIndicator
appindicator:
ubuntu: ["gir1.2-appindicator3-0.1"]
debian_11: ["gir1.2-ayatanaappindicator3-0.1"]
debian_12_plus: ["gir1.2-ayatanaappindicator3-0.1"]
fedora: ["libappindicator-gtk3"]
arch: ["libappindicator-gtk3"]
opensuse: ["typelib-1_0-AyatanaAppIndicator3-0_1", "libayatana-appindicator3-1", "typelib-1_0-AppIndicator3-0_1"]
gentoo: ["dev-libs/libappindicator:3"]
alpine: ["libayatana-appindicator"]
void: ["libappindicator"]
solus: ["libappindicator"]
# PortAudio
portaudio:
ubuntu: ["portaudio19-dev"]
debian: ["portaudio19-dev"]
fedora: ["portaudio-devel"]
arch: ["portaudio"]
opensuse: ["portaudio-devel"]
gentoo: ["media-libs/portaudio"]
alpine: ["portaudio-dev"]
void: ["portaudio-devel"]
solus: ["portaudio-devel"]
# Python development
python_dev:
ubuntu: ["python3-dev", "python3-venv"]
debian: ["python3-dev", "python3-venv"]
fedora: ["python3-devel", "python3-virtualenv"]
arch: ["python"] # Arch includes venv by default
# Tumbleweed package names follow the active Python minor version, e.g. python313-devel.
# NOTE: "python3XY" is a placeholder — see gtk3.opensuse comment above for details.
opensuse: ["python3XY-devel", "python3XY-virtualenv", "python3XY-venv", "python3XY-pip"]
gentoo: ["dev-lang/python:3.9"]
alpine: ["py3-virtualenv"]
void: ["python3-devel"]
solus: ["python3-virtualenv"]
# Package build tools
build_tools:
ubuntu: ["pkg-config", "wget", "curl", "unzip"]
debian: ["pkg-config", "wget", "curl", "unzip"]
fedora: ["pkg-config", "wget", "curl", "unzip"]
arch: ["pkgconf", "wget", "curl", "unzip"]
opensuse: ["pkg-config", "wget", "curl", "unzip"]
gentoo: ["dev-util/pkgconfig", "net-misc/wget", "net-misc/curl", "app-arch/unzip"]
alpine: ["pkgconf", "wget", "curl", "unzip"]
void: ["pkg-config", "wget", "curl", "unzip"]
solus: ["pkg-config", "wget", "curl", "unzip"]
# Text injection tools
xdotool:
ubuntu: ["xdotool"]
debian: ["xdotool"]
fedora: ["xdotool"]
arch: ["xdotool"]
opensuse: ["xdotool"]
gentoo: ["x11-misc/xdotool"]
alpine: ["xdotool"]
void: ["xdotool"]
solus: ["xdotool"]
wtype:
ubuntu: ["wtype"]
debian: ["wtype"]
fedora: ["wtype"]
arch: ["wtype"]
opensuse: ["wtype"]
gentoo: ["x11-misc/wtype"]
alpine: ["wtype"]
void: ["wtype"]
solus: ["wtype"]
ydotool:
ubuntu: ["ydotool"]
debian: ["ydotool"]
fedora: ["ydotool"]
arch: ["ydotool"]
opensuse: ["ydotool"]
gentoo: ["app-misc/ydotool"]
alpine: ["ydotool"]
void: ["ydotool"]
solus: ["ydotool"]
# Command templates for package managers
install_commands:
apt: "sudo apt install -y {packages}"
apt_update: "sudo apt update"
dnf: "sudo dnf install -y {packages}"
dnf_update: "sudo dnf update -y" # Optional update
yum: "sudo yum install -y {packages}"
pacman: "sudo pacman -S --noconfirm {packages}"
pacman_update: "sudo pacman -Syu" # Optional update
zypper: "sudo zypper install -y {packages}"
zypper_update: "sudo zypper refresh" # Optional update
emerge: "sudo emerge {packages}"
apk: "sudo apk add {packages}"
apk_update: "sudo apk update" # Optional update
xbps: "sudo xbps-install -Sy {packages}"
xbps_update: "sudo xbps-install -Sy" # Updates sync during install
eopkg: "sudo eopkg install -y {packages}"
eopkg_update: "sudo eopkg upgrade" # Optional update
# Distribution family mappings
# This helps determine which package manager and package names to use
distribution_families:
# Ubuntu family
- id: ubuntu
family: ubuntu
package_manager: apt
variations: [pop, linuxmint, elementary, zorin]
# Debian family
- id: debian
family: debian
package_manager: apt
variations: []
# Fedora family
- id: fedora
family: fedora
package_manager: dnf
variations: [rhel, centos, rocky, almalinux]
# Arch family
- id: arch
family: arch
package_manager: pacman
variations: [manjaro, endeavouros]
# openSUSE family
- id: opensuse
family: suse
package_manager: zypper
variations: []
# Gentoo
- id: gentoo
family: gentoo
package_manager: emerge
variations: []
# Alpine
- id: alpine
family: alpine
package_manager: apk
variations: []
# Void Linux
- id: void
family: void
package_manager: xbps
variations: []
# Solus
- id: solus
family: solus
package_manager: eopkg
variations: []
# Mageia
- id: mageia
family: mageia
package_manager: dnf # Prefers dnf, falls back to urpmi
variations: []
# Notes for specific distributions
distribution_notes:
debian_11:
appindicator: "Use gir1.2-ayatanaappindicator3-0.1 instead of gir1.2-appindicator3-0.1"
gentoo:
general: "Gentoo compiles packages from source. Installation will take longer."
python: "Ensure Python 3.9+ is set as the active version"
alpine:
general: "Alpine uses musl libc. Some Python packages may not have pre-built wheels."
nixos:
general: "NixOS is not supported due to completely different filesystem layout."
void:
general: "Void Linux may use either glibc or musl libc. glibc version recommended."
# Architecture-specific library paths
library_paths:
typelib:
# Debian/Ubuntu multiarch paths
- /usr/lib/x86_64-linux-gnu/girepository-1.0
- /usr/lib/aarch64-linux-gnu/girepository-1.0
- /usr/lib/arm-linux-gnueabihf/girepository-1.0
- /usr/lib/riscv64-linux-gnu/girepository-1.0
- /usr/lib/powerpc64le-linux-gnu/girepository-1.0
- /usr/lib/s390x-linux-gnu/girepository-1.0
# Fedora/RHEL
- /usr/lib64/girepository-1.0
# Arch, generic
- /usr/lib/girepository-1.0
# Local installations
- /usr/local/lib/girepository-1.0
- /usr/local/lib64/girepository-1.0
models:
- /usr/local/share/vocalinux/models
- /usr/share/vocalinux/models
- /usr/lib64/vocalinux/models
- /usr/lib/vocalinux/models