Шаг 1. Установите необходимые инструменты
apt-get install alien rpm-build dpkgШаг 2. Распакуйте .deb-пакет
mkdir mypackage && cd mypackagedpkg-deb -x ../package.deb ./data # файлы, устанавливаемые в системуdpkg-deb --control ../package.deb ./DEBIAN # служебные файлы (control, postinst и т.д.)Теперь у вас есть:
./data/— дерево файлов (как в корне системы:./data/usr/bin/...)./DEBIAN/control— метаданные./DEBIAN/postinstи др. — скрипты
Шаг 3. Внесите изменения
- Отредактируйте файлы в
./data/(например, замените пути, содержимое, добавьте/удалите файлы). - При необходимости отредактируйте скрипты: переименуйте или адаптируйте их под RPM:
DEBIAN/postinst→ будет аналогом%postDEBIAN/prerm→%preun- и т.д.
Скрипты Debian и RPM не полностью совместимы по синтаксису и переменным. Например, в RPM скрипты получают аргументы (
$1 = 0при удалении,1при установке), в Debian — нет. Возможно, потребуется переписать логику.
Шаг 4. Соберите изменённый пакет в RPM
Вариант A: Через alien
Сначала создайте новый .deb из изменённых файлов:
dpkg-deb --build data ../package-modified.debДля этого нужно, чтобы
DEBIAN/controlбыл корректным. Если вы его меняли — проверьте поляPackage,Version,Architecture.
Теперь конвертируйте в RPM:
alien --to-rpm --scripts ../package-modified.debФлаг --scripts сохраняет скрипты (postinst → %post и т.д.).
alienавтоматически преобразует скрипты, но не всегда корректно. Проверьте итоговый.specили поведение RPM.
Вариант B: Вручную через rpmbuild (гибче и надёжнее)
- Создайте структуру для
RPM:
rpmdev-setuptreeСоздайте
.spec-файл вручную или на основе метаданных изDEBIAN/control.Положите изменённые файлы в архив (например,
mypackage.tar.gz) и укажите его вSource0.В
.specопишите:
%files— пути изdata/%post,%preun— содержимое скриптов- зависимости из
control→Requires,BuildRequires
- Соберите:
rpmbuild -bb mypackage.spec