Utwórz PKGBUILD z .deb

11

Mam .debpakiet debian, który zasadniczo zawiera pliki binarne oprogramowania jako /usr/share/binfolder w skompresowanym datapliku oraz inny skompresowany plik metadanych zawierający sumy kontrolne innych plików.

Moim celem jest utworzenie PKGBUILDtakiego pakietu .deb do poprawnego zainstalowania na Archlinuxie.

Jak to zrobić w odpowiedni sposób?

Czy wystarczy skopiować zawartość tego /usr/share/binkatalogu do pkg /usr/share/binśrodowiska Fakeroot przy użyciu build()funkcji? Folder zostanie skopiowany do prawdziwej /usr/share/binlokalizacji, gdy skompilowany pakiet zostanie rzeczywiście zainstalowany?

Manu343726
źródło
6
Zasadniczo tak (z wyjątkiem użycia funkcji pakietu). Poszukaj w AUR innych pakietów kończących się -bini zastosuj to samo podejście ...
jasonwryan

Odpowiedzi:

9

Tak, będzie działać w taki sam sposób, jak inne PKGBUILD ze źródłami binarnymi - rozpakuj go i skopiuj pliki. Jedyną rzeczą, której należy wspomnieć jest to, że deb-archiwum składa się z 3 innymi plikami - debian-binary, control.tar.gz, data.tar.gz. makepkg rozpakuje tylko archiwum pierwszego poziomu, a następnie powinieneś ręcznie rozpakować data.tar.gz.

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

package() {
    # copy files
}

Alternatywnie możesz umieścić archiwum deb w tablicy noextract, a następnie ręcznie wyodrębnić tylko data.tar.gz:

$ ar p source.deb data.tar.gz | tar zx
diffycat
źródło
makepkgzmienia bieżący katalog na $srcdirprzed uruchomieniem funkcji, więc nie musisz już go dołączać ...
jasonwryan
@jasonwryan, kilku programistów stwierdziło, że nie ma gwarancji, że takie pozostaną prawdziwe. Ze względu na długowieczność warto pozostawić zwyczajową cd "${srcdir}"linię na miejscu.
HalosGhost
1
@HalosGhost Nie słyszałem o tym. Zgodnie z tą samą logiką nie ma gwarancji, że stanie się fałszywa ... :)
jasonwryan