1、下载源代码地址:https://zh-cn.libreoffice.org/download/libreoffice/
2、构建环境,使用docker容器,在容器内编译,使用的基础镜像是:fedora:latest,
使用过centos9和centos10,centos9 gcc版本不够;centos10安装fakeroot包有问题,无法构建rpm包。
3、在解压后的libreoffice-24.2.5.2目录下创建一个编译参数文件:autogen.input,内容如下
#安装路径--prefix=/opt/libreoffice24.2#禁用帮助--without-help--without-helppack-integration#启用简体中文用户界面--with-lang=zh-CN#禁用与JUnit有关的测试--without-junit#启用libreoffice内置的字体--with-fonts#若编译好之后您需要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
4、安装编译需要的依赖
dnf -y install perl automake autoconf which fakeroot cups-devel fontconfig fontconfig-devel gperf rpm-build libxslt libxslt-devel nss nspr nss-devel nspr-devel libICE-devel libSM-devel libXrandr-devel libX11-devel bison flex gtk3 gtk3-devel glib2 glib2-devel cairo-devel atk-devel gstreamer1 gstreamer1-plugins-base gstreamer1-devel gstreamer1-plugins-base-devel
5、开始编译打包
./autogen.sh && make && make install
6、编译完成后rpm包在这个目录下:libreoffice-24.2.5.2/workdir/installation/LibreOfficeDev/rpm/install
LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm.tar.gz可直接迁移使用
7、经验证,用fedora:latest新启动一个容器后,安装LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm.tar.gz后,libreoffice仍无法工作,需要安装依赖包
dnf -y install libXinerama dbus-devel nss-devel cairo cups libX11-devel gtk3-devel#离线环境,可以先下载依赖包,再拷贝后安装 dnf -y install libXinerama dbus-devel nss-devel cairo cups libX11-devel gtk3-devel --downloadonly --downloaddir=/tmp/dependents_package
8、至此就拿到了离线环境使用的所有依赖包,包括:LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm.tar.gz和dependents_package.tar.gz
9、编写Dockerfiile,制作libreoffice的arm版本镜像
FROM fedora ADD LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm.tar.gz /tmp ADD dependents_package.tar.gz /tmp/LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm/RPMS RUN rpm -ivh /tmp/LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm/RPMS/*.rpm ENV PATH=/opt/libreofficedev24.2/program:$PATH CMD ["/bin/bash","-c","soffice --headless --accept='socket,host=0.0.0.0,port=8100;urp;' --nofirststartwizard"] EXPOSE 8100