Bagaimana cara membuat PPA untuk program kerja?

36

Mari kita asumsikan saya memiliki aplikasi yang berfungsi ditulis dalam C, C ++ atau Python. Saya ingin membuat PPA Launchpad sehingga orang lain dapat dengan mudah menginstalnya dari sebuah paket. Tolong beri petunjuk langkah demi langkah untuk melakukan ini dari awal hingga akhir. (Atau berikan tautan yang melakukan hal yang sama;)

  • Apakah bahasa pemrograman itu penting? (Mungkinkah skrip bash?)
  • Apakah saya perlu menambahkan sesuatu ke bangunan saya?
  • Di mana seharusnya membangun instal sendiri?
  • Bagaimana cara saya mendefinisikan dependensi?
  • Bagaimana cara menggunakan dependensi?
  • Bagaimana cara membuat deb.?
  • Apa yang harus saya lakukan sebelum mengunggah ke Launchpad?
david.libremone
sumber
1
Saya mengajukan pertanyaan ini karena saya kadang-kadang merekomendasikan agar proyek FLOSS membuat PPA (agar saya dapat menginstalnya dengan mudah :) - Saya ingin mengarahkan mereka ke sumber daya yang menyeluruh atau dapat melakukannya sendiri.
david.libremone

Jawaban:

33

Itu pertanyaan yang sangat luas. Saya akan mencoba menjawab sebanyak yang saya bisa, tetapi itu pasti TIDAK akan menjadi instruksi langkah demi langkah. Ini karena tidak ada algoritma langkah demi langkah untuk membuat paket. Cara Anda melakukannya tergantung pada banyak faktor, sebagian besar pada jenis paket (aplikasi, perpustakaan), struktur sumber, dan banyak detail.

Untungnya, ada panduan menyeluruh di http://packaging.ubuntu.com

Saya akan mencoba sedikit membantu Anda memahami keseluruhan proses, jadi ketika Anda akan sedikit lebih akrab dengannya. Panduan Pengemasan mencakup sumber daya untuk bantuan tambahan.


Pertama-tama Anda harus menyadari bahwa membuat paket (file .deb) adalah proses terpisah dari membuat PPA. Membuat PPA adalah masalah pergi ke profil Launchpad Anda dan mengklik tautan "Buat PPA baru". Itu saja. Itu dibuat, berfungsi, tetapi kosong. Untuk mengunggah paket, Anda harus membuatnya terlebih dahulu. Tetapi izinkan saya pertama menjawab beberapa pertanyaan kecil Anda.

  • Bahasa pemrograman TIDAK penting sama sekali. Ini bisa berupa aplikasi C ++, skrip Bash, Brainfuck Hello World, satu file README, atau satu set foto keren. Paket dapat berisi file apa pun. Selama instalasi paket akan diekstraksi ke root ("/") sistem file Anda. Dengan cara ini mereka dapat meletakkan beberapa file di folder binari, menambahkan beberapa wallpaper ke set default GNOME, atau menyediakan skrip Bash kepada pengguna.
  • Anda DO perlu menambahkan sesuatu ke sumbernya. Itu harus direktori tingkat atas bernama "debian". Akan ada beberapa file dengan detail paket - mereka akan digunakan untuk menentukan tipe paket, dll.
  • Ketergantungan tercantum dalam salah satu file ini (di antara perincian lainnya). Darimana mendapatkannya? Mereka hanyalah paket lain yang digunakan aplikasi Anda. Pengembang aplikasi AKAN tahu perpustakaan dan sumber daya apa yang dibutuhkan oleh programnya, jadi ia seharusnya tidak memiliki banyak masalah dengan mendaftarnya.
    • Beberapa alat yang digunakan untuk membangun sebuah paket (pbuilder) dapat mengisi dependensi secara otomatis, mungkin dengan menentukan apa yang dibutuhkan aplikasi Anda saat kompilasi.
  • Hal ini juga sangat dianjurkan untuk digunakan autotools . Itu hal lain yang mungkin perlu Anda tambahkan, tetapi mungkin hampir setiap perangkat lunak sudah menggunakannya. AutoTools adalah seperangkat program yang sangat membantu - automake, autoconf dan autoscan. Saat Anda mengompilasi & menginstal program dengan ./configure && make && yang terkenal kemudian autotool digunakan untuk secara otomatis berurusan dengan sumber, untuk menyiapkan sumber daya lain termasuk dengan sumber untuk instalasi, dan untuk mengekstraksi hasil kompilasi ke tempat yang sesuai (untuk menjawab pertanyaan Anda: Build akan mengekstraksi ke BANYAK tempat terpisah. binari akan menuju ke / usr / local / bin, docs ke / usr / local / share / docs dll. Selain itu, binari dari suatu paket akan pergi ke tempat yang berbeda, misalnya binari ke / usr / bin. dengan tata letak direktori yang rumit ini? Gunakan AutoTools - ini akan mempedulikannya secara otomatis, dan itulah mengapa mereka sangat berguna).

