Erstellen Sie PKGBUILD aus .deb


11

Ich habe ein .debDebian-Paket, das im Wesentlichen die Binärdateien der Software als /usr/share/binOrdner in einer komprimierten dataDatei enthält, und eine andere komprimierte Metadaten-Datei, die die Prüfsummen der anderen Dateien enthält.

Mein Ziel ist es, ein PKGBUILDsolches .deb-Paket zu erstellen , um es korrekt unter archlinux zu installieren.

Was ist der richtige Weg, um das zu tun?

Reicht es aus, den Inhalt dieses /usr/share/binVerzeichnisses pkg /usr/share/binmit der build()Funktion in die fakeroot-Umgebung zu kopieren ? Der Ordner wird an den wahren /usr/share/binSpeicherort kopiert, wenn das erstellte Paket tatsächlich installiert wird.


6
Im Wesentlichen ja (außer die Paketfunktion verwenden). Suchen Sie in der AUR nach anderen Paketen, die mit enden, -binund verwenden Sie denselben Ansatz ...
jasonwryan

Antworten:


9

Ja, es funktioniert genauso wie andere PKGBUILDs mit binären Quellen - extrahieren Sie es und kopieren Sie Dateien. Das einzige , was die erwähnt werden sollte , ist , dass deb-Archiv besteht aus drei anderen Dateien - debian-binary, control.tar.gz, data.tar.gz. makepkg extrahiert nur das Archiv der ersten Ebene und sollte dann manuell extrahiert werden data.tar.gz.

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

package() {
    # copy files
}

Alternativ können Sie das Deb-Archiv in ein Noextract-Array einfügen und dann nur manuell extrahieren data.tar.gz:

$ ar p source.deb data.tar.gz | tar zx

makepkgändert das aktuelle Verzeichnis in $srcdirvor dem Ausführen von Funktionen, so dass Sie das nicht mehr
einschließen

@ jasonwryan, mehrere Entwickler haben angegeben, dass es keine Garantie dafür gibt, dass dies wahr bleibt. Aus Gründen der Langlebigkeit kann es sinnvoll sein, die übliche cd "${srcdir}"Linie beizubehalten.
HalosGhost

1
@ HalosGhost Das hatte ich nicht gehört. Nach der gleichen Logik gibt es keine Garantie, dass es falsch wird ... :)
Jasonwryan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.