开源改变世界

关于 LinuxCNC 构建系统的问题 #695

推推 grbl 3年前 (2023-01-29) 366次浏览
关闭
WasIstDasDingDa 开启了这个issue 2020 年 3 月 7 日 · 19条评论
关闭

关于 LinuxCNC 构建系统的问题#695

WasIstDasDingDa 开启了这个issue 2020 年 3 月 7 日 · 19条评论

注释

关于 LinuxCNC 构建系统的问题 #695

感谢 LinuxCNC 的开发。我在 OpenSUSE Leap 15.1 上构建了该软件,并了解了配置、制作和运行时缺少的依赖项。大多数要求可以通过分发包来满足。

只剩下一个小问题。与其他有关 ${PREFIX} 和 make install 的 Linux 软件相比,构建系统的行为有些不同寻常。
这当然不是真正的错误,它显然是 Debian 发行版的一个特性。

如何安装到例如 /usr/local?在解决方案之前,我必须在构建树的位置(在§HOME)运行 LinuxCNC,从长远来看,这有几个缺点。

linuxcnc_info.txt文件

关于 LinuxCNC 构建系统的问题 #695
合作者
安迪普 评论了 2020 年 3 月 7 日  

要编译到 /usr/local,您可以使用
./configure –prefix=/usr/local
请参阅 ./configure -h 了解更多选项。

但它的缺点是很难卸载。您可能更喜欢构建一个 debian 包(.deb 文件),然后以通常的方式安装它。

关于 LinuxCNC 构建系统的问题 #695

谢谢回复。如果真的那么简单,我就不会写了。
以下是调用和输出的最后几行,make install仅此而已。
的声明make install明确否定了 的承诺./configure。错误是什么?

 jr@LinuxCNC:~/Entwicklung/linuxcnc/src> ./configure --enable-non-distributable=yes --with-boost-python=boost_python27 --with-realtime=/usr/realtime --prefix=/usr/local
.
.
.
######################################################################
#                LinuxCNC - Enhanced Machine Controller              #
######################################################################
#                                                                    #
#   LinuxCNC is a software system for computer control of machine    #
#   tools such as milling machines. LinuxCNC is released under the   #
#   GPL.  Check out http://www.linuxcnc.org/ for more details.       #
#                                                                    #
#                                                                    #
#   It seems that ./configure completed successfully.                #
#   This means that RT is properly installed                         #
#   If things don't work check config.log for errors & warnings      #
#                                                                    #
#   warning: If you already have an installed linuxcnc, this will    #
#         replace an existing installation.  If you have installed   #
#         a linuxcnc package, this will damage the package.          #
#   hint: To test a self-built version of linuxcnc without damaging  #
#         the package version, don't specify a --prefix              #
#                                                                    #
#   Next compile by typing                                           #
#         make                                                       #
#   then install it by typing                                        #
#         sudo make install                                          #
#                                                                    #
#   To run the software type                                         #
#         linuxcnc                                                   #
#                                                                    #
######################################################################


jr@LinuxCNC:~/Entwicklung/linuxcnc/src> make
.
.
.
make[1]: Verzeichnis „/usr/src/linux-4.14.148“ wird verlassen
cp Module.symvers *.ko ../rtlib/


jr@LinuxCNC:~/Entwicklung/linuxcnc/src> sudo make install
[sudo] Passwort für root: 
'make install' is only supported for building packages,
and it doesn't look like that is what is going on because
you have not set DESTDIR.
make: *** [Makefile:560: install] Fehler 99

我从源代码编译了一些软件,但我从未遇到过这个词DESTDIR。作为测试,我将DESDIR所需安装目录的值设置为环境变量(如中所示--prefix=),但没有成功。

配置文件

PS 请原谅我的英语

关于 LinuxCNC 构建系统的问题 #695

