使用 Exodus 将 Linux 二进制文件从一个 Linux 系统复制到另一个 Linux 系统?
将 Linux 二进制文件从一个系统传输到另一个系统可能是一项具有挑战性且耗时的任务,尤其是当您需要在多台计算机上安装软件时。然而,有一个工具可以简化这个过程 - Exodus。它是一个功能强大的工具,允许您将软件包(包括二进制文件及其依赖项)从一个 Linux 系统导出和导入到另一个 Linux 系统。
在本文中,我们将探讨使用 Exodus 将 Linux 二进制文件从一个系统复制到另一个系统所涉及的步骤。我们将介绍一些基本步骤,例如识别二进制文件和依赖项的位置、创建存档文件以及在目标系统上安装软件。此外,我们将讨论跨不同体系结构复制二进制文件时可能出现的潜在问题,并提供解决这些问题的有用提示。
无论您是负责管理多个 Linux 系统的系统管理员,还是希望分发软件更新的开发人员,Exodus 都可以成为您工具包中的宝贵工具。凭借其强大的功能和易用性,它可以帮助您节省时间和精力,同时确保您的软件在所有目标系统上正确安装。
要使用 Exodus,您需要在源系统和目标系统上安装该工具。通常,大多数 Linux 系统默认不包含 Exodus,因此您需要使用发行版的包管理器来安装它。例如,您可以通过运行命令−来安装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 二进制文件的有用工具。