Exodus - Как переносить бинарные файлы между Linux-системами без контейнеров
Репозиторий давно не обновлялся
Последнее обновление было 2 года назад.
Знакомая ситуация: на вашем ноутбуке отлично работает нужная утилита, а на сервере её нет в репозиториях? Или версия в репозиториях устаревшая? Exodus от Intoli решает эту проблему элегантно — переносит бинарные файлы вместе со всеми зависимостями между системами.
Почему это важно
Обычный копирование бинарника почти всегда заканчивается ошибкой:
aria2c: error while loading shared libraries: libgnutls.so.30: cannot open shared object file
Exodus автоматически находит все зависимости, создаёт статически слинкованный лаунчер и устанавливает пакет в ~/.exodus/ на целевой машине. Всё одной командой:
exodus aria2c | ssh ваш_сервер
Ключевые возможности
- Автоматический сбор зависимостей — Exodus анализирует ELF-бинарник и находит все необходимые библиотеки
- Перенос через SSH — удобная интеграция с SSH для мгновенного развёртывания
- Гибкость работы:
- Добавление дополнительных файлов через
--add - Автодетект зависимостей через
--detect - Переименование бинарников при переносе
- Добавление дополнительных файлов через
- Поддержка Docker — можно включать бандлы в образы Docker
- Альтернатива контейнерам — работает без Docker и других систем контейнеризации
Как это работает
Exodus создаёт специальную структуру каталогов:
~/.exodus/
├── bin/ # Симлинки на лаунчеры
├── bundles/ # Бандлы с оригинальной структурой каталогов
└── data/ # Фактические файлы (по хешам содержимого)
Лаунчер — это небольшая программа, которая:
- Определяет своё местоположение
- Запускает линкер с правильными путями к библиотекам
- Игнорирует системные библиотеки, используя только перенесённые
Практическое применение
- Развёртывание на серверах без root-доступа
- Перенос утилит между разными дистрибутивами Linux
- Создание portable-версий софта
- Добавление софта в Docker-образы без увеличения размера
Ограничения
- Только ELF-бинарники (не работает со скриптами)
- Требуется совместимость архитектур CPU
Установка
pip install --user exodus-bundler
export PATH="~/.local/bin/:${PATH}" # Добавить в .bashrc
Exodus — must-have инструмент для:
- Системных администраторов
- DevOps-инженеров
- Разработчиков, работающих с разными окружениями
Проект с открытым исходным кодом, лицензия BSD 2-Clause. Попробуйте — и забудьте о проблемах с переносом бинарников между системами!
