Сайт | Скачать | Видео | Wiki

Автор Тема: pkg2deb конвертер пакетов типа alien  (Прочитано 99 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34089
  • Репутация: +233/-0
  • Автор темы
    • PuppyRus-A
Зачем : мне многократно проще и удобнее компилить и пакетить в арче
Не просто перепаковать, но и прописать зависимости - это была главная задача
Ковырять alien не смог. Он на perl. Я его не знаю
Нашел https://www.linuxuprising.com/2021/05/new-project-to-convert-arch-linux.html - не совсем то
dpkg-shlibdeps что-то может в плане зависимостей, но как-то все в дебиане сложно. Не то что в арче

В итоге решил написать сам (bash, sed, awk)
Поиск зависимостей реализовал : ищу все бинарники и либы (find), определяю их зависимости - либы (ldd) , определяю по либам пакеты (dpkg -S - если пакет установлен, apt-file search - если не установлен). apt-file работает не быстро. А т.к. он вызывается многократно - скрипт на больших пакетах будет работать долго.
На конвертацию арч спецификации (.PKGINFO) в деб (control) припахал ИИ
Полного автомата нет. Conflicts, Provides - надо осмысленно дописать руками. Поэтому для новичков скрипт не рекомендую
Арч пакеты больше деб, т.к. содержат DEV составляющую и менее раздроблены. Этим не заморачивался. Т.е. правильно прописывайте Conflicts, Provides

Название пакета лучше менять. Например mpv -> mpv-light. Иначе при обновлении пакета в деб. репе ваш пакет будет обновлен. Ну или морозить: apt-mark hold

Использование:
Запускать в дистрибутиве, под который хотите сделать пакет.deb
Перед использованием сделать : sudo apt update && sudo apt-file update
pkg2deb arch-package.pkg.xz - в этом случае control будет сделан из .PKGINFO
pkg2deb dir (т.е. просто папка с распакованным пакетом , модулем и т.п.)- в этом случае в control будет название и версия из названия dir. Остальные поля (кроме Depends:) пустые. Тут можно вдохновиться родными control из родной деб репы
Последняя строка в скрипте, которая создает сам .deb закомментирована, т.к.  control желательно доработать, после чего уже собрать из папки пакет

Скрипт в аттаче. Тестировался мало. Буду дорабатывать
Пример использования
« Последнее редактирование: 30 Июль 2024, 09:24:42 от sfs »