可执行文件到另一台Linux机器的可移植性


11

我已经在一台Linux计算机(M1)上安装了Motion程序,并希望在另一台Linux(M2)上使用相同的程序。

该程序的构建方式多种多样,我已经忘记使用了哪个版本,因此我可以直接复制M1中的user / bin / motion文件并将其放在M2的user / bin / motion中吗?

我知道配置文件在哪里,所以我将其遍历,但是我不确定Motion的工作版本在M2上使用的视频驱动程序是什么。有什么办法找出来吗?

有没有一种方法可以找出其依赖性?


仅作记录,这几乎总是一个坏主意。与其他平台相比,Linux的巨大优势之一是软件包管理。手动将二进制文件复制到系统目录中会绕过程序包管理器。在许多情况下,这仅意味着更新二进制文件将需要手动进行,但是在某些情况下,这可能会导致系统更新出现重大问题。TL; DR:使用您的程序包管理器。
HalosGhost 2014年

听起来合乎逻辑,那么我将如何使用dpkg执行此任务?
雷吉2014年

如果提供所需工具的软件包确实无法在您的OS中使用,则可以为其创建一个软件包(这比听起来困难得多)。然后,您将使用dpkg安装该软件包。
HalosGhost

我不确定你是什么意思。您可以从已经安装的程序制作软件包吗?
雷吉2014年

不,包装是一个独立的过程;但是学习它是一项宝贵的技能。但是它是发行版(或至少是程序包管理器)特定的。
HalosGhost

Answers:


12

要将一个程序移动到另一台计算机,您必须移动:

1)可执行文件
command是查找命令路径的一种简单方法type

例如: type cal

cal是/ usr / bin / cal

2)库依赖关系
您可以通过ldd命令找到库依赖关系,但是请记住,如果从源代码编译程序,则两台服务器的CPU架构必须相同。

例如: ldd date

linux-vdso.so.1 =>(0x00007fff83dff000)
librt.so.1 => /lib64/librt.so.1(0x0000003784e00000)libc.so.6
=> /lib64/libc.so.6(0x0000003783e00000)libpthread
。 so.0 => /lib64/libpthread.so.0(0x0000003784200000)/lib64/ld-linux-x86-64.so.2(0x0000003783a00000

3)配置文件
在新服务器中,您可能需要告诉程序重新创建配置文件,因为该配置文件属于先前的服务器。

4)检查硬件依赖性
为了进行检查,我认为您必须检查程序的网站是否支持硬件,或者必须在新环境中测试程序。


如何找到可执行文件的存储位置?我认为它在用户/箱/称为运动。它在机器启动时运行,所以这能给我有关可执行文件存储位置的任何线索吗?
雷吉2014年

@reggie,type命令是一种简单的方法。.我编辑了帖子。
Sepahrad Salour
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.