开源改变世界

LaserWeb4 开发、Linux、宇宙和一切 #590

推推 grbl 3年前 (2023-02-04) 209次浏览
打开
janschiefer 打开了这个问题 2020 年 4 月 12 日 · 25条评论
打开

LaserWeb4 开发、Linux、宇宙和一切#590

janschiefer 打开了这个问题 2020 年 4 月 12 日 · 25条评论

评论

LaserWeb4 开发、Linux、宇宙和一切 #590
扬席费尔 评论了 2020 年 4 月 12 日  

LaserWeb4似乎已经放弃了对 Linux 的支持。对于许多用户来说,这是一个主要问题,因为 LaserWeb 是目前唯一适用于 GRBL 用户的“严肃”激光雕刻解决方案。

但是我无法真正理解这一点,因为我能够使用 2020 年 4 月 12 日的当前开发分支 dev-es6 在 Linux 上运行该程序而不会出现重大问题。

只需运行:
npm run installdev (安装所有依赖项)
npm start (编译并启动服务器+应用程序)

……你准备好了。

我唯一需要弄清楚的是如何从当前的开发分支构建一个合适的 AppImage 或 .deb ……

有什么意见或建议吗?

顺便说一句:我正在使用 Ubuntu Focal beta 预发布版。

LaserWeb4 开发、Linux、宇宙和一切 #590
成员

非常欢迎您贡献和关心 AppImage!不幸的是,大多数开发人员都离开了这个项目,我对 linux 了解不多。

LaserWeb4 开发、Linux、宇宙和一切 #590
作者

好啊,为什么不。

不幸的是,我对 AppImage 生态系统没有太多经验(而且我是一名应对 COVID-19 压力的医生)。然而,Linux 和 CNC 是我放松的爱好。

任何人都知道将 nodejs 应用程序打包到 .AppImage 或 .deb 中的“快速而肮脏”的好教程吗?

LaserWeb4 开发、Linux、宇宙和一切 #590
成员

您还应该检查https://github.com/LaserWeb/lw.comm-server,尤其是 package.json 中的脚本和 docker 文件。

LaserWeb4 开发、Linux、宇宙和一切 #590
数学迈克尔 评论了 2020 年 4 月 16 日  

我可以建议将它打包成 docker 镜像吗?可能比将其打包为 deb 容易得多。

LaserWeb4 开发、Linux、宇宙和一切 #590
作者
扬席费尔 评论了 2020 年 4 月 17 日  

尝试构建 AppImage。
我在并行目录中有 LaserWeb4 和 lw.comm-server。

(…)
使用 electron 2.0.18 打包 linux x64 到 dist/linux-unpacked
未处理的拒绝错误:退出代码:1。命令失败:gm convert -size 48×48 /tmp/electron-builder-N3DabI/0-2- linux.iconset/icon_128x128x32.png -resize 48×48 /tmp/electron-builder-N3DabI/0-2-linux.iconset/icon_48x48x32.png
gm 转换:无法打开文件(/tmp/electron-builder-N3DabI/0-2 -linux.iconset/icon_128x128x32.png) [找不到文件]。

gm 转换:无法打开文件 (/tmp/electron-builder-N3DabI/0-2-linux.iconset/icon_128x128x32.png) [找不到文件]。
(…)

我是否缺少带有图像/图标资源文件的 git 子模块或存储库…?

LaserWeb4 开发、Linux、宇宙和一切 #590
作者
扬席费尔 评论了 2020 年 4 月 17 日  

好的。
我已经为 Linux x64 和 Windows x64 创建了 LaserWeb4 的最新 git 版本的工作版本,并进行了一些修改:https ://drive.google.com/open?id=1oGcQKB0K32n3B7irCJjCIg7AIyqRk-hz

  • 我从 lw.comm-server 中的 package.json 中删除了对任何图标文件的所有引用,因此使用了默认的 electron-builder 图标。

  • 我从我的系统 libreadline.so 创建了一个符号链接到“libreadline.so.6”(这个版本不包含在 Ubuntu 20.04 Beta 中)。

您必须在浏览器中手动打开 127.0.0.1:8000 才能在此构建中打开 GUI。