与此同时,我简要介绍了分阶段安装 ( http://buildsystem-manual.sourceforge.net/Staged-Installs.html )。我认为这是一件非常好的事情,但是 GitHub 上的 linuxcnc 构建系统出了点问题(如果不是故意的话)。我想要一个 DESTDIR=$HOME/inst 以供参考。也许我可以自己解决问题,但我宁愿磨坊。

关于 LinuxCNC 构建系统的问题 #695
合作者
安迪普 评论了 2020 年 3 月 8 日 通过电子邮件
关于 LinuxCNC 构建系统的问题 #695

谢谢,我不认为 sudo make 会有帮助,我还是要试试。你在建造的时候不会走出你的房子:-) 回头见

关于 LinuxCNC 构建系统的问题 #695

我已经怀疑 LinuxCNC 构建系统的行为遵循主要开发人员的决定。基本上有两个选项,RIP 环境或通过 /usr 中的 Debian 软件包进行常规安装。严格来说,甚至有两个部分独立的构建系统。我研究了在虚拟机中构建 Debian 10.3 下的包的过程。对于构建,我按照http://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html中的说明进行操作,并获得了 6 个 Debian 文件,可以使用 gdebi 安装而不会出现错误。LinuxCNC 运行,只是延迟如预期的那样糟糕。
在 SUSE 的 /usr 分支中安装 LinuxCNC 的唯一现实方法是使用 dpkg 来构建 deb,然后将其转换为 rpm 包。因为我不希望 LinuxCNC 的构建系统被改变,所以这个问题在这一点上对我来说已经关闭了。
感谢您的努力。

关于 LinuxCNC 构建系统的问题 #695

问题比 PREFIX 更广泛。在非 debian 发行版上构建几乎是不可能的,因为到处都是硬编码路径、奇怪的安装位置以及缺乏文档(依赖项等)我花了 2 天的时间才能够在 gentoo 上启动一些示例配置.

关于 LinuxCNC 构建系统的问题 #695

我已经在 Slackware 上安装并构建了 Linuxcnc,并且在构建 LFS 和 BLFS 系统时。我承认这是很久以前的事了,但我不记得在构建过程中有什么严重的问题。除了追逐和构建任何一个系统中可能丢失的库。

关于 LinuxCNC 构建系统的问题 #695

@Perlovka– 我想你是对的
@ozzyrob – 这当然是采用 LinuxCNC 然后围绕它构建合适的操作系统的解决方案。但是,我认为这不是普通 LinuxCNC 用户所需要的。

关于 LinuxCNC 构建系统的问题 #695

@WasIstDasDingDaWasIstDasDingDa 我不会将安装 Slackware 称为构建合适的操作系统。
由于大多数数控盒都是专用机器,为什么不使用其中一个预制图像?
论坛上的一些人报告说自定义 Mint 图像的效果非常好。
或者只是在您现有的系统上腾出一些空间,32GB 到 64GB 是您真正需要的,并设置一个双引导系统。避免不必要地用头撞墙。
如果您深入研究 debain 目录并查看 control.xxx.in 文件,您将得到一个好主意或开始需要哪些依赖项,一些适合您的系统的挖掘将得出答案.
真的取决于你是想运行一台机器还是在你最喜欢的发行版上安装 linuxcnc。

关于 LinuxCNC 构建系统的问题 #695

ozzyrob,请原谅并冷静下来。顺便说一句,Slackware 是我 1993 年的第一个 Linux。我已经在专用计算机上安装了 Debian,而且我知道如何安装。以前有 LFS 为什么要推荐预建镜像?也许其他人会来告诉我使用 Windows 和 MACH。我知道 LinuxCNC 非常特别,要能够在所有发行版上使用它,需要 LinuxCNC 的开发人员以及发行版的维护人员付出很大的努力。而机控也不是主流。

关于 LinuxCNC 构建系统的问题 #695

嗯,有人说 Slackware :) 我也想要它在 slackware 上。我想我是围绕 2.6.x 构建它的,不记得在做它时遇到过任何大问题。无论如何,我准备帮助开发 DESTDIR 选项。

