Streaming Theora sur Ubuntu (erreur libshout)

La libshout packagée sur Ubuntu (version 2.2-2) a été compilée bizarrement (peut-être sans support Theora)[1]. Toujours est-il qu'il ne faut pas compter sur cette librairie pour streamer en Theora... à moins de la recompiler.

On commence par télécharger un snapshot du SVN. J'ai pris la dernière version (à l'heure où j'ai compilé), celle du 28 décembre 2006 :

wget http://people.xiph.org/~brendan/snapshots/libshout/libshout-2.2.2-20061228.tar.gz
tar xvfz libshout-2.2.2-20061228.tar.gz
cd libshout-2.2.2

Ensuite, les étapes classiques d'une compilation :

./configure --prefix=/usr
make
sudo make install

On teste avec un soft qui utilise la libshout ; ici, j'utilise ezstream :

ldd `which ezstream`
       [...]
       libshout.so.3 => /usr/lib/libshout.so.3 (0xb7f3c000)
       [...]

Si tout s'est bien passé, vous pouvez lancer votre programme !

Mais maintenant, on a un problème de conflit avec le paquet Ubuntu... On va donc créer un "dummy package"[2] pour faire croire à Ubuntu qu'on a bien installé la libshout par dpkg/apt :

sudo apt-get install equivs
nano libshout3.ctl

On met ceci dans le fichier libshout3.ctl :

Section: libs
Package: libshout3
Version: 2.2-3
Description: libshout dummy package
 This package provides dpkg with the information that
 there is a libshout installed, which is true... except
 it's not Ubuntu's one!
 .

Ensuite on construit le package et on l'installe :

equivs-build libshout3.ctl
sudo dpkg -i libshout3_2.2-3_all.deb

On fait de même avec libshout3-dev, avec dans le libshout3-dev.ctl :

Section: libdevel
Package: libshout3-dev
Provides: libshout-dev
Version: 2.2-3
Description: libshout-dev dummy Package
  This package provides dpkg with the information that
  there is a libshout-dev installed, which is true... except
  it's not Ubuntu's one!
  .

Et voilà !

Notes

[1] La preuve : ça marche sous Debian... et un debug du code montre que l'erreur vient d'une fonction de libshout.

[2] Plus d'infos sur les dummy packages sur wickle.