LaserWeb4 开发、Linux、宇宙和一切 #590 mfadel85 提到了这个问题 2020 年 4 月 17 日
LaserWeb4 开发、Linux、宇宙和一切 #590
作者

在接下来的几天里,我将尝试为构建问题创建一个补丁。

如何提交补丁?

LaserWeb4 开发、Linux、宇宙和一切 #590

这能在树莓派上运行吗?是否可以对此进行测试?

LaserWeb4 开发、Linux、宇宙和一切 #590
成员
开胃菜 评论了 2020 年 4 月 21 日  

wiki 上有 rasperry pi 的安装指南!
https://github.com/LaserWeb/LaserWeb4/wiki/1.4-Installation-on-RaspberryPi

服务器部分(lw.comm-server)可以在树莓派上毫无问题地运行,但是网络前端需要大量内存并且应该在真实的电脑(linux,win,osx)上运行。

LaserWeb4 开发、Linux、宇宙和一切 #590

使用 Docker 怎么样?#595

LaserWeb4 开发、Linux、宇宙和一切 #590

谢谢丹尼尔,它在 Docker 上运行良好——也在树莓派上。

LaserWeb4 开发、Linux、宇宙和一切 #590
沉香 评论了 2020 年 11 月 29 日  

嗨,我在 Arch 上,docker 方式不起作用,因为它无法读取设备。我尝试使用 –privileged、指定开发人员和其他一些方式运行,但都没有用。我怀疑它在 Linux 上根本不起作用。

因此,我研究了其他方法并提出了一些解决方案。最后,我还构建了一些 Arch PKGBUILD(用于最新的标签和 git),可以自动构建 appimage 并将其集成到 Arch 环境中。

我注意到从 janschiefer 的拉取请求中获取了一些内容,但所有图标仍然丢失。也许应该重新检查拉力。

在我的 appimage 版本中,浏览器会与服务器控制台一起自动打开。有些情况关闭浏览器,服务器还在后台运行,无法关闭。所以,我发现让它可见更好。我更喜欢直接在 Linux 系统中集成 appimage 而不是依赖它的集成方法。

但是,也可以单独启动 appimage,尽管没有集成,但它会启动浏览器。我对 server.js 添加了一个小修改来实现这一点。

所以,这是我的笔记,也可以应用于其他 Linux 系统(也许可以将某些内容集成到文档中):

Arch 上的 LaserWeb4

  1. 安装 nvm
    yay -S nvm

  2. 初始化 nvm
    源 /usr/share/nvm/init-nvm.sh

  3. 安装 nodejs >= 10.15.1 和 < 11.x
    nvm install 11

  4. 使用 nodejs v11
    nvm 使用 11

  5. 克隆 LaserWeb4 repo
    cd /usr/src
    git clone https://github.com/LaserWeb/LaserWeb4.git
    cd LaserWeb4

  6. 安装所有依赖
    项 npm run installdev (安装所有依赖项)

  7. 编译并启动 server + app
    npm start

运行:仅运行服务器+应用程序
source /usr/share/nvm/init-nvm.sh
nvm use 11
npm run start-server

通过 electron-builder 创建 Appimage

