Compilation de LibreOffice Online pour supprimer les limitations de documents ouverts et de connexions simultanées sous Debian.
Rédigé par Nicolas Sulek
Aucun commentaire
Classé dans : Logiciel
- le nombre de documents ouverts (10)
- le nombre de connexions simultanées (20).
Il est tout à fait possible de les supprimer en compilant soi même LibreOffice Online.
Cette documentation est totalement inspirée de https://www.boniface.me/post/building-libreoffice-online-for-debian .
Installation des paquets nécessaires à la compilation et à la création du paquet
apt-get install libpng-dev libcap-dev libtool m4 automake fakeroot debhelper dh-systemd build-essential unixodbc-dev libreoffice python-polib nodejs node-jake libghc-zlib-bindings-dev libghc-zlib-dev apt-get build-dep libreofficePour compiler LibreOffice Online, il va falloir installer des paquets via npm. Il faut donc installer npm et nodejs.
Personnellement, j'installe les binaires fournis par nodesource.
Ensuite, on installe les paquets nécessaires :
npm install uglify-js exorcist d3 evol-colorpicker bootstrap eslint browserify-css d3
Création des paquets LibreOffice Online
Récupération du code source
mkdir ~/loolwsd cd ~/loolwsd/ git clone https://github.com/LibreOffice/online.git cd onlineDepuis ce clone de dépôt, on doit choisir la version pour la suite de la compilation :
git tagIl faut choisir les versions cp :
git checkout -b debian tags/cp-4.0.8-2On va ensuite créer une archive qui servira pour la création du paquet :
cd .. tar -cJf loolwsd_4.0.8.orig.tar.xz online/ cd onlineLe nom du fichier doit correspondre à la version du tag sans la révision mineure.
Modification des fichiers nécessaires à la création du paquet Debian
Nous allons ensuite modifier les fichiers contenus dans le répertoire debian :- debian/changelog
- debian/control
- debian/rules
- debian/loolwsd.service
- configure.ac
debian/changelog
Dans ce fichier, nous allons juste rajouter une information sur notre modification :loolwsd (4.0.8-2) stable; urgency=medium * Custom build of 4.0.8-2 for Debian Buster -- Nicolas SulekMond, 25 Nov 2019 07:47:21 -0400
debian/control
Ici, nous allons supprimer toutes les références vers Collabora Online pour pouvoir installer n'importe quelle version de LibreOffice, et rajouter libcairo2 qui est nécessaire à LibreOffice.Il faut alors remplacer la directive Depends par :
Depends: ${shlibs:Depends}, ${misc:Depends}, libsm6, libxinerama1, libxrender1, libgl1-mesa-glx, libcups2, libxcb-render0, libxcb-shm0, locales-all, adduser, expat, fontconfig, cpio, libcap2-bin, libcairo2
debian/rules
Il faut modifier la directive CONFFLAGS pour changer les chemins et rajouter des étapes override. Le fichier final doit être :#!/usr/bin/make -f # see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk CONFFLAGS = --enable-silent-rules --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-lokit-path=`pwd`/bundled/include --disable-setcap $(CONFIG_OPTIONS) # main packaging script based on dh7 syntax %: dh $@ --with=systemd --parallel override_dh_auto_configure: ./autogen.sh ./configure $(CONFFLAGS) override_dh_auto_test: # do not test override_dh_auto_build: dh_auto_build --parallel $(MAKEARGS) override_dh_installinit: # no init.d scripts here, assume systemdAttention, après les commandes override, ce sont des tabulations.
debian/loolwsd.service
Dans ce fichier, il faut indiquer le chemin vers LibreOffice et le répertoire de configuration. Il faut ainsi remplacer :EnvironmentFile=-/etc/sysconfig/loolwsdpar
EnvironmentFile=-/etc/loolwsdet remplacer
ExecStart=/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice5.3 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsdpar
ExecStart=/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/libreoffice6.2 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsdMon choix est d'installer les binaires de LibreOffice fournis par la Document Fondation pour avoir la version la plus récente et la plus compatible avec LibreOffice Online. Ce qui fait que le chemin sera /opt/libreoffice6.2.
configure.ac
C'est dans ce fichier que sont indiquées les fameuses limites.Deux possibilités pour le modifier :
- soit créer des patchs à positionner dans debian/patches
- soit éditer directement le fichier.
Les valeurs à remplacer sont :
MAX_CONNECTIONS=20
MAX_DOCUMENTS=10et si on n'utilise pas le LibreOffice fourni par la distribution
LO_PATH="/usr/lib64/libreoffice"
Compilation
Création du paquet
On peut enfin créer nos paquets :cd ~/loolwsd/online/ dpkg-buildpackage -us -uc -j4 [lots of output] dpkg-buildpackage: info: full upload (original source is included)Les paquets créés sont disponibles dans loolwsd.
Installation de LibreOffice Online
Sur le serveur cible, il ne reste plus qu'à installer le paquet loolwsd_4.0.8-2_amd64.deb créé précédemment et les paquets de libpoco suivants :- libpococrypto60
- libpocodata60
- libpocoencodings
- libpocofoundatio
- libpocojson60
- libpoconet60
- libpoconetssl60
- libpocoutil60
- libpocoxml60
- libpocozip60
libpoco pour Debian Stretch
La libpoco pour Debian Stretch ne contient pas le support json pour des raisons de licence, ce qui a été corrigé dans Debian Buster.Il faut donc recompiler libpoco si on souhaite utiliser Debian Stretch :
mkdir ~/libpoco cd ~/libpoco/ apt-get source libpoco-dev git clone --recursive --depth 1 --branch poco-1.7.6-release https://github.com/pocoproject/poco.git tar -cJf poco_1.7.6-lool.orig.tar.xz poco/ cp -a poco-1.7.6+dfsg1/debian poco/ cd poco/ git checkout -b debian dh_clean git add debian/ git commit -m "Initial debian folder from Stretch source package"Comme précédemment, on va modifier les fichiers contenus dans le répertoire debian.
debian/changelog
On rajoute un petit paragraphe pour expliquer nos modifications :poco (1.7.6-lool-1) stable; urgency=medium * A custom build of 1.7.6 including non-DFSG JSON libraries for LibreOffice Online -- Nicolas SulekLe numéro de version doit être supérieur au numéro d'origine de Debian pour être sûr d'installer notre version.Sat, 16 Feb 2019 21:58:15 +0100
debian/control
Il faut rajouter le paquet libpocojson46 qui n'existe pas dans Debian et que nous allons créer.Package: libpocojson46 Architecture: any Depends: libpocofoundation46 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: C++ Portable Components (POCO) JSON library The POCO C++ Libraries are a collection of open source C++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++. The libraries integrate perfectly with the C++ Standard Library and fill many of the functional gaps left open by it. . POCO is built strictly using standard ANSI/ISO C++, including the standard library. The contributors attempt to find a good balance between using advanced C++ features and keeping the classes comprehensible and the code clean, consistent and easy to maintain. . This package provides the POCO JSON library.
debian/rules
Ici, on supprime l'exclusion du composant JSON en remplaçant la directive CONFFLAGS par :CONFFLAGS = --prefix=/usr --no-samples --no-tests --unbundled --everything --odbc-lib=/usr/lib/$(DEB_HOST_MULTIARCH)/
debian/patches
Maintenant, il faut supprimer les patchs Debian désactivant JSON :rm debian/patches/0006-Disable-JSON-targets-in-Makefiles.patchPuis dans debian/patches/series, supprimer la ligne :
0006-Disable-JSON-targets-in-Makefiles.patch
debian/source.lintian-overrides
On supprime le fichier source.lintian-overrides qui n'est plus nécessaire :rm debian/source.lintian-overrides
debian/libpocojson46.install
On crée le fichier d'installation des biblioéthèques du paquet libpocojson46 debian/libpocojson46.install :usr/lib/libPocoJSON.so.*
Création des paquets libpoco
+Il ne reste plus qu'à compiler pour créer notre nouveau paquet :dpkg-buildpackage -us -uc -j4 [lots of output] dpkg-buildpackage: info: full upload (original source is included)On peut supprimer les paquets de debug et installer tous les autres paquets sur le serveur cible :
cd .. rm *-dbgsym_*.deb dpkg -i *.deb