欧拉操作系统下离线安装字体的操作步骤

背景

某 Web 应用部署到欧拉操作系统后,应用中导出的 PDF 文件中文全部显示乱码,原因是字体缺失,但是目标系统上并没有联网,必须找到字体的离线安装包。

CSDN 上还有40个积分,下载了两个相关的资源后,目标系统上安装的时候,报错了 Fontconfig warning: "/etc/fonts/fonts.conf", line 86: unknown element “blank",安装出错了,积分也没了,咋搞哦?

本文记录这个问题的解决过程,顺便吐槽一下高的离谱的下载积分。

依赖包

下载积分还有点,下载了一个可用的包,主要有 6 个文件:

  1. fontconfig-2.10.95-11.amzn2.0.2.x86_64.rpm
  2. fontpackages-filesystem-1.44-8.amzn2.noarch.rpm
  3. libXfont-1.5.4-1.el7.x86_64.rpm
  4. libfontenc-1.1.3-3.amzn2.0.2.x86_64.rpm
  5. stix-fonts-1.1.0-5.amzn2.noarch.rpm
  6. xorg-x11-font-utils-7.5-20.amzn2.0.2.x86_64.rpm

找一个没有字体的 CentOS 系统测试没问题,但是到目标欧拉系统执行安装命令后,执行 fc-list :lang=zh ,报错 Fontconfig warning: "/etc/fonts/fonts.conf", line 86: unknown element “blank"

这个错误怎么产生的呢?正常系统中这个 etc/fonts/fonts.conf 到 86 行确实就是 blank 元素的。搜到一篇文章,感觉有点用,就截了一下屏幕:
在这里插入图片描述
分析第一个命令是更新包,后面重新安装这几个包,Xvfb 这个跟字体没关系,感觉要解决这个问题,思路应该是找最新的包,重新安装。

下载最新包

网上找最新的字体包估计是不好找了,还是从在线安装入手,测试机器都是可以联网的,重新执行这 6 个包的安装命令,并用 downloadonly 工具下载到某目录下。

downloadonly 这个命令在已经安装的情况下不会有任何动作的,所以要下载 6 个包的最新版本,需要逐个执行下面的步骤:

  1. yum install yum-plugin-downloadonly
  2. yum list |grep xxx 逐个删除这些依赖包
  3. yum install --downloadonly --downloaddir=/root/rpm libXfont
  4. yum install --downloadonly --downloaddir=/root/rpm mkfontscale
  5. yum install --downloadonly --downloaddir=/root/rpm fontconfig
  6. yum install --downloadonly --downloaddir=/root/rpm libfontenc
  7. yum install --downloadonly --downloaddir=/root/rpm stix-fonts.noarch
  8. yum install --downloadonly --downloaddir=/root/rpm fontpackages-filesystem

得到最新的字体安装包,然后准备好一个包含字体文件的文件夹 fonts,放到当前目录下。编写安装脚本:

