lundi 17 octobre 2011

Pilote postgresql sdbc: version 0.8

Ubuntu 11.10 est sorti et bonne nouvelle: il vient avec une toute nouvelle version, la version 0.8, du pilote libreoffice postgresql sdbc. Cette version remplace la version 0.7.6b qui avait un gros problème: elle permettait uniquement un accès en lecture seule. La nouvelle version est elle entièrement fonctionnelle. Il n'est donc plus nécessaire de retourner à OpenOffice 3.2 et à la version 0.7.6a du pilote (voir OOo base: retour vers le futur).
A nous les joies de LibreOffice 3.4. Pour y accéder à PostgreSQL via le pilote sdbc, il suffit d'installer le paquet libreoffice-sdbc-postgresql.
Il n'existe pas actuellement de paquet rpm pour la version 0.8 de ce pilote.
Pour une utilisation dans une distribution à base de rpm, on peut procéder comme ceci.
D'abord trouver et télécharger le fichier qui convient à son architecture, par exemple:
libreoffice-sdbc-postgresql_0.8.0+LibO3.4.3-3ubuntu2_amd64.deb.
Ensuite placer ce fichier dans un dossier work.
Puis:
[toto@rigel work]$ ar xv libreoffice-sdbc-postgresql_0.8.0+LibO3.4.3-3ubuntu2_amd64.deb
x - debian-binary
x - control.tar.gz
x - data.tar.lzma
[toto@rigel work]$ tar x --lzma -f data.tar.lzma
L'extraction du tar.lzma nous donne un répertoire usr:


Pour plus de facilités plaçons une copie du répertoire postgresql-sbbc-0.8.0 dans le répertoire work, copie que nous allons utiliser pour la constitution d'une archive zip.
[toto@rigel work]$ cp -r usr/lib/libreoffice/share/extensions/postgresql-sdbc-0.8.0/ .
[toto@rigel work]$ zip -r postgresql-sdbc-0.8.0.zip postgresql-sdbc-0.8.0/
  adding: postgresql-sdbc-0.8.0/ (stored 0%)
  adding: postgresql-sdbc-0.8.0/postgresql-sdbc.unorc (stored 0%)
  adding: postgresql-sdbc-0.8.0/description.xml (deflated 56%)
  adding: postgresql-sdbc-0.8.0/META-INF/ (stored 0%)
  adding: postgresql-sdbc-0.8.0/META-INF/manifest.xml (deflated 62%)
  adding: postgresql-sdbc-0.8.0/postgresql-sdbc-impl.uno.so (deflated 69%)
  adding: postgresql-sdbc-0.8.0/postgresql.xcu (deflated 64%)
  adding: postgresql-sdbc-0.8.0/postgresql-sdbc.uno.so (deflated 68%)
  adding: postgresql-sdbc-0.8.0/description/ (stored 0%)
  adding: postgresql-sdbc-0.8.0/description/description_en-US.txt (deflated 28%)
Nous disposons maintenant d'un fichier zip que nous pouvons ajouter en tant qu'extension à LibreOffice via le gestionnaire des extensions.
Avant de procéder, il convient toutefois d'effacer toute trace du pilote précédent.
[toto@rigel work]$ unopkg remove postgresql-sdbc-0.7.6b.zip
Si cette commande échoue:
[toto@rigel work]$ rm -rf ~/.libreoffice/3/user/uno_packages/
Dans le cas où l'installation du pilote précédent a été effectuée en root pour l'ensemble des utilisateurs:
[root@rigel work]# unopkg remove --shared postgresql-sdbc-0.7.6b
Il reste éventuellement à désinstaller le paquet qui a fournit l'extension.
Au lieu d'utiliser le gestionnaire des extensions, nous pouvons installer la nouvelle extension comme suit:
[root@rigel work]# cp -r postgresql-sdbc-0.8.0 /usr/lib64/libreoffice/share/extensions/
[root@rigel work]# unopkg add -v --shared /usr/lib64/libreoffice/share/extensions/postgresql-sdbc-0.8.0/
Évidemment dans ce cas, il n'était nul besoin du fichier zip.
Pour ceux que la copie dans /usr/lib64/libreoffice/share/extensions/ font hurler, il reste une alternative: construire un paquet rpm, ce qui peut être fait relativement aisément à l'aide de rpmerizor.
Une autre solution consiste à utiliser alien pour obtenir un rpm à partir du deb.
Cependant si à partir d'un paquet deb 64 bits par exemple, nous souhaitons une installation dans /usr/lib64 et non dans /usr/lib, il y a quelques manipulations à effectuer.
Procédons depuis Ubuntu.
toto@rigel:~work$ apt-get download libreoffice-sdbc-postgresql
Réception de : 1 Téléchargement de libreoffice-sdbc-postgresql 1:0.8.0+LibO3.4.3-3ubuntu2 [211 kB]
toto@rigel:~work$ ar xv libreoffice-sdbc-postgresql_0.8.0+LibO3.4.3-3ubuntu2_amd64.deb
x - debian-binary
x - control.tar.gz
x - data.tar.lzma
toto@rigel:~work$ tar xv --lzma -f data.tar.lzma
toto@rigel:~work$ tar xzvf control.tar.gz
./
./postinst
./preinst
./md5sums
./control
En plus du tar.lzma, nous avons cette fois extrait le tar.gz.
Remplaçons /usr/lib par /usr/lib64:
toto@rigel:~work$ mv usr/lib usr/lib64
toto@rigel:~work$ sed -i.old 's/lib/lib64/' md5sums
Reconstruisons le paquet deb:
toto@rigel:~/Téléchargements/work$ mkdir -p work-b/DEBIAN
toto@rigel:~/Téléchargements/work$ mv usr work-b
toto@rigel:~/Téléchargements/work$ mv control md5sums work-b/DEBIAN
toto@rigel:~/Téléchargements/work$ sudo dpkg -b work-b libreoffice-sdbc-postgresql_0.8.0+LibO3.4.3-3ubuntu2_amd64.deb
[sudo] password for toto:
dpkg-deb : avertissement : « usr/DEBIAN/control » contient le champ « Original-Maintainer » défini par l'utilisateur
dpkg-deb : avertissement : 1 avertissement ignoré sur le(s) fichier(s) « control »
dpkg-deb : construction du paquet « libreoffice-sdbc-postgresql » dans « libreoffice-sdbc-postgresql_0.8.0+LibO3.4.3-3ubuntu2_amd64.deb ».
Le paquet deb ainsi obtenu n'est pas destiné à être utilisé dans Ubuntu, mais bien à être transformé en rpm avec alien:
toto@rigel:~work$ sudo alien --to-rpm libreoffice-sdbc-postgresql_0.8.0+LibO3.4.3-3ubuntu2_amd64.deb
[sudo] password for toto:
libreoffice-sdbc-postgresql-0.8.0+LibO3.4.3-4.x86_64.rpm generated
Ce paquet peut maintenant être installé dans une distribution à base de rpm.
Avec Fedora 15 en tout cas, tout se passe bien et le pilote fonctionne avec LibreOffice 3.3.3.