https://github.com/LaserWeb/lw.comm-server/pull/80/files )

  1. 安装 electron
    pacman -S electron xorriso

  2. 在 LaserWeb4 附近克隆
    cd /usr/src
    git clone https://github.com/LaserWeb/LaserWeb4.git # 如果还没有完成
    git clone https://github.com/LaserWeb/lw.comm-server.git
    cd lw。通信服务器

  3. 在应用程序中复制丢失的应用程序图标

  4. 安装 electron-builder
    source /usr/share/nvm/init-nvm.sh
    nvm use 11
    npm install ncp
    npm install electron
    npm install electron-builder

  5. 服务器启动后添加自动打开浏览器
    echo -e “require(‘dns’).lookup(require(‘os’).hostname(), function (err, add, fam) {\n var start = (process.platform = = ‘darwin’? ‘open’: process.platform == ‘win32’? ‘start’: ‘xdg-open’);\n require(‘child_process’).exec(start + ‘http://&#8217; + add + ‘:’ + config.webPort);\n});\n” >> server.js

  6. 修复库
    ln -s /usr/lib/libreadline.so.8.0 /usr/lib/libreadline.so.6

  7. 构建 appimage(保存在 dist 中)
    npm run dist

运行:运行服务器+应用程序仅
源/usr/share/nvm/init-nvm.sh
nvm use 11
node server.js

工具

  • 杀死不是从控制台启动的 laserweb 服务器
    kill $(netstat -ltpn | grep -w ‘:8000’ | awk ‘{print $7}’ | cut -d/ -f1)

  • 要卸载 laserweb appimage
    find /home/$(whoami)/.local/share -type f -name ‘appimagekit-lw.comm-server*’ -delete

用于 Arch 的 PKGBUILD

laserweb4.tar.gz
laserweb4-git.tar.gz

LaserWeb4 开发、Linux、宇宙和一切 #590
贡献者

我刚刚创建了一个 pull request 来修复 dockerfile #647
合并后,我们可以在 dockerhub 上设置它,例如,即使在家庭实验室设置上,也可以通过卷链接轻松运行它(用于数据持久性)。如果您只关心 gcode 生成,您也可以在 linode / digitalocean 上的小型服务器实例上运行它……

包服务器确实有缺陷。似乎 node-gyp 无法访问系统端口并失败,即使具有 root 权限也是如此。

LaserWeb4 开发、Linux、宇宙和一切 #590
成员

@joesantosio 我合并了你的 pr #647
你能在 dockerhub 上设置它吗?我对码头工人一无所知;)

关于系统端口。这可能是由于缺少/不兼容的 libusb 和 libudev 造成的,因为@QuirkyCort写在第 648期?

LaserWeb4 开发、Linux、宇宙和一切 #590
贡献者

@cprezzi所以我在我的用户下创建了 docker 图像。我们可以为一个laserweb帐户更改它,但为此您需要创建 laserweb dockerhub 帐户,创建访问令牌并将其添加到存储库中的秘密中DOCKERHUB_TOKEN,用户名为DOCKERHUB_USERNAME。现在,我在我的分支上的分支上运行 CI,该分支prod旨在成为发布分支。

我设置了一个 PR 以README.md根据更改 ( #650 ) 进行修改。

有人测试过更高版本的节点吗?10 很低,应该提高。

LaserWeb4 开发、Linux、宇宙和一切 #590

现在我正在运行@easytarget具有较新 nodejs 版本的 fork 取得了很好的成功。我的理解是这是相当多的工作。想法是最终将 easytarget 版本拉回主 LaserWeb4。

@easytarget: 知道你什么时候发布你会发出拉取请求吗?

LaserWeb4 开发、Linux、宇宙和一切 #590
成员

当然,当@easytarget叉子准备好了,我们将把它拉到 LW。

LaserWeb4 开发、Linux、宇宙和一切 #590
贡献者

@cprezzi顺便说一句,我没有其他方式可以与您交流,我正在开始使用 Go 编写解耦 API。

LaserWeb4 开发、Linux、宇宙和一切 #590
成员
开胃菜 评论了 2022 年 10 月 4 日  

@cprezzi所以我在我的用户下创建了 docker 图像。我们可以为一个laserweb帐户更改它,但为此您需要创建 laserweb dockerhub 帐户,创建访问令牌并将其添加到存储库中的秘密中DOCKERHUB_TOKEN,用户名为DOCKERHUB_USERNAME。现在,我在我的分支上的分支上运行 CI,该分支prod旨在成为发布分支。

我设置了一个 PR 以README.md根据更改 ( #650 ) 进行修改。

有人测试过更高版本的节点吗?10 很低,应该提高。

@joesantosio 实际的服务器使用节点 12,它似乎也在使用节点 18(根据#648)。

LaserWeb4 开发、Linux、宇宙和一切 #590
成员
开胃菜 评论了 2022 年 10 月 4 日  

@joesantosio 为什么你认为我们需要一个 go 版本?
node js版的很通用,我支持不了go。

LaserWeb4 开发、Linux、宇宙和一切 #590
贡献者

首先,我不认为我们本身需要一个 Go 版本,也不需要将所有下一个咆哮作为一种意见,仅此而已。

在我看来,我们确实需要一个与前端完全分离的后端。为了实现这一点,沟通已经到位,这使得分离变得更容易、更灵活。您可以让前端随心所欲地运行,而后端甚至可以在较小的微控制器上运行(理论上)。解耦还意味着服务器不太依赖前端,反之亦然,这意味着您可以在任一堆栈上做出更好的更改,您可以为更多前端或更多后端分配人员,事情往往会发展得更快一些在那种环境下,因为模块化有助于理解开发思想。

因为,在我看来,这是一个很好的改变,所以这次最好“正确”地做(不是说它“坏”,只是说它可以“更好”。

架构是我认为可以改进的一件事。例如,一种类似于 DDD 的模式,用于更好地分离关注点和一般模块化。
语言是我认为可以改进的另一个主题。JavaScript 本质上是有缺陷的。它的动态能力也是语言的癌症之一。当开发错误更频繁地出现时,它特别会导致代码中的不安全性,并且您永远无法真正自信地声明您的代码有效。“node_modules”文件夹地狱和一般的依赖关系是其他癌症。有一百万个恐怖故事,我敢打赌你也有。
考虑到这一点,在我看来,这个位置有两个竞争者。打字稿和围棋。顺便说一下,我每天都和 2 一起工作。
两者都是编译型的(尽管 TypeScript 也可以是 JavaScript 的转译层),两者都具有类型,而且通常两者都有更好的开发体验。
TypeScript 作为 JavaScript 的超集,也继承了它的缺陷。依赖地狱,你可以规避安全性,如果用作转译层,它的动态特性可能无法在其他地方工作,或者即使编译可能会以某种方式对某些依赖项产生一些挑战,节点通常更难部署。
Go 是强类型的,编译成一个单一的二进制文件,不需要任何其他东西来运行,语言本身很容易理解和在 1 周内学习,不涉及魔法,它是一种更健壮的语言,它不需要 2gb 的内存来运行,100mb 就可以了,甚至更少,我更喜欢 Go C 绑定,包括一个测试框架,一个很好的标准库,可能包含你需要的大部分内容,Go 社区不做依赖包只是因为(没有像节点世界中那样的 3 行包,并且出于某种原因到处都在使用?!)和相当多的聪明人,易于编译,良好的工具……

我只是发现 Go 是一种更好的整体语言和后端方面的体验。
很抱歉解释很长。尽力了。

LaserWeb4 开发、Linux、宇宙和一切 #590
贡献者

综上所述,我只是停留在 Go 的想法上。我确实认为,在我看来,至少应该使用 TypeScript,但第一步可能是设置架构、解耦、模块化和单元测试,以便无论使用何种语言,它都能保持稳定。

LaserWeb4 开发、Linux、宇宙和一切 #590
成员
开胃菜 评论了 2022 年 10 月 4 日  

后端已经解耦。它只是可以选择嵌入 Web 前端并通过 http 提供服务。只有 socket.io 是(前端和后端)都需要的依赖项,其他一切都是独立的。

如果你想要一个纯后端,你可以只删除 http 服务器并删除 app 文件夹。

但我更喜欢为 LaserWeb 或任何其他前端选择嵌入式网站,因为用户不必安装任何前端应用程序而只需使用网络浏览器就非常方便。它还为我们提供了使用 electron 编译独立 exe(带有集成后端的前端)的选项。

我还想生成一个带有嵌入式通用“机器控制”或“gcode 发送器”前端(如 octo-pi)的版本。

后端非常简单。基本上是串行网关的套接字。我认为不需要在后端方面进行太多更改。好吧,它根本不是模块化的,但维护起来很快(至少对我而言 ;))。

我看到前端更需要维护和开发。@easytarget已经开始使用更新的依赖项和附加功能的新版本。我们需要讨论他的版本发布后的下一步。

LaserWeb4 开发、Linux、宇宙和一切 #590
贡献者

是的,我可以看到所有人都拥有相同包裹的优势。我认为仍然有一些方法可以保持两者解耦的一体式软件包。

好吧……它并不是真的那么容易维护 :p 但我理解你。我正在考虑就我如何看待这种工作方式提出一个简单的 PR 提议(首先放弃 Go 和语言更改),但由于其他人已经在处理经过审查的版本,因此从那里开始非常有意义。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

9人参加
LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590LaserWeb4 开发、Linux、宇宙和一切 #590

喜欢 (0)