#!/sh
basePath=$(cd `dirname $0`; pwd)
cd $basePathmv fonts /usr/share
echo "start install font basePath $basePath"rpm -ivh ./*.rpm --nodeps --forcecd /usr/share/fonts
mkfontscale
fc-list :lang=zh

重新安装

进入目标目录下,执行 sh install.sh 完成字体的安装操作,最新版本在欧拉系统下也能正确安装。CSDN 的下载积分高的越来越离谱了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI 董事会宫斗始作俑者?一窥伊尔亚·苏茨克维内心世界

OpenAI 董事会闹剧应该是暂告一个段落了,Sam Altman和Greg Brockman等一众高管均已加入微软,还有员工写联名信逼宫董事会的戏码,关注度已经降下来了。 但是,这场宫斗闹剧的中心人物Ilya Sutskever大家关注度不算太高。他本人是纯粹的技术男,极少抛头露面透露其内心世界。…

FISCO BCOS 3.0【01】搭建第一个区块链网络

官方技术文档:https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/index.html 我们在官方技术文档的基础上,进行,对文档中一些不清楚的地方进行修正 搭建Air版本FISCO BCOS联盟链本节以搭建单群组FISCO BCOS链为例操作,使用开发部署工具build_chain.sh脚本在本地搭建一条…

Java中的抽象类和接口

目录 1. 抽象类 1.1 抽象类概念 1.2 抽象类语法 1.3 抽象类需要注意的点 1.4 抽象类的作用 2. 接口 2.1 接口的概念 2.2 语法规则 2.3 接口使用 2.4 接口特性 2.5 实现多个接口 2.6 接口间的继承 2.7 接口使用实例 2.8 Clonable接口,浅拷贝和深拷贝 2.9 抽…

算法分析与设计课后练习23

求下面的0-1背包问题 (1)N5,M12,(p1,p2,…,p5)(10,15,6,8,4),(w1,w2,…,w5)(4,6,3,4,2) (2)N5,M15,(p1,p2,…,p5)(w1,w2,…,w5)(4,4,5,8,9)

Keka v1.3.5(mac压缩解压工具)

Keka是一款功能强大的文件压缩和解压缩软件,为Mac系统用户提供便捷、高效的文件管理工具。以下是Keka的主要特点和功能: 多种压缩格式支持:Keka支持多种常见的压缩格式,包括ZIP、7Z、RAR、TAR、GZIP等。它能够方便地创建和提取这些…

react antd下拉选择框选项内容换行

下拉框选项字太多,默认样式是超出就省略号,需求要换行全展示,选完在选择框里还是要省略的 .less: .aaaDropdown {:global {.ant-select-dropdown-menu-item {white-space: pre-line !important;word-break: break-all !important;}} } html…

mongodb——原理简介,docker单机部署

MongoDB noSQL数据库 特点 数据文件存储格式为 BSON (JSON 的扩展) {“name”:“joe”}这是 BSON 的例子,其中"name"是键,"joe"是值。键值对组成了 BSON 格式。面向集合…

ROS2中Executors对比和优化

目录 SingleThreadExecutorEventExecutor SingleThreadExecutor 执行流程 EventExecutor 通信图

Linux学习第43天:Linux 多点电容触摸屏实验:难忘记第一次牵你手的温存

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 人都是性情中人,如果把学习当做自己的女朋友,对她细致入微、掏心掏肺、有耐心有恒心,终会修成正果。 而我们本节需要学习的电…

(swjtu西南交大)数据库实验(概念数据库设计及逻辑关系转换):音乐软件数据管理系统

一、实体型及属性 (20分) 用户(账号,用户名,密码,性别,生日,地区,手机号,个性签名,信息修改审核客服) 歌手(歌手号&#…

C++模拟实现——红黑树封装set和map

一、红黑树迭代器的实现 基本的框架和实现链表的迭代器思路是一样的,都是对指针进行封装处理,然后实现一些基本的运算符重载,最重要的是operator,需要不递归的实现走中序的规则,这里只实现那最核心的几个基本功能&…

第一次参加算法比赛是什么感受?

大家好,我是怒码少年小码。 冬日暖阳,好日常在。今天中午在食堂干饭的时候,我的手机📱收到了一条收货信息。 阿?什么玩意儿?我又买啥了? 个败家玩意,我都准备好叨叨我自己&#x…

msvcp120.dll缺失的解决方法与作用介绍

大家好!我是小编。今天,我想和大家分享一下关于“找不到msvcp120.dll无法继续执行代码的5个解决方法”的话题。 首先,让我们来了解一下msvcp120.dll的作用。msvcp120.dll是Microsoft Visual C Redistributable Package的一部分,它…

高防CDN如何预防攻击?

现在网络攻击事件越来越多,而且愈发凶猛,为了保障互联网业务能稳定正常的运行,市场上出现了很多高防产品,例如高防服务器、高防IP、高防CDN等等。其中究竟高防CDN怎么防攻击,能防哪些攻击?高防CDN如何实现防…

matlab-BP神经网络的训练参数大全

本文部分图文来自《老饼讲解-BP神经网络》bp.bbbdata.com 本文列兴趣MATLAB神经网络工具箱中,训练参数trainParam的各个参数与意义 以方便在使用matlab工具箱时,用于查阅 一、matlab神经网络工具箱trainParam的参数列表 trainParam中的各个具体参数如下…

4.2 Windows驱动开发:内核中进程线程与模块

内核进程线程和模块是操作系统内核中非常重要的概念。它们是操作系统的核心部分,用于管理系统资源和处理系统请求。在驱动安全开发中,理解内核进程线程和模块的概念对于编写安全的内核驱动程序至关重要。 内核进程是在操作系统内核中运行的程序。每个进…

对象分配规则

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

函数有返回类型,但函数体未返回类型,程序崩溃问题记录

问题 使用类指针调用函数时&#xff0c;程序崩溃。 问题定位&#xff1a; name new nameSetting;name->setName("helloworld");qDebug().noquote() << name->getName();原因 class nameSetting { public:nameSetting();QString setName(const QStri…

GB28181视频监控国标平台EasyGBS如何进行服务迁移?

视频流媒体安防监控国标GB28181平台EasyGBS视频能力丰富&#xff0c;部署灵活&#xff0c;既能作为业务平台使用&#xff0c;也能作为安防监控视频能力层被业务管理平台调用。国标GB28181视频EasyGBS平台可提供流媒体接入、处理、转发等服务&#xff0c;支持内网、公网的安防视…

golang学习笔记——接口和继承比较1

继承 Go 语言的设计之初&#xff0c;就不打算支持面向对象的编程特性&#xff0c;因此 Go 不支持面向对象的三大特性之一——继承。但是 Go 可以通过组合的思想去实现 “继承”。继承是面向对象的三大特性之一&#xff0c;继承是从已有的类中派生出新的类&#xff0c;新的类能…