Membangun paket deb. Mungkin terlihat sebagai proses yang sangat rumit, tapi itu tidak sulit. Saya sangat merekomendasikan Anda panduan resmi Ubuntu untuk membuat paket: http://packaging.ubuntu.com

Ini BESAR, tetapi Anda akan melihat bahwa Anda mungkin dapat melewatkan sebagian besar teks itu (tergantung pada paket apa yang akan Anda buat). Pada dasarnya, proses pengemasan terdiri dari bagian-bagian ini (semua dijelaskan dengan jelas dalam Panduan) :

  1. Init beberapa alat yang digunakan untuk membangun paket.
  2. Dapatkan sumbernya
  3. Buat direktori ./debian dan isi dengan data yang diperlukan
  4. Bangun paket dengan debuild [Itu seharusnya membuat satu set file, termasuk * .dsc, * _source.build, * _source.changes, yang bertanggung jawab atas data tentang paket, dan bagaimana menanganinya (Anda juga akan memiliki sumber .tar.gz)]
  5. Uji apakah semuanya berfungsi dengan menjalankan pbuilder secara lokal (ini akan mengambil semua file yang disebutkan di atas dan mencoba menggabungkannya menjadi paket .deb, dengan secara otomatis membangun sumber dengan bantuan AutoTools - itulah sebabnya mereka sangat penting untuk pengemasan [terus terang - tidak - Anda dapat bergaul tanpa mereka atau dengan beberapa alternatif, tetapi itulah pendekatan yang paling mudah, dan yang lain mungkin memerlukan beberapa pengaturan lanjutan, karena Anda harus mengajari pembangun cara membangun sumber (menggunakan file ./debian/rules) ) - tapi itu bukan untuk pemula] ) - jika Anda hanya ingin mendapatkan paket deb, itu selesai.

Sekarang Anda harus mengunggahnya ke PPA Anda, yang dijelaskan di halaman bantuan ini: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Gunakan dput untuk mengunggah file-file ini ke Launchpad
  2. Launchpad akan menjalankan pbuilder di komputer mereka , dan menghasilkan paket di lingkungan yang bersih
  3. Akhirnya, paket akan muncul di PPA.

Seperti yang Anda lihat, membuat PPA tidak semudah itu . Tapi jangan takut , itu juga tidak sulit. Selain itu, saya sarankan Anda untuk tidak mendorong pengembang untuk menggunakan PPA, karena mungkin mereka tidak akan mendengarkan Anda, karena mereka perlu melakukan beberapa pekerjaan tambahan (dan jika mereka ingin mereka sudah melakukannya), tetapi Anda dapat ingin mencoba untuk mendukung pengembang Ubuntu dan seluruh komunitas dan menyediakan mereka dengan paket yang telah Anda siapkan :)

Semoga sukses dengan membuat paket, semoga jawaban saya bermanfaat :)

Temanmu, Rafał Cieślak

Rafał Cieślak
sumber
Bagaimana Anda bisa membuat PPA non-Launchpad, di-host di infrastruktur Anda sendiri? Apakah ini hanya server web sederhana dengan struktur direktori yang sesuai?
Prof. Moriarty
apakah contoh brainf * ck benar - benar diperlukan?
Camden
5
  • Sebelum Anda dapat mengunggah paket Anda, Anda harus mengaturnya untuk .debkemasan, lihat Ubuntu PackagingGuide .

  • Setelah Anda dapat membuat paket untuk perangkat lunak Anda, lihat dokumentasi PPA Launchpad . Ini akan memandu Anda dari pembuatan PPA untuk mengunggah paket Anda.

Yesaya
sumber