关于 LinuxCNC 构建系统的问题 #695

我因背部弯曲而休假了 3 个月……没什么可做的,这只是一种心理锻炼,我想我仍然拥有我使用过的所有构建脚本。
Windows……不不不,前几天我不得不使用 Windows 来扫描一些文件……真让人头疼,那只是一个 5 分钟的工作,却花了 20 个小时,哈哈哈哈哈,
我推荐预构建图像,因为它是一种久经考验的方法,尤其是从 Windows 和 Mach 迁移时。如果您曾经浏览过论坛并看到人们在尝试从 Ubuntu 或 Mint 系统上的软件包安装内核、内核头文件和 linuxcnc 时遇到的麻烦,您就会明白为什么预构建映像是起床并没有大惊小怪。

关于 LinuxCNC 构建系统的问题 #695
合作者

我已经检查并同意 –prefix 似乎不起作用(它曾经起作用)。即使您也有 –prefix 和 –exec-prefix。
翻阅历史我发现:b62f3d3c7

貌似2009年系统改成默认就地运行了
。54c202231

您认为我们可以解决这个问题,还是需要修复?

关于 LinuxCNC 构建系统的问题 #695

感谢您走过历史。正如配置脚本的输出和一些用户评论所暗示的那样,我猜测它一定在某个时候起作用了。

对于作为单个用户的我来说,问题已解决,因为我切换到 Debian,这是进行完整安装的唯一方法(除了 Debian 衍生产品)。
我不是发行版狂热者,如果有某些外部硬件(例如 SDR、仪器、驱动器)和仅限 Windows 的软件,那么我不害怕使用 Windows。如果没有 LinuxCNC,我将不得不以 Mach 为例。

然而,一个基本的问题是,任何 Linux 的自由软件都应该能够在任何 Linux 平台上构建,而不管包系统和其他细节。而目前的 LinuxCNC 构建系统无法实现此要求。依赖关系的实现完全由用户负责,但作者/开发者/维护者应该详细记录依赖关系。

所以做你认为对的事。

关于 LinuxCNC 构建系统的问题 #695

实际上,回到 Slackware,用户确实必须寻找所需的库,有时开发人员会提供需求,有时您必须经历几次配置过程。
多亏了 SlackBuilds.org,构建一些包变得更加容易,但大多数情况下仍然有很多工作要做。在我的 Slackware 服务器上构建 gitlab 很有趣哈哈哈哈。
Debian 构建基础结构确实使包构建更容易一些……如果开发人员已经将正确的 debian 目录结构放在一起。查看 debian/control 文件可以帮助找出还需要哪些其他软件包。
也许整个 Linux 世界需要一些改变……..也许是一种通用的包格式和构建与发行版无关的包的方法。
但老实说,该项目将需要更多用户来自其他发行版,这些发行版对他们的特定发行版具有高水平的能力和知识。这会很棒。

关于 LinuxCNC 构建系统的问题 #695

@ozzyrob, 我同意你的看法。如果我有更多的时间、知识(和愿望),我会制作一个 LinuxCNC 的分支。但只是为了简化向其他 Linux 发行版的“移植”。我将从 OpenSUSE 开始,我会邀请您参与有关 Slackware 的部分。对于 Gentoo,线程中已经有一位知识渊博的用户 (Perlovka)。这项工作本质上是逆向工程和令人费解的。您不必是出色的 C 程序员,但您应该熟悉 Shell 编程、GNU 构建系统以及最好是不同的包系统。

关于 LinuxCNC 构建系统的问题 #695

@andypugh谢谢,您终于完成了可以完成的工作,也在 NTLINUX/RTAI 的线程中。我对结果完全满意。我正在使用最新的 RTAI 内核的最新操作系统上运行最新的 LinuxCNC。其他一切都属于“拥有就不错”的范畴。您可以关闭问题。