Создать PKGBUILD из .deb

11

У меня есть .debпакет Debian, который по существу содержит двоичные файлы программного обеспечения в виде /usr/share/binпапки в сжатом dataфайле, и другой сжатый файл метаданных, содержащий контрольные суммы других файлов.

Моя цель - создать PKGBUILDтакой пакет .deb для правильной установки на archlinux.

Какой правильный способ сделать это?

Достаточно ли скопировать содержимое этого /usr/share/binкаталога в pkg /usr/share/binсреду fakeroot с помощью build()функции? Папка будет скопирована в истинное /usr/share/binместо, когда фактически собранный пакет будет установлен?

Manu343726
источник
6
По сути, да (кроме использования функции пакета). Посмотрите в AUR другие пакеты, заканчивающиеся на -binи используйте тот же подход ...
jasonwryan

Ответы:

9

Да, он будет работать так же, как и другие PKGBUILD с бинарными источниками - распакуйте его и скопируйте файлы. Единственное , что следует отметить, что Деб-архив состоит из 3 -х других файлов - debian-binary, control.tar.gz, data.tar.gz. makepkg будет распаковывать только архив первого уровня, а затем вы должны распаковать вручную data.tar.gz.

prepare() {
    tar -zxvf data.tar.gz
}

package() {
    # copy files
}

Кроме того, вы можете поместить deb-архив в массив noextract, а затем извлечь только вручную data.tar.gz:

$ ar p source.deb data.tar.gz | tar zx
diffycat
источник
makepkgизменяет текущий каталог $srcdirдо выполнения функций, так что вам больше не нужно его включать ...
jasonwryan
@jasonwryan, несколько разработчиков заявили, что нет никакой гарантии, что это останется правдой. Ради долголетия может иметь смысл оставить привычную cd "${srcdir}"линию на месте.
HalosGhost
1
@HalosGhost Я не слышал этого. По той же логике, нет гарантии, что она станет ложной ... :)
jasonwryan