• openEuler 22.03 LTS编译安装libreoffice并制作rpm包——筑梦之路


    环境说明

    操作系统:华为欧拉操作系统openEuler 22.03 lts  x86_64

    libreoffice版本:当前最新版本7.6

    编译安装过程

    1. 安装编译工具和依赖包

    sudo yum install -y snappy snappy-devel autoconf automake libtool git gcc gcc-c++ gcc-objc++ make cmake openssl openssl-devel zlib zlib-devel bzip2 bzip2-devel bzip2-libs readline readline-devel bison zip unzip tar tcl java-1.8.0* bison* ncurses* wget libyaml libyaml-devel python-setuptools libcurl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libpcap-dev* cups-devel fontconfig pkg-config fontconfig-devel gperf libxslt libxslt-devel gtk2 gtk2-devel libICE libICE-devel libSM libSM-devel gtk3 gtk3-devel dbus-glib dbus-glib-devel gstreamer* perl* nss-devel nspr-devel libatomic_ops libatomic_ops-devel fakeroot  rpm-build  flex

    2. 获取源码

    1. wget -c http://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-7.6.2.1.tar.xz
    2. wget -c http://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-translations-7.6.2.1.tar.xz

    3. 解压源码

    1. tar xf libreoffice-7.6.2.1.tar.xz
    2. tar xf libreoffice-translations-7.6.2.1.tar.xz

    4. 创建输入文件autogen.input

    1. # 切换目录
    2. cd libreoffice-7.6.2.1
    3. # 创建文件
    4. vim autogen.input
    1. # 指定安装路径,不指定情况下默认安装在/usr/local/lib/libreoffice/路径下:
    2. --prefix=/opt/libreoffice-7.6
    3. # 一般直接在线浏览帮助文档,因此将帮助禁用:
    4. --without-help
    5. --without-helppack-integration
    6. # 启用简体及繁体中文用户界面:
    7. --with-lang=zh-CN zh-TW
    8. # 禁用在线更新及崩溃报告功能:
    9. --disable-online-update
    10. --disable-breakpad
    11. # 禁用Office Development Kit。若启用 ODK,则额外需要doxygen依赖项:
    12. --disable-odk
    13. --without-doxygen
    14. # 若编译好之后需要rpm (或deb)包,则需要启用下列两项:
    15. --enable-epm
    16. --with-package-format=rpm
    17. # 若需要在多个不同版本的编译之间共享external_tarballs第三方源代码包或系统无法联网情况下,则可设置下列选项(根据实际路径设置):
    18. # --with-external-tar=
    19. --with-external-tar=/home/libreoffice-external-tar
    20. # 现在很多功能已用不到java,可将其禁用:
    21. --without-java
    22. # 需要用到firebird数据库情况,启用如下三项:
    23. --enable-firebird-sdbc
    24. --without-system-firebird
    25. --enable-python=internal

    5. 修改Makefile.in文件使用root账号编译权限

    1. vim Makefile.in

    1)、将“.PHONY : ”开头行中的“check-of-root”字符串删除(不同版本对应字符串不完全相同,只需删除“check-of-root”字符串,其他不变)

    2)将“bootstrap: ”开头行中的“check-of-root”字符串删除

    6. 编译

    make

    编译过程会根据download.lst文件中的内容下载依赖包保存到/home/libreoffice-external-tar目录下 

    此步骤耗时比较长,耐心等待完成,若有报错,请根据报错内容处理解决。 

    7. 安装

    make  install

    8. 检查验证

    1. # 查看文件目录
    2. ls /opt/libreoffice-7.6/lib/libreoffice/
    3. ls /opt/libreoffice-7.6/lib/libreoffice/program/
    4. # 查看版本和帮助信息
    5. /opt/libreoffice-7.6/lib/libreoffice/program/soffice --version
    6. /opt/libreoffice-7.6/lib/libreoffice/program/soffice -h
    7. # 查看编译后sdk的二进制文件
    8. ls instdir/sdk/
    9. ls instdir/sdk/bin/
    10. ls instdir/sdk/lib/
    11. # 查看编译后的rpm包
    12. ls workdir/installation/LibreOfficeDev/rpm/install/LibreOfficeDev_7.6.2.1_Linux_x86_64_rpm/RPMS/
    13. ls workdir/installation/LibreOfficeDev_languagepack/rpm/install/LibreOfficeDev_7.6.2.1_Linux_x86_64_rpm_langpack_zh-CN/RPMS/

     

    9. rpm包在其他环境中安装

    1. rpm -ivh *.rpm --nodeps
    2. # 可能会缺少依赖,可以根据报错信息安装相应的依赖包

    10. 启动服务测试验证

    1. # 启动服务
    2. soffice --headless --accept="socket,host=0.0.0.0,port=8100;urp;" --nofirststartwizard
    3. # 测试转换
    4. # word 转换成 pdf
    5. soffice --invisible --convert-to pdf xxx.docx;
    6. # word 转换成 epub
    7. soffice --invisible --convert-to epub xxx.docx;
    8. # word 转换成 html
    9. soffice --invisible --convert-to "html:XHTML Writer File:UTF8" xxx.docx;
    10. # word 转换成 txt
    11. soffice --invisible --convert-to "txt:Text (encoded):UTF8" xxx.docx;
    12. # html转换为pdf
    13. soffice --headless --convert-to pdf xxx.html --outdir /home/xxx.pdf

    中文字体的问题参考:centos安装中文字体_centos 安装中文字体_天空飞鸟可见的博客-CSDN博客 

    在x86架构下编译比较顺利,基本上很少报错。在arm环境下编译安装可能存在以下报错:

    FAQ

     1、执行make编译时报messages.po文件missing错误

    【详细描述】:执行make编译时报messages.po文件missing,具体报错如下:

    missing /home/libreoffice-7.6.2.1/translstions/source/zh-CN/oox/messages.po

    missing /home/libreoffice-7.6.2.1/translstions/source/zh-CN/oox/messages.po

    make[1]: *** No rule to make target '/home/libreoffice-7.6.2.1/translstions/source/zh-CN/readlicense_oo/docs.po', needed by '/home/libreoffice-7.6.2.1/workdir/CustomTarget/readlicense_oo/readme/readme.xrm'. Stop.

    解决办法:

    这步是缺少包,下载translstions源码包和libreoffice的源码放在同一个路径下,解压即可。

    2. 执行make编译时报/_sysconfigdata__linux_aarch64-unknown-linux-gnu.py does not exist in the tarball错误

    【详细描述】:执行make编译时报/_sysconfigdata__linux_aarch64-unknown-linux-gnu.py does not exist in the tarball错误,具体报错如下:

    /home/libreoffice-7.6.2.1/external/python3/ExternalPackage_python3.mk:48: *** file /home/libreoffice-7.6.2.1/workdir/UnpackedTarball/python3/LO_lib/_sysconfigdata__linux_aarch64-unknown-linux-gnu.py does not exist in the tarball.  Stop.

    make[1]: *** Waiting for unfinished jobs....

    make: *** [Makefile:282: build] Error 2

    解决办法:

    1) 执行find . -name "*sysconfigdata*"查找sysconfigdata相关文件

    find . -name "*sysconfigdata*"

    ./workdir/UnpackedTarball/python3/build/lib.linux-aarch64-3.8/__pycache__/_sysconfigdata__linux_aarch64-linux-gnu.cpython-38.pyc

    ./workdir/UnpackedTarball/python3/build/lib.linux-aarch64-3.8/_sysconfigdata__linux_aarch64-linux-gnu.py

    2) 拷贝_sysconfigdata__linux_aarch64-linux-gnu.py为_sysconfigdata__linux_aarch64-unknown-linux-gnu.py(需要的文件为_sysconfigdata__linux_aarch64-unknown-linux-gnu.py,实际文件_sysconfigdata__linux_aarch64-linux-gnu.py,即aarch64和linux中间缺少-unknown字段,跟configure.guess判断逻辑有关)

    cp ./workdir/UnpackedTarball/python3/build/lib.linux-aarch64-3.8/_sysconfigdata__linux_aarch64-linux-gnu.py ./workdir/UnpackedTarball/python3/build/lib.linux-aarch64-3.8/_sysconfigdata__linux_aarch64-unknown-linux-gnu.py

    欢迎各路大佬批评指正!!!

    参考资料:

  • 相关阅读:
    高效线性氮化镓射频功放芯片模组研究
    判断是否在swoole环境下
    Spring:怨种的我和这玩意死磕到半夜12点20的这件事?
    算法通关村第三关|白银|双指针妙用【持续更新】
    Spring Session中存放于Redis中的PRINCIPAL_NAME_INDEX_NAME没有设置过期时间
    有谁会易位构词c++代码啊,可以直接运行的或者需要添加完词典库就可以直接运行的
    PL/SQL 事务
    在实际的项目需求中了解技术架构的演进
    十七、redux
    基础选择器汇总——标签选择器,类选择器、id选择器、通配符选择器
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/134050250