Конвертация пакетов с помощью `alien`: deb, rpm, tgz и работа с 32/64-bit
Что делает alien и какие форматы поддерживает
alien — утилита для преобразования пакетов между разными пакетными форматами. Кратко:
- DEB — формат пакетов Debian и производных (Ubuntu и другие).
- RPM — формат, используемый Red Hat, Fedora, CentOS, OpenSUSE и др.
- SLP — формат Stampede Linux (исторический формат; редко встречается сегодня).
- LSB — попытка получить LSB‑совместимые RPM; полная совместимость не гарантируется.
- TGZ — tar/tar.gz архивы; конвертация возможна только для архивов с уже скомпилированными бинарными файлами, не для исходников.
Важно: alien не «переписывает» пакеты на уровне исходников — он упаковывает существующие бинарные компоненты в другой формат и кидает туда скрипты установки/удаления. Поэтому пакеты, зависящие от ядра или специфичных для дистрибутива путей, могут не работать корректно.
Синтаксис и типичные команды
Примеры команд (коротко и с пояснениями):
- Конвертировать RPM в DEB (стандартное поведение):
sudo alien -c somepackage.rpm- Преобразовать RPM в TGZ (промежуточный шаг):
sudo alien -c -t somepackage.rpmили с длинным флагом:
sudo alien -c --to-tgz somepackage.rpm- Конвертировать TGZ в DEB:
sudo alien -c somepackage.tgzФлаги:
- -c — создает пакет в целевом формате (включая скрипты);
- -t / –to-tgz — экспортирует в TGZ вместо целевого формата; полезно как обходной путь.
Проблема 32‑битных RPM на 64‑битной системе и обходной путь
Симптом: попытка конвертации 32‑битного RPM на 64‑битном Debian/Ubuntu может приводить к ошибке вида:
.rpm is for architecture i386; the package cannot be built on this system.Почему: alien пытается собрать/упаковать пакет целиком и проверяет архитектуру хоста. На 64‑битной системе сборка «под i386» запрещена по умолчанию.
Обходной путь: сделать промежуточный экспорт в TGZ, а затем конвертировать TGZ в DEB. Поскольку TGZ — просто архив с файлами, проверка архитектуры при этом не блокирует процесс.
Шаги:
- Экспортируем RPM в TGZ:
sudo alien -c -t somepackage.rpm- Конвертируем TGZ в DEB (стандартное поведение):
sudo alien -c somepackage.tgz- Устанавливаем пакет и проверяем его работу через apt/dpkg:
sudo dpkg -i somepackage.deb
sudo apt-get install -fКогда alien не сработает (ограничения и случаи неудач)
- Пакеты с модулями ядра: модули компилируются под конкретную версию/конфигурацию ядра. Простая конвертация не решит несовместимость.
- Пакеты с сильно завязанными на пути/сервисах дистрибутива скриптами и зависимостями — могут не работать.
- LSB‑метки и совместимость: даже при генерации LSB‑пакета полной совместимости не гарантируется.
- Исходники (source tarball): TGZ с исходниками нужно сначала собрать —
alienне компилирует исходники.
Important: всегда тестируйте сгенерированный пакет в изолированной среде (контейнер, chroot, VM) перед развертыванием в проде.
Альтернативные подходы
- Использовать chroot / debootstrap / schroot / pbuilder для создания окружения i386 и собрать/установить пакет там.
- rpm2cpio + распаковка и ручная упаковка в DEB: подходит для простых пакетов без сложных скриптов.
- Создать нативный пакет из исходников, если исходники доступны — наиболее надёжный путь.
- Использовать контейнеры (Docker) с нужной архитектурой/дистрибутивом и собрать пакет внутри контейнера.
Мини‑методология: безопасный рабочий процесс
- Анализ: проверьте содержимое RPM — есть ли бинарные модули ядра, скрипты, зависимости.
- Решение: если пакет простой (бинарные файлы + документы), используйте
alien. Если есть ядро/компилируемые модули — предпочитайте сборку из исходников. - Конвертация: при архитектурных конфликтах используйте TGZ как промежуточный формат.
- Тестирование: установите в изолированной среде и прогоните тесты (см. критерии приёмки).
- Документация: зафиксируйте изменения, зависимости и возможные ручные шаги для конечных пользователей.
Критерии приёмки (проверочные тесты)
- Пакет устанавливается без ошибок:
dpkg -i somepackage.debзавершился с кодом 0 или корректно исправлены зависимости черезapt-get -f install. - Утилита/сервис запускается и выполняет базовый набор функций (проверка через systemctl, сервисные скрипты или запуск бинаря).
- Проверка архитектуры:
dpkg --print-architectureиdpkg --info somepackage.debпоказывают ожидаемую архитектуру. - Бинарные зависимости:
ldd /usr/bin/имя_бинаряне содержит «not found». - Конфликты файлов: нет перекрытия файлов с другими пакетами (проверить
dpkg -Sиdpkg --installошибки).
Чеклист по ролям
Для администратора:
- Сделать резервную копию целевой системы или тестировать в VM.
- Проверить зависимости и архитектуру.
- Установить пакет и прогнать smoke‑тесты.
Для разработчика/пакетировщика:
- Проверить, можно ли собрать пакет из исходников.
- При возможности адаптировать скрипты postinst/prerm под целевую систему.
Короткий глоссарий
- alien — утилита для конвертации пакетов между форматами.
- DEB — формат пакета Debian/Ubuntu.
- RPM — формат пакета Red Hat и производных.
- TGZ — tar‑архив с gzip‑сжатием, используемый как контейнер файлов.
- LSB — Linux Standard Base, стандарт совместимости.
Советы по совместимости и безопасность
- Для критичных сервисов не полагайтесь на конвертацию в продакшне — лучше собирать и тестировать нативные пакеты.
- Запускайте статический анализ и проверку зависимостей до инсталляции.
- Для широкого развёртывания оформите процесс в виде CI‑job: автоматическая конвертация + тест‑раннер в контейнере.
Заключение
alien остаётся удобным инструментом для быстрой конвертации бинарных пакетов между форматами. В тех случаях, когда архитектурная проверка мешает конвертации (например, 32‑битные RPM на 64‑битной системе), экспорт в TGZ и последующая упаковка в DEB дают простой и рабочий обходной путь. Однако при наличии модулей ядра, специфичных скриптов или строгих зависимостей рекомендуется использовать изолированное окружение (chroot/VM/container) или пересобрать пакет из исходников.
Краткий чек по безопасности: тестируйте в изоляции, проверяйте зависимости и файлы, документируйте отличия от оригинала.
Summary:
alienподдерживает DEB, RPM, TGZ, SLP и LSB.- Для 32→64‑bit проблем используйте промежуточный TGZ.
- Тестируйте результат в изолированной среде перед развёртыванием.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента