在 Slackware 15 上安装 LibreOffice

Installing LibreOffice On Slackware 15

Slackware 一直是我最喜欢的 GNU/Linux 发行版之一,尤其是自从很久以前的 8.0 版本发布以来。原因是它体现了设计发行版的“KISS”方法。“KISS”意味着“保持简单,傻瓜化!”,而这正是 Slackware 团队自发行版诞生以来所做的事情。当 Slackware 15.0 于 2022 年 2 月发布时,我和其他“Slackware 用户”一样庆祝,并且自 2021 年初以来,我就一直在运行 beta 版和候选发布版(当时的“Slackware-current”)。

我甚至在“微软商店”的工作中使用过 Slackware。是的,这是可以做到的,而且可以做得很好。为了做到这一点,我需要一些与 Microsoft Office 文件格式兼容的东西。即使在 Beta Build 638c 时代(是的,我已经使用它很长时间了!),OpenOffice.org 也是当时的票证,而这种传统一直延续至今,21 年后的今天仍然是 LibreOffice。正是这个办公效率套件真正使在通用商业计算机上使用自由软件平台(例如 GNU/Linux、BSD)成为可能。

遗憾的是,Slackware 当时没有包含 OpenOffice.org,现在也没有包含 LibreOffice。这只是我个人的推测,但几年前,Patrick Volkerding 停止包含 GNOME,因为它对于一个没有 Red Hat、Debian 或 Ubuntu 资源的开源项目来说,打包和分发太麻烦了。我怀疑 LibreOffice 也可能是这种情况。此外,LibreOffice 的二进制包采用 RPM 和 DEB 格式。LibreOffice 开发人员的这种选择是可以理解的,因为基于 Red Hat 和 Debian 的发行版在个人电脑上占据绝对主导地位。但这仍然让我们“Slackware 用户”感到冷落。

我意识到现在有“Slackbuilds”,类似于 BSD 的“Packages”集合,维护这些软件包的人们绝对值得感谢和赞赏(我也确实如此)。但现实情况是,考虑到时间限制,这些软件包并不总是更新到应用程序的最新版本。请记住,Slackware 是一个相对较小的完全由志愿者组成的开源项目,就像 OpenBSD 一样。而且,我更喜欢尽可能保持最新。

那么,该怎么办呢?

幸运的是,有一种方法可以在我们的 Slackware 15.0 计算机上安装功能齐全、最新最好的 LibreOffice 并使用它。最棒的是,这并不难做到……至少,现在您有了这份方便的操作指南文档可以遵循。

这里假设您已经“完整”安装了 Slackware 15.0。如果不是,我强烈建议您重新进行安装过程并安装您没有安装的所有内容。甚至 Patrick Volkerding 多年来也一直推荐“完整”安装。我还必须假设您对 UNIX 风格的命令行相当熟悉。如果不是,您仍然有可能做到这一点,因为我们将逐步引导您完成整个过程,但熟悉 UNIX 肯定会有所帮助。

这里还假设您正在运行 64 位 Slackware。这是因为自 2019 年以来(6.2.8 版本是最后一个 32 位版本),GNU/Linux 版 LibreOffice 已经发布为 64 位二进制文件。在这个例子中,我使用的是基于 AMD Ryzen 的系统。

话虽如此,让我们开始吧。我们确实正在运行 64 位 Slackware 15.0,如下所示。

bash-5.1$ more /etc/slackware-version

Slackware 15.0

bash-5.1$ uname -a

Linux slackbox01.cmosnetworks.com 5.15.27 #1 SMP PREEMPT Tue Mar 8 18:18:11 CST 2022 x86_64 AMD Ryzen 3 3200G with Radeon Vega Graphics AuthenticAMD GNU/Linux

首先,访问 www.libreoffice.org 并下载最新版本的 LibreOffice。在撰写本文时,最新版本是 7.3.2,这也是我们在此处使用的版本。我强烈建议您使用 RPM 版本,因为 Slackware 包含 rpm2tgz 应用程序。当 alien 应用程序仍然为 Slackware 完全维护时,我也曾经使用 DEB 版本,但现在似乎不再是这种情况了,所以我们现在坚持使用 RPM 版本。

我的下载文件是“LibreOffice_7.3.2_Linux_x86-64_rpm.tar.gz”。

接下来,解压您的 gzipped TAR 压缩包。

bash-5.1$ tar -xvzf LibreOffice_7.3.2_Linux_x86-64_rpm.tar.gz

现在,切换到软件包(在本例中为 RPM)所在的目录。

bash-5.1$ cd LibreOffice_7.3.2.2_Linux_x86-64_rpm/

bash-5.1$ ls -l

total 20

drwxr-xr-x 2 microman microman 4096 Mar 23 15:28 RPMS

