使用 Exodus 将 Linux 二进制文件从一个 Linux 系统复制到另一个系统?


将 Linux 二进制文件从一个系统传输到另一个系统可能是一项具有挑战性和耗时的任务,尤其是在您需要在多台机器上安装软件时。但是,有一个工具可以简化此过程——Exodus。它是一个强大的工具,允许您导出和导入软件包,包括二进制文件及其依赖项,从一个 Linux 系统到另一个系统。

在本文中,我们将探讨使用 Exodus 将 Linux 二进制文件从一个系统复制到另一个系统所涉及的步骤。我们将介绍一些基本步骤,例如识别二进制文件和依赖项的位置、创建归档文件以及在目标系统上安装软件。此外,我们将讨论在跨不同架构复制二进制文件时可能出现的潜在问题,并提供解决这些问题的有用技巧。

无论您是负责管理多个 Linux 系统的系统管理员,还是希望分发软件更新的开发人员,Exodus 都可以成为您工具包中宝贵的工具。凭借其强大的功能和易用性,它可以帮助您节省时间和精力,同时确保您的软件在所有目标系统上正确安装。

要使用 Exodus,您需要在源系统和目标系统上都安装该工具。通常,Exodus 在大多数 Linux 系统中默认情况下不包含,因此您需要使用发行版的软件包管理器来安装它。例如,您可以通过运行以下命令来安装 Exodus:

sudo apt-get install exodus

以下是运行 sudo apt-get install exodus 命令时 Linux 终端输出可能的样子:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
   libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5widgets5 libssl1.1 libxml2 exodus-gui
Suggested packages:
   exodus-doc exodus-tests
The following NEW packages will be installed:
   exodus exodus-gui libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5widgets5 libssl1.1 libxml2
0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,872 kB of archives.
After this operation, 23.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

输出显示 exodus 软件包将被安装。系统提示用户在终端中键入“Y”或“n”以确认安装。

在两个系统上都安装 Exodus 后,您就可以使用该工具继续导出和导入软件包了。

使用 Exodus 导出 Linux 二进制文件

要利用 Exodus 导出软件包,您必须首先在源系统上找到二进制文件及其相应的依赖项。确定其位置后,您可以使用 exodus export 命令生成软件包的存档。

例如,假设您打算从源系统导出二进制文件 htop。在这种情况下,您可以执行以下命令来启动导出过程:

sudo exodus export /usr/bin/htop

执行命令后的输出可能如下所示:

Exporting /usr/bin/htop...
Creating Exodus container...
Exporting binary...
Creating tarball...
Copying tarball to host...
Export complete.
The Exodus container has been saved to:
/tmp/exodus-htop.tar.gz

执行命令后,将在当前目录中生成一个名为 htop.tar.gz 的新存档文件。该存档文件包含 htop 二进制文件以及其运行所需的所有必要依赖项。这使得软件包可以无缝地传输到另一个 Linux 系统。

使用 Exodus 导入 Linux 二进制文件

将存档文件传输到目标系统后,您可以使用 Exodus import 命令继续导入软件包。此命令将提取存档文件的内容并在目标系统上安装软件包。

举例说明,假设您已将 htop.tar.gz 存档文件传输到目标系统。要将软件包从一个系统导入到另一个系统,请执行以下命令:

sudo exodus import htop.tar.gz

exodus 命令的输出如下所示:

Importing package htop.tar.gz...
Extracting package files...
Installing package...
Package htop has been imported successfully.

这将从存档文件提取 htop 二进制文件和任何依赖项,并将它们安装在目标系统上的相应目录中。

跨不同架构复制 Linux 二进制文件

在将 Linux 二进制文件在具有不同架构的系统之间传输时,必须确认软件包可以在目标架构上运行。您可能还需要手动传输软件包中未包含的任何依赖项。

例如,假设您打算将 nginx 二进制文件从 x86 系统复制到 ARM 系统。要确定 nginx 二进制文件的架构,您可以使用 file 命令,如下所示:

$ file nginx

nginx 命令的输出:

nginx: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9c491f7eb0025b843888971f371d12a1a262fe97, stripped

根据输出,nginx 二进制文件被设计为在 x86-64 架构上作为 64 位可执行文件运行。此外,由于 ARM 处理器使用的命令集存在差异,因此此二进制文件不适用于 ARM 系统。

有时您需要手动复制软件包中未包含的任何依赖项和某些文件。为此,您可以使用 ldd 命令识别 nginx 所需的依赖项或重要文件,如下所示:

$ ldd nginx

ldd nginx 命令的输出可能因系统和安装的 nginx 版本而异,但以下是一个示例输出:

linux-vdso.so.1 (0x00007ffc9f5c4000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9a5a41d000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f9a5a1e4000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9a59e63000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9a59acc000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9a598b5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a594f2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9a5a89d000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9a592ee000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9a590d4000)

输出显示 nginx 依赖的共享库,包括其路径和内存地址。

结论

总之,Exodus 是一个用于在系统之间复制 Linux 二进制文件的实用工具。它为软件包提供了一个集中式存储库,允许在多个系统上轻松安装和更新。Exodus 支持从各种来源导入包,自动处理依赖项和冲突,甚至允许跨不同硬件平台复制二进制文件。

但是,在系统之间复制二进制文件之前,有必要验证发行版和软件版本是否相同,以避免兼容性问题。如果系统具有不同的架构,则可能需要手动复制依赖项。采取正确的预防措施,Exodus 可以简化软件管理任务,提高系统稳定性和安全性,并节省在多个系统上管理软件的时间和精力。总的来说,只要采取必要的预防措施,Exodus 就是一个用于复制 Linux 二进制文件的实用工具。

更新于: 2023-07-26

106 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告