Buat PKGBUILD dari .deb

11

Saya memiliki .debpaket debian yang pada dasarnya berisi binari perangkat lunak sebagai /usr/share/binfolder dalam datafile terkompresi , dan file terkompresi metadata lain yang berisi checksum dari file lain.

Tujuan saya adalah membuat a PKGBUILDuntuk menginstal paket deb dengan benar di archlinux.

Apa cara yang tepat untuk melakukan itu?

Apakah cukup untuk menyalin isi /usr/share/bindirektori itu ke pkg /usr/share/binlingkungan fakeroot menggunakan build()fungsi ini? Folder akan disalin ke /usr/share/binlokasi sebenarnya ketika paket yang dibuat benar-benar diinstal?

Manu343726
sumber
6
Intinya, ya (kecuali gunakan fungsi paket). Lihat di AUR untuk paket lain yang diakhiri dengan -bindan gunakan pendekatan yang sama ...
jasonwryan

Jawaban:

9

Ya, ini akan bekerja dengan cara yang sama seperti PKGBUILD lain dengan sumber biner - ekstrak dan salin file. Satu-satunya hal yang harus disebutkan adalah bahwa deb-arsip terdiri dari 3 file lainnya - debian-binary, control.tar.gz, data.tar.gz. makepkg hanya akan mengekstrak arsip tingkat pertama dan kemudian Anda harus mengekstraknya secara manual data.tar.gz.

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

package() {
    # copy files
}

Atau, Anda dapat menempatkan deb-arsip dalam array noextract dan kemudian secara manual mengekstrak hanya data.tar.gz:

$ ar p source.deb data.tar.gz | tar zx
diffycat
sumber
makepkgmengubah direktori saat ini $srcdirsebelum menjalankan fungsi, jadi Anda tidak perlu memasukkan itu lagi ...
jasonwryan
@jasonwryan, beberapa pengembang telah menyatakan bahwa tidak ada jaminan bahwa hal itu akan tetap benar. Demi umur panjang, mungkin masuk akal untuk meninggalkan cd "${srcdir}"garis adat di tempat.
HalosGhost
1
@HalosGhost Saya belum pernah mendengarnya. Dengan logika yang sama, tidak ada jaminan bahwa itu akan menjadi salah ... :)
jasonwryan