Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Copy Linux Binaries From One Linux System to Another using Exodus?
Exodus is a powerful tool that allows you to export and import software packages, including binaries and their dependencies, from one Linux system to another. This eliminates the need for complex manual installation procedures and ensures that all required dependencies are properly transferred.
Transferring Linux binaries from one system to another can be challenging, especially when dealing with multiple machines or complex dependency chains. Exodus simplifies this process by creating portable bundles that include both the binary and its runtime environment.
Installing Exodus
Exodus is typically not included in most Linux distributions by default, so you need to install it using your distribution's package manager. For Ubuntu/Debian systems
sudo apt-get install exodus
The installation output will show the additional dependencies being installed
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]
After installing Exodus on both source and target systems, you can proceed with exporting and importing software packages.
Exporting Linux Binaries using Exodus
To export a software package, you must first locate the binary file and its dependencies on the source system. The exodus export command creates a portable archive containing the software package and all required dependencies.
For example, to export the htop binary
sudo exodus export /usr/bin/htop
The export process output shows the steps being performed
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
This generates an archive file htop.tar.gz containing the htop binary and all necessary dependencies for seamless transfer to another Linux system.
Importing Linux Binaries using Exodus
After transferring the archive file to the target system, use the exodus import command to extract and install the software package.
To import the transferred htop.tar.gz archive
sudo exodus import htop.tar.gz
The import process extracts and installs the package
Importing package htop.tar.gz... Extracting package files... Installing package... Package htop has been imported successfully.
This extracts the htop binary and dependencies from the archive and installs them in the appropriate directories on the target system.
Architecture Compatibility Considerations
When transferring binaries between systems with different architectures, you must verify compatibility. Use the file command to check the binary's architecture
file /usr/bin/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
This output shows that nginx is a 64-bit x86-64 executable, which won't run on ARM systems due to different instruction sets.
Checking Dependencies
Use the ldd command to identify binary dependencies that may need manual transfer
ldd /usr/bin/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)
This shows the shared libraries and their paths that the binary depends on.
Key Benefits and Limitations
| Advantages | Limitations |
|---|---|
| Automatic dependency resolution | Architecture compatibility required |
| Portable software bundles | Library version conflicts possible |
| Simplified deployment | Larger file sizes due to bundled dependencies |
| No manual dependency tracking | May not work across different distributions |
Conclusion
Exodus streamlines the process of copying Linux binaries between systems by automatically handling dependencies and creating portable software bundles. While it requires architecture compatibility and careful version management, Exodus significantly reduces the complexity of software deployment across multiple Linux systems.
