39. Office Programs
This chapter is a collection of programs that are useful for viewing or editing office documents. Some specialise in doing one thing (such as word processing or manipulating a spreadsheet). LibreOffice is a suite of programs that can manipulate many different formats including powerpoint presentations.
39.1 AbiWord-3.0.5
Introduction to AbiWord
AbiWord is a word processor which is useful for writing reports, letters and other formatted documents.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://www.abisource.com/downloads/abiword/3.0.5/source/abiword-3.0.5.tar.gz
-
Download MD5 sum: a8f218b711450e4ccae43a0522e0e806
-
Download size: 11 MB
-
Estimated disk space required: 690 MB, with docs (76 MB installed)
-
Estimated build time: 2.4 SBU (Using parallelism=4, with docs)
Additional Downloads
-
AbiWord Docs: https://www.abisource.com/downloads/abiword/3.0.2/source/abiword-docs-3.0.2.tar.gz
-
AbiWord Docs MD5 sum: c92c0e1e2081db20757231a53d80c338
-
AbiWord Docs size: 1.5 MB
AbiWord Dependencies
Required
Boost-1.81.0, cURL-7.88.1, FriBidi-1.0.12, GOffice-0.10.55, and wv-1.2.9
Recommended
Optional
dbus-glib-0.112, evolution-data-server-3.46.4, gobject-introspection-1.74.0, libchamplain-0.12.21, libgcrypt-1.10.1, libical-3.0.16, libsoup-2.74.3, Redland-1.0.17, telepathy-glib-0.24.2, Valgrind-3.20.0. Aiksaurus, GtkMathView, libwmf, libwpd, libwpg, libwps, Link Grammar Parser, Loudmouth, OTS, and Psiconv
Note
To enable many of the optional dependencies, review the information from ./configure –help for the necessary switches you must pass to the configure script.
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/abiword
Installation of AbiWord
Install AbiWord by running the following commands:
sed -e "s/free_suggestions/free_string_list/" \
-e "s/_to_personal//" \
-e "s/in_session/added/" \
-i src/af/xap/xp/enchant_checker.cpp &&
./configure --prefix=/usr &&
make
This program does not come with a functional test suite.
Now, as the root user:
make install
Note
In order to install the local help files, a graphics session is recommended.
If you wish to install the local help files, untar and build them first:
Note
The current version of the docs expands to abiword-docs-3.0.1 and not the expected abiword-docs-3.0.2.
tar -xf ../abiword-docs-3.0.2.tar.gz &&
cd abiword-docs-3.0.1 &&
./configure --prefix=/usr &&
make
and then, as the root user:
make install
Command Explanations
sed …: This command corrects the source for changes in the dependency enchant-2.3.3.
--enable-plugins="collab openxml goffice grammar": Build some or all plugins. The openxml plugin enables Abiword to open some .docx files. The grammar plugin requires Link Grammar Parser
Configuring AbiWord
Config File
~/.AbiSuite/templates/normal.awt
Configuration Information
Choose the right template for your language and locale from the list produced by the following command:
ls /usr/share/abiword-3.0/templates
Create the folder ~/.AbiSuite/templates then copy the normal.awt you want into it:
install -v -m750 -d ~/.AbiSuite/templates &&
install -v -m640 /usr/share/abiword-3.0/templates/normal.awt-<lang> \
~/.AbiSuite/templates/normal.awt
Change <lang> by the above command to fit the name of the file you want.
If you are using multiple languages, you may need to edit the template to use a font with greater coverage (e.g. one of the Dejavu fonts, because Abiword does not use fontconfig and can only display glyphs that are provided in the chosen font.
If you have desktop-file-utils-0.26 installed, you should run the update-desktop-database command to update the mimeinfo cache and allow the Help system to work.
If you have xdg-utils-1.1.3 installed, you should run the xdg-icon-resource forceupdate –theme hicolor command, for the installed icon to be displayed in the menu item.
Contents
Installed Program: abiword
Installed Library: libabiword-3.0.so
Installed Directories: /usr/include/abiword-3.0, /usr/lib/abiword-3.0, and /usr/share/abiword-3.0
Short Descriptions
abiword is the word processor, a wrapper for the functions in libabiword-3.0 - it can also be used on the command line, see man 1 abiword.
libabiword-3.0.so provides functions to access MS Word documents.
39.2 Gnumeric-1.12.55
Introduction to Gnumeric
The Gnumeric package contains a spreadsheet program which is useful for mathematical analysis.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://download.gnome.org/sources/gnumeric/1.12/gnumeric-1.12.55.tar.xz
-
Download (FTP): ftp://ftp.acc.umu.se/pub/gnome/sources/gnumeric/1.12/gnumeric-1.12.55.tar.xz
-
Download MD5 sum: 76ab216b25c48b4f5fbf05f73e1ca7d9
-
Download size: 17 MB
-
Estimated disk space required: 243 MB (add 4 MB for tests)
-
Estimated build time: 0.7 SBU (Using parallelism=4; add 3.6 SBU for tests)
Gnumeric Dependencies
Required
GOffice-0.10.55 and itstool-2.0.7
Recommended Runtime
an icon theme such as adwaita-icon-theme-43, oxygen-icons5-5.103.0, or gnome-icon-theme-3.12.0, a graphical environment, and Yelp-42.2 for the built-in help functionality
Optional
DConf-0.40.0 (to prevent some test failures), gobject-introspection-1.74.0, PyGObject-3.42.2, Valgrind-3.20.0 (for some tests), dblatex (for PDF docs), libgda, Mono, pxlib, and Psiconv
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gnumeric
Installation of Gnumeric
Install Gnumeric by running the following commands:
./configure --prefix=/usr &&
make
This package must be installed before the test suite is run.
Now, as the root user:
make install
To run the tests, issue make check. Tests should be run from an active X session, and DConf-0.40.0 should be installed to prevent some failures. Three tests are known to fail related to valgrind.
Command Explanations
--enable-pdfdocs: Use this switch if you have installed dblatex and wish to create PDF docs.
Contents
Installed Programs: gnumeric (symlink), gnumeric-1.12.55, ssconvert, ssdiff, ssgrep, and ssindex
Installed Libraries: libspreadsheet.so
Installed Directories: /usr/include/libspreadsheet-1.12, /usr/lib/gnumeric, /usr/lib/goffice/0.10/plugins/gnumeric, /usr/share/gnumeric, and /usr/share/help/{C,cs,de,es}/gnumeric
Short Descriptions
gnumeric is a symlink to gnumeric-1.12.55.
gnumeric-1.12.55 is GNOME’s spreadsheet application.
ssconvert is a command line utility to convert spreadsheet files between various spreadsheet file formats.
ssdiff is a command line utility to compare two spreadsheets.
ssgrep is a command line utility to search spreadsheets for strings.
ssindex is a command line utility to generate index data for spreadsheet files.
libspreadsheet.so contains the gnumeric API functions.
39.3 LibreOffice-7.5.0
Introduction to LibreOffice
LibreOffice is a full-featured office suite. It is largely compatible with Microsoft Office and is descended from OpenOffice.org.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Core Download: https://download.documentfoundation.org/libreoffice/src/7.5.0/libreoffice-7.5.0.3.tar.xz
-
Core Download MD5 sum: 3e7066685b3e786af93ec581ca377496
-
Core Download size: 254 MB
-
Estimated disk space required: 7.1 GB including the additional files if downloaded during the build (748 MB installed). Installing the whole set of languages requires more than 25 GB (around 3 GB installed)
-
Estimated build time: 48 SBU with parallelism=4 (will vary due to download time)
Additional Downloads
Note
Around 80 smallish tarballs and zip files will be downloaded during the build. The download time will vary with the local internet speed and server load. The download time is about 3 mn on a fiber connection, probably not much more than 10 mn on an ADSL connection. If you have not downloaded one or more of the following, they too will also be downloaded during the build.
-
Dictionaries: https://download.documentfoundation.org/libreoffice/src/7.5.0/libreoffice-dictionaries-7.5.0.3.tar.xz
-
Dictionaries MD5 sum: 92eb0d4314f80097bcc9c42cd209c4b7
-
Dictionaries size: 50 MB
-
Help Files: https://download.documentfoundation.org/libreoffice/src/7.5.0/libreoffice-help-7.5.0.3.tar.xz
-
Help Files MD5 sum: 0a9ecec80eedd5c01c7b92281f4e4f1a
-
Help Files size: 159 MB
-
Translations: https://download.documentfoundation.org/libreoffice/src/7.5.0/libreoffice-translations-7.5.0.3.tar.xz
-
Translations MD5 sum: 52cf1d0f987e4a5dd559dd45ac23fb91
-
Translations size: 195 MB
LibreOffice Dependencies
Required
Archive-Zip-1.68, UnZip-6.0, Wget-1.21.3, Which-2.21, and Zip-3.0
Recommended
Note
Most of these packages are recommended because if they’re not installed, the build process will compile and install its own (often older) version, with the side effect of increasing build and installed disk space and build time.
apache-ant-1.10.13, Boost-1.81.0, CLucene-2.3.3.4, Cups-2.4.2, cURL-7.88.1, dbus-glib-0.112, libepoxy-1.5.10, libjpeg-turbo-2.1.5.1, LLVM-15.0.7 (clang is preferred for rendering with skia), GLM-0.9.9.8, GLU-9.0.2, GPGME-1.18.0, Graphite2-1.3.14, gst-plugins-base-1.22.0, GTK+-3.24.36, HarfBuzz-7.0.0, ICU-72.1, libatomic_ops-7.6.14, Little CMS-2.14, librsvg-2.54.5, libtiff-4.5.0, libwebp-1.3.0, libxml2-2.10.3 and libxslt-1.1.37, lxml-4.9.2, Mesa-22.3.5, nss-3.88.1, OpenLDAP-2.6.4 (if connecting to an LDAP server), Poppler-23.02.0, PostgreSQL-15.2, Redland-1.0.17, and unixODBC-2.3.11
Optional
Avahi-0.8, BlueZ-5.66, DConf-0.40.0, desktop-file-utils-0.26, Doxygen-1.9.6 (not relevant if using –disable-odk), evolution-data-server-3.46.4, GDB-13.1, GnuTLS-3.8.0, KDE Frameworks-5.103.0, libpaper-1.1.24+nmu5, MariaDB-10.6.12 or MySQL, MIT Kerberos V5-1.20.1, NASM-2.16.01, SANE-1.0.32, telepathy-glib-0.24.2, Valgrind-3.20.0, VLC-3.0.18, Apache Commons Codec, Apache Commons HttpClient, Apache Commons Lang, Apache Commons Logging, BeanShell, box2d, CoinMP, Cppunit, Firebird, glyphy, Gnome VFS, hamcrest, Hunspell, Hyphen, iwyu, junit4, libabw, libcdr, libcmis, libebook, libepubgen, libetonyek, libexttextcat, libfreehand, liblangtag, libmspub, libmwaw, libnumbertext, libodfgen, libpagemaker, libqrcodegen, libqxp, librevenge (WordPerfect Document importer), libstaroffice, libvisio, libwpd, libwpg, libwps, libzmf, lp_solve, mdds, MyThes, odfvalidator, officeotron, OpenCOLLADA, Orcus, SystemTap, and VIGRA
There are many optional dependencies not listed here. They can be found in “download.lst” (source directory).
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libreoffice
Installation of LibreOffice
Important
Unlike the other packages, we assume that you have not yet unpacked the package. This is because the --no-overwrite-dir switch is needed in case you unpack as the root user.
tar -xf libreoffice-7.5.0.3.tar.xz --no-overwrite-dir &&
cd libreoffice-7.5.0.3
If you have downloaded the dictionaries, help and translations tarballs, create symlinks to them from the source directory so they won’t get downloaded again:
install -dm755 external/tarballs &&
ln -sv ../../../libreoffice-dictionaries-7.5.0.3.tar.xz external/tarballs/ &&
ln -sv ../../../libreoffice-help-7.5.0.3.tar.xz external/tarballs/ &&
ln -sv ../../../libreoffice-translations-7.5.0.3.tar.xz external/tarballs/
The instructions in the package unpack some tarballs into a location it cannot find later. Create some symlinks to help out:
ln -sv src/libreoffice-help-7.5.0.3/helpcontent2/ &&
ln -sv src/libreoffice-dictionaries-7.5.0.3/dictionaries/ &&
ln -sv src/libreoffice-translations-7.5.0.3/translations/
Note
During the build process, some packages will be downloaded (including the ones listed as recommended and optional dependencies) if they are not present on the system. Because of this, build time may vary from the published time more than usual.
Due to the large size of the package, you may prefer to install it in /opt, instead of /usr. Depending on your choice, replace <PREFIX> by /usr or by /opt/libreoffice-7.5.0.3:
export LO_PREFIX=<PREFIX>
Locales “fr” and “en-GB”, you will find below, are just examples; you should change them to suit your needs - you might want to read the “Command Explanations”, further below, before proceeding.
Note
If you set the ACLOCAL environment variable to support installing Xorg in /opt, you will need to unset it for this package.
If building on a 32 bit machine, CFLAGS is set to -Os, which breaks the build. Prevent this by issuing:
case $(uname -m) in
i?86) sed /-Os/d -i solenv/gbuild/platform/LINUX_INTEL_GCC.mk ;;
esac
The latest version of GPGME breaks configure due to a library change. Fix it by setting the following variable:
export ac_cv_lib_gpgmepp_progress_callback=yes
Prepare LibreOffice for compilation by running the following commands:
sed -e "/gzip -f/d" \
-e "s|.1.gz|.1|g" \
-i bin/distro-install-desktop-integration &&
sed -e "/distro-install-file-lists/d" -i Makefile.in &&
./autogen.sh --prefix=$LO_PREFIX \
--sysconfdir=/etc \
--with-vendor=BLFS \
--with-lang='fr en-GB' \
--with-help \
--with-myspell-dicts \
--without-junit \
--without-system-dicts \
--disable-dconf \
--disable-odk \
--enable-release-build=yes \
--enable-python=system \
--with-jdk-home=/opt/jdk \
--with-system-boost \
--with-system-clucene \
--with-system-curl \
--with-system-epoxy \
--with-system-expat \
--with-system-glm \
--with-system-gpgmepp \
--with-system-graphite \
--with-system-harfbuzz \
--with-system-icu \
--with-system-jpeg \
--with-system-lcms2 \
--with-system-libatomic_ops \
--with-system-libpng \
--with-system-libxml \
--with-system-nss \
--with-system-odbc \
--with-system-openldap \
--with-system-openssl \
--with-system-poppler \
--with-system-postgresql \
--with-system-redland \
--with-system-libtiff \
--with-system-libwebp \
--with-system-zlib
Build the package:
make build
Now, as the root user:
make distro-pack-install
If installed in /opt/libreoffice-7.5.0.3 some additional steps are necessary. Issue the following commands as the root user:
if [ "$LO_PREFIX" != "/usr" ]; then
# This symlink is necessary for the desktop menu entries
ln -svf $LO_PREFIX/lib/libreoffice/program/soffice /usr/bin/libreoffice &&
# Set up a generic location independent of version number
ln -sfv libreoffice-7.5.0.3 /opt/libreoffice
# Icons
mkdir -vp /usr/share/pixmaps
for i in $LO_PREFIX/share/icons/hicolor/32x32/apps/*; do
ln -svf $i /usr/share/pixmaps
done &&
# Desktop menu entries
for i in $LO_PREFIX/lib/libreoffice/share/xdg/*; do
ln -svf $i /usr/share/applications/libreoffice-$(basename $i)
done &&
# Man pages
for i in $LO_PREFIX/share/man/man1/*; do
ln -svf $i /usr/share/man/man1/
done
unset i
fi
If you have installed desktop-file-utils-0.26, and you wish to update the MIME database, issue, as the root user:
update-desktop-database
The suite and main modules can be started from the menu. From a terminal, the suite can be started with the libreoffice command and the modules with the libreoffice –<module> command, respectively, where <module> is one of base, calc, draw, impress, math, web, or writer. Modules cannot be started using their shell starting script names (see “Installed Programs”, below), if LO_PREFIX is other than /usr, unless the $LO_PREFIX/bin directory is appended to the PATH.
Command Explanations
sed -e …: The first sed prevents compression of the manual pages and the second one prevents the install from failing.
--with-vendor=BLFS: This switch sets BLFS as the vendor which is mentioned when you click “About” from the Help menu on the toolbar.
--with-lang='fr en-GB': This switch sets what languages to support. To list several languages, separate them with a space. For all languages, use --with-lang=ALL. Note that the translations file is not needed and won’t be downloaded if using only en-US as a language.
Note
For a list of the available languages, look in solenv/inc/langlist.mk.
--with-help: Without this switch, the help files are not built.
--with-jdk-home=/opt/jdk: This parameter will silence a warning that the configure script attempted to find JAVA_HOME automatically (even though that is passed in the environment). Omit this if you disabled java.
--with-myspell-dicts: This switch adds myspell dictionaries to the LibreOffice installation set.
--with-system-boost: This switch enables using system boost. From time to time, recent versions of boost break the build of libreoffice. In this case, it is possible to use the bundled copy of boost by removing this flag.
--disable-dconf: This switch disables compiling LibreOffice with the GNOME DConf configuration system support.
--without-junit: This switch disables the tests for the deprecated HSQLDB driver which is written in Java.
--without-system-dicts: This switch disables the use of dictionaries from system paths so that the ones installed by this package are used.
--disable-odk: This switch disables installing the office development kit. Remove if you want to develop a LibreOffice based application.
--enable-release-build=yes: This switch enables a Release Build. LibreOffice can be built as a Release Build or as a Developer Build, because their default installation paths and user profile paths are different. Developer Build displays the words “Dev” and “Beta” in several places (e.g, menu and splash screen).
--enable-python=system: This switch tells LibreOffice to use the system installed Python 3 instead of the bundled one.
--with-system-*: These switches prevent LibreOffice from trying to compile its own versions of these dependencies. If you’ve not installed some of the dependencies, remove the corresponding switches.
make distro-pack-install: This does a normal install, but if you add a DESTDIR environment variable it will also install a lot of (text) gid_Module_* files in the DESTDIR, to help distributions which want to break the package into parts.
--with-parallelism=<count>: This switch tells LibreOffice to use
--disable-cups: Use this switch if you don’t need printing support.
--disable-dbus: Use this switch if you’ve not installed D-Bus-1.8.0 or later. It also disables Bluetooth support and font install via PackageKit.
--disable-firebird-sdbc: By default, the ability to connect to a firebird database is enabled. Add this switch if you do not need that feature.
--disable-gstreamer-1-0: Use this switch if you have not installed gst-plugins-base-1.22.0.
--disable-postgresql-sdbc: This switch disables compiling LibreOffice with the ability to connect to a PostgreSQL database. Use it if you have not installed PostgreSQL and you do not want LibreOffice to compile its bundled copy.
--disable-skia: Use Cairo-1.17.6 for rendering instead of skia.
--enable-gtk3-kde5: This switch allows the Visual Class Library, which is responsible for widgets, to be built with KF5 file dialogs if GTK+-3, Qt5 and Plasma are all available.
--enable-lto: This switch will enable Link Time Optimization, which results in slightly smaller libraries (about 40 MB). This is said to make LibreOffice programs load faster (and possibly run faster, e.g. when recalculating a spreadsheet). On an 8-core machine with 16GB of memory, the difference in compile times was minimal, but an extra 2GB was used for the work files. On machines with fewer processors or a lack of memory, the compile might be much slower.
--without-java: This switch disables Java support in LibreOffice. Java is needed for the deprecated HSQLDB driver, which allows reading databases created by other programs or in earlier versions of libreoffice base.
--without-fonts: LibreOffice includes a number of third-party TrueType fonts. If you have already installed some or all of the same fonts, you may prefer to use the system versions.
--enable-kf5: Builds with KDE/Plasma integration. If Qt-5.15.8 and/or KDE Frameworks-5.103.0 are not installed in /usr, the include and library directories must be specified in QT5INC, QT5LIB, KF5INC, and KF5LIB, respectively.
--enable-evolution2: Enables support for Evolution address books through Evolution Data Server. Note that Evolution Data Server must be installed for this feature to function.
Contents
Installed Programs: libreoffice, lobase, localc, lodraw, loffice, lofromtemplate, loimpress, lomath, loweb, lowriter, soffice and unopkg; several programs under $LO_PREFIX/lib/libreoffice/program
Installed Libraries: several libraries under $LO_PREFIX/lib/libreoffice/program
Installed Directory: $LO_PREFIX/lib/libreoffice
Short Descriptions
libreoffice (or soffice) is the main libreofice suite (symlink to $LO_PREFIX/lib/libreoffice/program/soffice).
lobase is the database manager module shell starting script.
localc is the spreadsheet module shell starting script.
lodraw is the vector graphics editor and diagramming tool module shell starting script.
loimpress is the (PowerPoint) presentations editor and displayer module shell starting script.
lomath is the mathematical formula editor module shell starting script.
loweb is the HTML editor module shell starting script.
lowriter is the word processor module shell starting script.
unopkg is a tool to manage LibreOffice extensions from the command line.