libreoffice24.2--arm环境源码编译--构建RPM包
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 #离线环境,可以先下载依赖包,再拷贝后安装 #其中procps net-tools telnet分别对应容器里的ps、netstat、telnet命令,可不安装 dnf -y install libXinerama dbus-devel nss-devel cairo cups libX11-devel gtk3-devel procps net-tools telnet --downloadonly --downloaddir=/tmp/dependents_package
8、至此就拿到了离线环境使用的所有依赖包,包括:LibreOfficeDev_24.2.5.2_Linux_aarch64_rpm.tar.gz和dependents_package.tar.gz
9、还需要一个字体文件:simsun.ttf,搜一下自行下载吧。
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 COPY simsun.ttf /usr/share/fonts/chinese/ 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
10、根据dockerfile构建镜像