-rwxr-xr-x 1 microman microman 10497 Mar 23 15:28 install

drwxr-xr-x 2 microman microman 4096 Mar 23 15:28 readmes

bash-5.1$ cd RPMS

bash-5.1$ ls -l

(您将看到一堆 RPM 文件)

同样,由于 Slackware 不使用 Red Hat RPM,而是使用其自己的原生 Slackpackages 格式(顺便说一句,Slackpackages 早于 RPM 和 DEB),我们必须将 RPM 转换为 Slackpackage 格式。幸运的是,Slackware 包含一个可以做到这一点的工具。它叫做 rpm2tgz。以下是使用一个简短的 shell 脚本进行转换的最简单方法。

for file in *.rpm

do

rpm2tgz -nd $file

done

请注意,我们在 rpm2tgz 命令中使用了两个命令选项。它们是 -n-d。以下是它们的作用。

-n 使用 RPM 自身的元数据命名输出软件包(新的 .tgz)。LibreOffice 维护人员作为优秀的网络公民,像大多数以这种方式打包软件的主要人员一样,都包含了这些元数据。

-d 从 RPM 自身的元数据创建“slack-desc”字段。同样,LibreOffice 维护人员方便地包含了对其软件包的有用描述。真是好人。

一旦完成,我们现在应该为每个 RPM 都有一个对应的 .tgz 文件。让我们继续安装这些新的 Slackware 软件包。

以下是我发现的最简单的方法。同样,这是一个简短的 shell 脚本。

for file in *.tgz

do

installpkg $file

done

这个过程对我来说没有任何错误地完成了,并且我在两个全新的 Slackware 15.0 “完整”安装上都做了两次。它应该对您也一样有效。此时,您应该退出 X11 并重新启动它以刷新内容。如果您不这样做,当您启动任何 LibreOffice 应用程序时,可能会出现屏幕损坏(这实际上发生在我身上)。重新启动 X11 可以刷新内容并防止将来发生这种情况。如果您忘记先重新启动 X11 并且屏幕损坏确实发生了,只需按 Ctrl-Alt-Backspace 杀死 X11,然后重新启动它(旧的“startx”命令)。没有危害。

但是……

虽然 LibreOffice Writer、Calc 和 Math 可以毫无问题地启动……但您会去启动 LibreOffice Impress,并且想知道为什么它没有出现!您还会去启动 Draw,并看到一个错误。这是怎么回事?

根据 Document Foundation 错误 ID #119408,从 6.0.x 开始的 LibreOffice 版本存在一个已知问题。从 6.0 及更高版本的 LibreOffice 似乎需要机器上安装 Avahi 软件才能使 Impress 和 Draw 工作。如果 Avahi 不存在,Impress 将只是停在那里永远挂起,无法启动。Draw 至少会给出一个错误消息,如下所示。

Component cannot be loaded, possibly broken or incomplete installation.

Full error message:

loading component library <file:///opt/libreoffice7.3/program/../program/libsdlo.so> failed /home/buildslave/source/libo-core/cppuhelper/source/shlib.cxx:311.

嗯,这不太好,不是吗?根据错误 ID,显然我们需要安装 Avahi 才能使一切正常工作。

这是错误报告。

https://bugs.documentfoundation.org/show_bug.cgi?id=119408

那么,这个 Avahi 是什么?它是一个服务发现应用程序,它使用 mDNS/DNS-SD 协议套件。它是为便携式计算机用户能够轻松发现局域网上共享的东西而设计的。Apple 称之为“Bonjour”,其他人称之为“Zeroconf”。都是一样的东西。无论如何,我们必须安装它才能使 Draw 和 Impress 工作。

Avahi 可以从 www.avahi.org 下载。目前的最新版本是 0.8。按照 Slackware 的优良传统,我们将下载源代码 tarball 并编译它。

事实证明 Avahi 本身有一个依赖项,特别是 libdaemon,所以我们也必须下载并安装 libdaemon。libdaemon 源代码 tarball 可以在这里找到。

http://0pointer.de/lennart/projects/libdaemon/

libdaemon 的当前版本是 0.14。您像这样以正常方式解压 tar.gz 文件。

bash-5.1$ tar -xvzf libdaemon-0.14.tar.gz

进入 libdaemon-0.14(或任何当前版本)子目录,由于它使用 GNU autoconf 和 automake,我们只需执行传统的例程

./configure

make

sudo make install

现在 libdaemon 已经安装好了。请注意,默认情况下,libdaemon 安装到 /usr/local/lib 中,这是从源代码编译库时的传统目标位置。有一个 PKG_CONFIG_PATH 环境变量指向我们在编译软件时需要的库。它包括 /usr/local/lib64/pkgconfig,但不包括 /usr/local/lib/pkgconfig。Avahi 在编译时需要它。所以,让我们像这样包含它。

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

