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.

Manu343726
quelle
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
diffycat
quelle
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