RevyOS上的工程软件生态观测 (3): 预编译包:英雄不问出处,好包不问来路,这我拾的

大家好,我是 PLCT 丁丑小队的一名实习生。这是我们工程软件测试系列帖的第三篇,接续总集篇源内软件篇。本期我们来聊聊那些 RevyOS 源里暂时没有,但我们可以从其他地方找到预编译包直接使用的软件。

这种方式确实很方便,省去了编译的麻烦。但帖主必须在这里提醒一句:直接安装来自其他发行版(比如 Ubuntu)的 .deb 包可能会因为依赖库版本不兼容而破坏您的系统环境,请谨慎操作! 我们这次的测试方法是解压 .deb 包然后手动运行其中的二进制文件,这是一种相对“绿色”和安全的方式。

1. SagCAD - 简单好用的 2D CAD/CAM

SagCAD 是一款轻量级的 2D CAD/CAM 软件。虽然 RevyOS 源里没有,但我们发现 Ubuntu 的源里有为 riscv64 架构构建的包。于是我们决定当一次“拾荒者”。

操作步骤:

首先,我们下载这个 .deb 包,但不是dpkg -i 来安装它。

# 创建一个干净的目录来存放它
mkdir sagcad; cd sagcad

# 从 Ubuntu 的仓库下载 .deb 文件
wget http://launchpadlibrarian.net/722730855/sagcad_0.9.14-0ubuntu6_riscv64.deb

# 使用 dpkg-deb 解压,而不是安装
dpkg-deb -x sagcad_0.9.14-0ubuntu6_riscv64.deb .

解压后,我们就能在当前目录下的 ./usr/bin/ 找到可执行文件 sagcad。直接运行它:

./usr/bin/sagcad

令人惊喜的是,它在 Milk-V Pioneer 上完美运行。

详细的测试报告可以看这里:SagCAD 测试报告

2. Impact - 跨平台的 Java FEA 程序

Impact 是一款用 Java 编写的显式动态有限元程序。Java 的跨平台特性在这里就体现出优势了——只要有对应的 Java 运行环境 (JRE/JDK),理论上就可以直接运行编译好的 .jar 包。

操作步骤:

首先,确保系统里有 Java 环境。RevyOS 源里就有,直接安装即可:

sudo apt install openjdk-17-jdk

然后,从 Impact 的官网下载预编译的 zip 包并解压:

# 下载并重命名
wget https://master.dl.sourceforge.net/project/impact/impact/Version%200.7.06.042/Impact-0.7.06.042.zip?viasf=1 -O Impact.zip
unzip Impact.zip
cd Impact

# 赋予启动脚本执行权限
chmod +x ./Impact.sh

之后,我们就可以用它自带的启动脚本来运行一个示例了:

./Impact.sh examples/cylinder.in

程序成功启动并开始计算,日志输出正常。

debian@revyos-lpi4a:~/Impact$ ./Impact.sh examples/cylinder.in

=========== Welcome to Impact ==========
= Impact is free software and licensed =
= under GPL. Please note that it comes =
= with no warranties whatsoever.       =
=                                      =
= Report any bugs at our webpage:      =
= http://impact.sourceforge.net        =
=============== ENJOY!!!! ==============


*******************************
*** Solver has been invoked ***
*******************************


Running on 4 clients


Processing file: examples/cylinder.in
*** Initializing ***
Found 1392 elements
Found 1 trackers
Found 1 materials
Found 723 nodes
Found 2 constraints
Found 0 loads
Found 2 controls
Found 0 groups
Reading Constraints
Constraint block found!
Filled constraintlist
Reading Loads
Filled loadlist
Reading Nodes
10.0% complete
20.0% complete
30.0% complete
40.0% complete
50.0% complete
60.0% complete
70.0% complete
80.0% complete
90.0% complete
Filled nodelist
Reading Materials
Block found!
Filled materiallist
Reading Elements
Element block found!
10.0% complete
20.0% complete
30.0% complete
40.0% complete
50.0% complete
60.0% complete
70.0% complete
80.0% complete
90.0% complete
Element block found!
Filled elementlist
Reading Trackers
Tracker block found!
Filled trackerlist
Reading Controls
Filled controlset
*** Assembling the Mass Matrix ***
Assembling Elements
Assembling Nodes
Assembling Constraints
ase.dir/matrix_free.cc.o
*** Setting Initial Conditions ***
Initializing nodes
Sorting nodes
Setting up node neighbour handles
Determining optimal model distribution for nodes
Initializing elements
Assigning each element to a CPU
Initializing trackers
Initializing constraints
Determining smallest timestep size
Determined timestep: 4.8293633530785456E-4
Calculating total model mass
Total model mass = 0.24444260770968435
*** Initiating Solver ***
Distributing the model on 4 CPU:s
CPU 0 Nodes: 181        Elements: 338
CPU 1 Nodes: 181        Elements: 362
CPU 2 Nodes: 181        Elements: 362
CPU 3 Nodes: 180        Elements: 330


Time: 0.0       Remaining time (hh:mm:ss) 00:00:39
......

详细的测试报告可以看这里:Impact 测试报告

总结

通过这两个例子,我们可以看到,即使软件没有被 RevyOS 官方打包,我们依然有机会通过社区或其他渠道找到可用的预编译版本。对于 Java 程序来说,这种方式尤其方便。而对于原生二进制程序,采用“只解包不安装”的策略,可以在享受便利的同时,最大程度地避免污染系统环境。

下一期,我们提到一些“需自行构建或魔改”的软件,从那些相对容易编译的软件开始。敬请期待!

欢迎各位复现/吐槽丁丑小队的所有测试结果。
如果有对我们的测试方法/结果有任何建议/问题,欢迎直接在 GitHub 开 issue,或者在论坛 @ 我们、回帖询问。

4 个赞










2 个赞

兔斯基老师太高产了 :+1:

2 个赞

好包不问来路.jpg

虽然但是,一般情况下确实是不要跨发行版装 deb,真的可能会炸依赖关系

不 要 作 死

3 个赞

:+1: 我深有体会,经常作死把系统弄奔溃。

其实应该鼓励作死,未知世界都是无名炮灰作死去探索的,只限于自己作死,不鼓动无知者去干。 :joy:

1 个赞

是这样的,至少要清楚自己在干什么吧。

Linux 给了自由,但不能自由过了火 :slight_smile:

2 个赞