Pertanyaan Bagaimana cara membuat kemasan Debian menghasilkan dua paket yang diberi arsip sumber hulu?


Saya mengemas sesuatu untuk PPA saya. Sumber hulu adalah a .tar.gz arsip yang berbasis Makefile.

Karena paket ini memiliki sejumlah besar data arsitektur-independen, akan lebih bijaksana untuk membuat skrip build menghasilkan dua paket:

  • paket
  • paket-data

Bagaimana saya bisa mengatur ini? Saya telah mengedit Debian saya control file untuk menghasilkan dua paket, tetapi saya tidak tahu cara mendapatkan file yang tepat ke paket yang tepat.

Karena file data saat ini semua diinstal melalui Makefile, saya agak tersesat di sini.


14
2017-12-15 03:20


asal




Jawaban:


Ini adalah tempat di mana saya selalu menemukan dokumentasi yang kurang. Saya cukup banyak hanya belajar bagaimana ini bekerja dengan melihat bagaimana hal itu dilakukan dalam paket-paket lain. Seperti kebanyakan hal dalam kemasan Debian, ada beberapa cara untuk melakukan ini. Saya menemukan cara paling sederhana adalah menggunakan debian/package.install file. Ini contoh paket yang saya kerjakan, imajinasi (cabang bzr).

Pertama, kita perlu membuat paket di debian/control. Ada tiga bait sekarang. Satu untuk paket sumber dan satu untuk setiap paket biner. Perhatikan bahwa paket foo-data seharusnya Architecture: all. Juga perhatikan bahwa imajinasi Tergantung pada imagination-common (= ${source:Version}).

Selanjutnya, kita buat a debian/imagination.install mengajukan. Ini berisi file atau jalur khusus yang kita inginkan berakhir dalam paket imajinasi. Untuk paket ini kita menginginkan semua file yang bergantung pada arsitektur. File desktop disertakan karena perlu dikatakan dengan biner yang dipanggilnya Exec: garis.

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

Kita perlu membuat debian/imagination-common.install mengajukan. Ini akan berisi semua file independen arsitektur, gambar, terjemahan, dokumen, dan sejenisnya.

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install menjelaskan apa yang sebenarnya terjadi di sini:

mungkin Anda memiliki paket besar itu   membangun beberapa paket biner. Kamu   dapat menggunakan Makefile hulu untuk   menginstal semuanya ke dalam debian / tmp, dan   kemudian gunakan dh_install untuk menyalin   direktori dan file dari sana ke dalam   paket yang tepat membangun direktori.

Yang dimaksud dengan "paket yang tepat membangun direktori" adalah bahwa pada akhir proses pembangunan, semua yang akan dihasilkan foo.deb akan ditemukan di src/debian/foo. File-file yang akan berakhir di foo-data.deb akan ditemukan di src/debian/foo-data. Sebagai debian/rules pada dasarnya hanya Makefile, Anda dapat mulai membayangkan begitu cara lain untuk mendapatkan hasil yang sama.


14
2017-12-15 04:13



Terima kasih banyak! Penjelasan yang sangat jelas dan bekerja dengan sempurna. - Nathan Osman