Exodus - Как переносить бинарные файлы между Linux-системами без контейнеров

05 Nov, 2023

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

3,015
🔱 76
👥 42

Знакомая ситуация: на вашем ноутбуке отлично работает нужная утилита, а на сервере её нет в репозиториях? Или версия в репозиториях устаревшая? Exodus от Intoli решает эту проблему элегантно — переносит бинарные файлы вместе со всеми зависимостями между системами.

Почему это важно

Обычный копирование бинарника почти всегда заканчивается ошибкой:

aria2c: error while loading shared libraries: libgnutls.so.30: cannot open shared object file

Exodus автоматически находит все зависимости, создаёт статически слинкованный лаунчер и устанавливает пакет в ~/.exodus/ на целевой машине. Всё одной командой:

exodus aria2c | ssh ваш_сервер

Ключевые возможности

  1. Автоматический сбор зависимостей — Exodus анализирует ELF-бинарник и находит все необходимые библиотеки
  2. Перенос через SSH — удобная интеграция с SSH для мгновенного развёртывания
  3. Гибкость работы:
    • Добавление дополнительных файлов через --add
    • Автодетект зависимостей через --detect
    • Переименование бинарников при переносе
  4. Поддержка Docker — можно включать бандлы в образы Docker
  5. Альтернатива контейнерам — работает без Docker и других систем контейнеризации

Как это работает

Exodus создаёт специальную структуру каталогов:

~/.exodus/
├── bin/          # Симлинки на лаунчеры
├── bundles/      # Бандлы с оригинальной структурой каталогов
└── data/         # Фактические файлы (по хешам содержимого)

Лаунчер — это небольшая программа, которая:

Реклама
  1. Определяет своё местоположение
  2. Запускает линкер с правильными путями к библиотекам
  3. Игнорирует системные библиотеки, используя только перенесённые

Практическое применение

  1. Развёртывание на серверах без root-доступа
  2. Перенос утилит между разными дистрибутивами Linux
  3. Создание portable-версий софта
  4. Добавление софта в Docker-образы без увеличения размера

Ограничения

  • Только ELF-бинарники (не работает со скриптами)
  • Требуется совместимость архитектур CPU

Установка

pip install --user exodus-bundler
export PATH="~/.local/bin/:${PATH}"  # Добавить в .bashrc

Exodus — must-have инструмент для:

  • Системных администраторов
  • DevOps-инженеров
  • Разработчиков, работающих с разными окружениями

Проект с открытым исходным кодом, лицензия BSD 2-Clause. Попробуйте — и забудьте о проблемах с переносом бинарников между системами!

Демонстрация работы Exodus

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.