现在让我们处理 Avahi 的安装。我们将回到 avahi-0.8 子目录,并执行基本上相同的三步 GNU autoconf/automake 流程……但有一个重要的调整。我们需要抛出一些命令开关,因为默认情况下,Avahi 会为 Slackware 不使用的某些东西编译。这些东西是 Mono、SystemD 和 GDBM。这符合“Slackware 方式”,即尽可能保持 GNU/Linux 发行版的清洁。此外,由于 Slackware 的 KDE 是基于 Qt5 的,因此也没有必要为早已过时的 Qt3 或 Qt4 编译。

所以,这是我们 Avahi 的三步流程。

./configure --disable-mono --disable-monodoc --with-distro=none --disable-qt3 --disable-qt4 --disable-gdbm

make

sudo make install

最后一件事。与 libdaemon 一样,Avahi 也默认安装到传统的 /usr/local/lib 中。LibreOffice Draw 和 Impress 现在需要在运行时知道在哪里找到它,而且,该子目录不在动态链接搜索路径中。没问题,这也是一个简单的修复。我们只需要(以 root 用户身份)编辑文件 /etc/ld.so.conf,将 /usr/local/lib 包含在该搜索路径中。我通常使用 vim,但您可以使用 emacs、elvis、nano 甚至 cat。完成后,该文件应如下所示。

bash-5.1$ more /etc/ld.so.conf

include /etc/ld.so.conf.d/*.conf

/lib64

/usr/lib64

/usr/local/lib64

/usr/x86_64-slackware-linux/lib64

/usr/local/lib

最后一行是我们添加的。

现在(再次以 root 用户身份),我们运行 ldconfig 来应用我们刚刚所做的更改。我喜欢使用 verbose 开关运行 ldconfig,只是因为我有点偏执,并且想看看发生了什么。

bash-5.1$ sudo ldconfig -v

这应该表明 /usr/local/lib 现在包含在动态链接路径中。

好的,现在 avahi 和 libdaemon 都已安装,并且动态链接已更新,所有这些都应该使 LibreOffice Draw 和 Impress 更加愉快。在我的系统上,我从菜单启动了 LibreOffice,并且我也从命令行(以我的普通非 root 用户身份)尝试了它,在所有情况下,它都运行良好。

等等……我说过“从命令行启动它”吗?是的,我说过!这是怎么做到的?

以下是如何启动 Draw。

/opt/libreoffice7.3/program/soffice --draw

对于 Impress,我们这样做。

/opt/libreoffice7.3/program/soffice --impress

您可以使用 --writer、--calc、--base 和 --math 开关执行相同的操作。

现在,这是可选部分,如果您想使用 LibreOffice Base。事实证明,Base 应用程序需要某种 Java 运行时环境 (JRE)。请记住,这仅在您想使用 LibreOffice 进行数据库操作时才需要,就像人们使用 Microsoft Access 所做的那样。幸运的是,这也相当容易。我们只需下载最新的 OpenJDK,它是自由软件(GNU GPLv2 许可证)并安装它,如下所示。

访问 https://jdk.java.net/ 并下载最新的“Ready for use”版本。在撰写本文时,最新版本是 18。将其下载到您的计算机并解压 tar.gz 文件。它是整个 Java 开发工具包,其中包括 JRE。这是一件好事!

bash-5.1$ tar -xvzf openjdk-18_linux-x64_bin.tar.gz

这将为您提供一个名为 jdk-18 的子目录。将该子目录移动到 /opt 子目录,如下所示。

bash-5.1$ mv jdk-18/ /opt

还要确保将整个子目录的所有权更改为 root:root

bash-51$ chown -Rv root:root /opt/jdk-18/

现在,我们告诉 LibreOffice JDK(包括我们需要的 JRE)在哪里。启动 LibreOffice 并转到 工具 -> 选项 -> 高级。有一个“使用 Java 运行时环境”的复选框。确保已选中它。然后,单击“添加”按钮并导航到 /opt/jdk-18 子目录,然后单击“确定”按钮。您应该看到 Oracle Corporation 和版本(在本例中为 18)出现。是的,这是 GPL 许可的版本,所以不用担心。

这样,LibreOffice Base 现在也可以工作了。

祝您使用 Slackware 愉快,并记住感谢 Patrick Volkerding 和他的团队开发出如此酷炫、干净、最符合 UNIX 风格的 GNU/Linux 发行版之一。

我还要感谢 Linux From Scratch (LFS) 团队和 ClearLinux 团队提供的以下文档,这些文档帮助我弄清楚如何为 Slackware 正确编译 Avahi。

https://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

https://github.com/clearlinux/distribution/issues/714#issuecomment-492064527

 

加载 Disqus 评论