Exodus is a simple yet useful program for easily and securely copying Linux ELF binaries from one system to another. For example, if you have htop (Linux Process Monitoring Tool) installed on your desktop machine, but not installed on your remote Linux server, exodus gives a way to copy/install the htop binary from the desktop machine to the remote server.
It bundles all of the binary’s dependencies, compiling a statically linked wrapper for the executable that invokes the relocated linker directly, and installing the bundle in the ~/.exodus/
directory, on the remote system.
You can see it in action here.
Install Exodus in Linux Systems
You can install exodus using Python PIP package manager, as follows. The command below will perform a user specific installation (only for the account you have logged on with).
$ sudo apt install python-pip [Install PIP On Debian/Ubuntu] $ sudo yum install epel-release python-pip [Install PIP On CentOS/RHEL] $ sudo dnf install python-pip [Install PIP On Fedora] $ pip install --user exodus-bundler [Install Exodus in Linux]
Next, add the directory ~/.local/bin/
to your PATH variable in your ~/.bashrc
file, in order to run the exodus executable like any other system command.
export PATH="~/.local/bin/:${PATH}"
Save and close the file. Then open another terminal window to start using exodus.
Note: It is also highly recommended that you install gcc and one of either musl libc or diet libc (C libraries used to compile small statically linked launchers for the bundled applications), on the machine where you’ll be packaging binaries.
Use Exodus to Copy Local Binary To a Remote Linux System
Once you have installed exodus, you can copy a local binary (htop tool) to a remote machine by simply running the following command.
$ exodus htop | ssh tecmint@server3
Then login to the remote machine, and add the directory /home/tecmint/.exodus/bin
to your PATH in your ~/.bashrc
file, in order to run the htop like any other system command.
export PATH="~/.exodus/bin:${PATH}"
Save and close the file, then source it as follows, for the changes to take effect.
$ source ~/.bashrc
Now you should be able to run htop on your remote Linux machine.
$ htop
If you have two or more binaries with the same name (for example, more than one version of htop installed on your system, one /usr/bin/htop
and another /usr/local/bin/htop
), you can copy and install them in parallel with the -r
flag, it enables for assigning of aliases for each binary on the remote machine.
The following command will install the two htop versions in parallel with /usr/bin/grep called htop-1
and /usr/local/bin/htop called htop-2
as shown.
$ exodus -r htop-1 -r htop-2 /usr/bin/htop /usr/local/bin/htop | ssh tecmint@server3
Attention: Exodus has a number of limitations and it may fail to work with non-ELF binaries, incompatible CPU architectures, incompatible Glibc and kernel versions, driver dependent libraries, pro-grammatically loaded libraries and non-library dependencies.
For more information, see the exodus help page.
$ exodus -h
Exodus Github repository: https://github.com/intoli/exodus
Conclusion
Exodus is simple yet powerful tool for copying binaries from one Linux machine to another remote Linux system. Try it out and give us your feedback via the comment form below.
Hi,
Thanks a lot…
I got error
pip install –user exodus-bundler
Collecting exodus-bundler
Could not fetch URL https://pypi.python.org/simple/exodus-bundler/: There was a problem confirming the ssl certificate: [Errno 2] No such file or directory – skipping
Could not find a version that satisfies the requirement exodus-bundler (from versions: )
No matching distribution found for exodus-bundler
my solution was:
@Jalal
Many thanks for sharing this solution, it will be helpful to any one who encounters the same error.
If the “binary” was installed from a “package” using the Distro’s package manager, then the “binary” should be installed on the other system the same way.
Are the two systems the same Distro? Ar they the same version? If the same version of the same Distro, have they both been currently updated ?
exodus is more trouble than it’s worth. “Nothing to see here … move along… move along.”
@Rick
Have you given it a try yet? True, it has some limitations but it is a useful tool for binary relocation purposes.
I like Exodus tool, very useful for moving binaries from one server to another server on remote location.
@kanishka
Yeah, we find it useful as well, thanks for the feedback.