Files
pmomusic/INSTALL_LIBSOXR.md
Claude ff4ebcdfa5 feat: Add AudioSink node for audio playback via rodio
Implémente AudioSink qui permet la lecture audio en temps réel sur la sortie audio
standard via rodio avec architecture thread-safe.

- Nouveau nœud AudioSink avec thread dédié pour gérer rodio (OutputStream non-Send)
- Accepte tous formats audio (I16/I24/I32/F32/F64) et convertit vers I16
- Support volume, arrêt gracieux, transitions gapless
- Exemples: play_audio.rs et play_with_resampling.rs
- Documentation: INSTALL_LIBSOXR.md mise à jour avec instructions ALSA
- Tests unitaires inclus, tous passent
2025-11-05 14:30:15 +00:00

161 lines
4.1 KiB
Markdown

# Installation des dépendances système sans droits sudo
Ce document explique comment installer les dépendances système de `pmoaudio` localement sans privilèges administrateur.
## Dépendances requises
1. **libsoxr** - Nécessaire pour `ResamplingNode` (resampling audio haute qualité)
2. **libasound2** (ALSA) - Nécessaire pour `AudioSink` via rodio (lecture audio sur Linux)
## Contexte
Les crates `soxr` et `rodio` nécessitent des bibliothèques système. Dans un environnement sans droits sudo, voici comment les installer localement.
## Méthode : Installation locale via apt-get download
### 1. Télécharger les packages .deb
```bash
cd ~/.local
# Pour libsoxr (ResamplingNode)
apt-get download libsoxr-dev libsoxr0
# Pour ALSA (AudioSink)
apt-get download libasound2-dev
```
Cela télécharge les fichiers `.deb` sans les installer système-wide.
### 2. Extraire les packages
```bash
# Extraire libsoxr
dpkg -x libsoxr-dev_*.deb .
dpkg -x libsoxr0_*.deb .
# Extraire ALSA
dpkg -x libasound2-dev_*.deb .
```
Les fichiers sont extraits dans `~/.local/usr/lib/x86_64-linux-gnu/` et `~/.local/usr/include/`.
### 3. Configurer les variables d'environnement
Ajouter à votre `~/.bashrc` ou exporter dans votre session :
```bash
export PKG_CONFIG_PATH="/root/.local/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="/root/.local/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
```
**IMPORTANT:** Remplacer `/root/` par le chemin de votre home directory (`$HOME` ou `~`).
### 4. Vérifier l'installation
```bash
# Vérifier libsoxr
pkg-config --libs --cflags soxr
# Vérifier ALSA
pkg-config --libs --cflags alsa
```
Devrait retourner quelque chose comme :
```
# soxr
-I/root/.local/usr/include -L/root/.local/usr/lib/x86_64-linux-gnu -lsoxr
# alsa
-I/root/.local/usr/include -L/root/.local/usr/lib/x86_64-linux-gnu -lasound
```
## Utilisation avec Cargo
### Pour les builds réguliers
Les variables d'environnement suffisent pour `cargo build` et `cargo run`.
### Pour les tests
Les tests nécessitent également la configuration du linker. Deux options :
#### Option A : Configuration locale du projet (NON RECOMMANDÉ pour le versioning)
Créer `.cargo/config.toml` dans chaque crate :
```toml
[build]
rustflags = ["-L", "/root/.local/usr/lib/x86_64-linux-gnu"]
```
**⚠️ NE PAS committer ces fichiers** - ils contiennent des chemins spécifiques à votre installation.
#### Option B : Variables d'environnement pour cargo test
```bash
export PKG_CONFIG_PATH="$HOME/.local/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$HOME/.local/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
cargo test
```
## Pour d'autres distributions
### macOS (avec Homebrew)
```bash
brew install libsoxr
# Note: ALSA n'est pas nécessaire sur macOS (rodio utilise CoreAudio)
```
### Debian/Ubuntu (avec sudo)
```bash
sudo apt-get install libsoxr-dev libasound2-dev
```
### Fedora/RHEL
```bash
sudo dnf install soxr-devel
```
## Troubleshooting
### Erreur : "Package 'soxr' was not found" ou "Package 'alsa' was not found"
- Vérifier que `PKG_CONFIG_PATH` contient le bon chemin
- Vérifier que les fichiers `soxr.pc` et `alsa.pc` existent dans ce répertoire
### Erreur de link : "unable to find library -lsoxr" ou "-lasound"
- Pour `cargo build` : vérifier `LD_LIBRARY_PATH`
- Pour `cargo test` : utiliser la configuration rustflags (Option A ci-dessus)
### Le test compile mais échoue au runtime
```
error while loading shared libraries: libsoxr.so.0: cannot open shared object file
```
Solution : Ajouter `LD_LIBRARY_PATH` également pour l'exécution :
```bash
export LD_LIBRARY_PATH="$HOME/.local/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
cargo test
```
## Notes pour Claude Code sessions
Pour les futures sessions Claude :
1. Exporter les variables d'environnement en début de session
2. NE PAS créer de fichiers `.cargo/config.toml` dans le projet
3. Si nécessaire pour les tests, les créer localement mais ne pas les committer
4. Documenter toute difficulté d'installation ici
## Références
- libsoxr GitHub: https://github.com/chirlu/soxr
- Documentation pkg-config: https://www.freedesktop.org/wiki/Software/pkg-config/