背景说明:
arm架构的操作系统上有很多软件包没有做适配,比如libreoffice,依赖很多,如果想要从yum源里面安装,版本太低,不满足环境要求,这里介绍从源码编译生成rpm包的方法。
安装编译所需依赖包:
dnf install epel-release
dnf install cups cups-devel gperf gperf-devel java-11-openjdk libxslt libxslt-devel libICE-devel libSM-devel libXt-devel gtk3-devel gstreamer* fontconfig-devel gtk2 gtk2-devel gtk2-devel-docs gtk3 gtk3-devel
准备编译所需源码包:
wget https://ftp.kaist.ac.kr/tdf/libreoffice/src/7.5.0/libreoffice-7.5.0.1.tar.xz
wget https://ftp.kaist.ac.kr/tdf/libreoffice/src/7.5.0/libreoffice-translations-7.5.0.1.tar.xz
xz -d libreoffice-7.5.0.1.tar.xz
xz -d libreoffice-translations-7.5.0.1.tar.xz
tar -xf libreoffice-7.5.0.1.tar
tar -xf libreoffice-translations-7.5.0.1.tar
编写配置编译选项输入文件:
在源代码目录下建立 autogen.input 文件, 在执行autogen.sh会自动加载input文件,内容如下
#安装路径
--prefix=/opt/libreoffice
#禁用帮助
--without-help
--without-helppack-integration
#启用简体中文用户界面
--with-lang=zh-CN
#在线更新及崩溃报告功能禁用
--disable-online-update--disable-breakpad
#禁用与JUnit有关的测试
--without-junit
#启用libreoffice内置的字体
--with-fonts
#禁用Office Development Kit。若启用ODK,则额外需要doxygen依赖项。
--disable-odk--without-doxygen
#若编译好之后您需要rpm (或deb)包,则需要启用下列两项,默认不启用:
--enable-epm
--with-package-format=rpm
#编译之间共享external_tarballs第三方源代码包,为加快编译速度,可以预先在国内镜像下载(https://go.suokunlong.cn:88/dl/libreoffice/external_tarballs/)。
#设置--with-external-tar选项指定第三方源代码包路径:
--with-external-tar=
#禁用自带java
--without-java
#需要用到firebird数据库则要启用,默认不启用
--enable-firebird-sdbc
--without-system-firebird
--enable-python=internal
开始编译:
autogen.sh && make && make install
tips:
编译大概需要1个小时左右,取决于机器的cpu性能。
在执行autogen.sh时,会提示缺少包,可按提示安装。
一定要配置JAVA_HOME环境变量,不然编译无法通过
用非root用户编译,或修改Makefile文件不检测用户权限
编译过程中也碰到过很多,但基本都是缺少包,值得记录的是国产化操作系统,编译无法识别其版本报错:
file libreoffice-7-1/workdir/UnpackedTarball/python3/LO_lib/_sysconfigdata__linux_aarch64-unknown-linux-gnu.py does not exist in the tarball
解决办法把其文件改名即可。
参考资料: