Apakah ada cara mudah untuk secara otomatis menambal sumber ubuntu saat tersedia dan mengunggah ke PPA?

9

Saya mencari alat untuk melakukan hal berikut:

  • Secara otomatis mendeteksi pembaruan untuk satu set paket sumber (khususnya gtk + 2 dan gtk + 3)
  • unduh paket sumber
  • terapkan tambalan khusus saya sendiri ke sumber
  • komit tambalan dengan benar ( dpkg-source --commit [something-or-other]?)
  • jika berhasil mengunggahnya ke PPA di Launchpad (yang kemudian dapat saya arahkan ke sistem saya dengan cara biasa).

Bisakah Launchpad melakukan semua itu untuk saya?

Jika tidak, adakah alat yang secara otomatis akan melakukan semua itu dari pekerjaan cron?

Gagal di atas, saya sendiri akan mengetuk sesuatu, tetapi perintah apa yang saya butuhkan:

  • mendeteksi dan mengunduh pembaruan paket sumber? (Saya lebih suka sesuatu seperti (bzr | git) tarik daripada harus apt-get source salinan baru setiap kali)
  • Komit otomatis tambalan secara lokal (saya akan menggunakan deskripsi komit yang sama setiap kali)?
  • mengunggah sumber secara non-interaktif ke PPA?

Saya telah menemukan pertanyaan ( Apa cara yang tepat untuk menambal Anggur untuk PPA khusus? ), Yang serupa tetapi langkah-langkah dalam jawabannya pada dasarnya masih manual dan interaktif. Versi yang benar-benar lepas tangan dan deteksi otomatis pembaruan sumber akan sangat membantu.

Nick Booker
sumber

Jawaban:

2

Ya, sepertinya resep pengemasan adalah cara untuk pergi ke sini. Pada dasarnya, resep pengemasan dapat secara otomatis membuat paket sumber Ubuntu dan mengunggahnya ke PPA setiap kali cabang bzr di Launchpad berubah. The dokumentasi online cukup bagus, tapi saya akan memberikan beberapa contoh ...

Pertama, Anda menentukan cabang untuk dilacak (misalnya, lp:gtk3) dan kemudian menambahkan perintah untuk membuat sarang cabang pengemasan Debian Anda sendiri ke cabang itu. Lihatlah resep ini yang saya buat untuk build harian Inkscape.

# bzr-builder format 0.4 deb-version 1:0.48+devel+{revno}+{revno:packaging}
lp:inkscape
nest packaging lp:~inkscape.dev/inkscape/debian-packaging debian

Resep ini menciptakan paket Ubuntu setiap hari menggunakan sumber hulu terbaru untuk Inkscape, tetapi menyalin instruksi pengemasan Debian yang disesuaikan dari lp:~inkscape.dev/inkscape/debian-packagingcabang ke subfolder yang disebut " debian".

Halaman resep pengemasan pada Launchpad memungkinkan Anda menentukan PPA mana yang akan diunggah secara otomatis ke paket Anda. Dalam kasus kami, itu diunggah di sini .

Sebagai pendekatan alternatif, Anda bisa mendasarkan resep Anda pada paket Ubuntu yang ada daripada langsung pada sumber hulu. Sebagai contoh lp:ubuntu/gtk+3.0,. Anda kemudian perlu membuat cabang kode ini, dan melakukan modifikasi apa pun yang Anda butuhkan. Sebut saja lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build, misalnya. Anda kemudian akan membuat resep untuk secara otomatis menggabungkan perubahan Anda daripada instruksi pengemasan sarang. Resepnya akan terlihat seperti:

# bzr-builder format 0.4 deb-version {debversion}+{date}
lp:ubuntu/gtk+3.0
merge my-custom-build lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build

Oleh karena itu, resep ini secara otomatis membuat paket sumber Ubuntu khusus dan mengunggahnya ke PPA Anda setiap kali ada perubahan dalam paket resmi Ubuntu.

Jika Anda mengambil pendekatan "gabungan" ini, maka Anda memiliki dua opsi untuk menerapkan tambalan Anda. Entah Anda hanya mengedit kode sumber hulu langsung di cabang Anda dan biarkan bzr mengurus penggabungannya, atau Anda bisa membuat file tambalan di dalam debian/folder menggunakan quilt. Masing-masing memiliki kelebihan / kekurangannya sendiri. Pendekatan sebelumnya sedikit lebih pintar ... jika salah satu tambalan Anda diadopsi oleh pengembang hulu, maka penggabungan biasanya akan tetap berfungsi dan paket Ubuntu akan dibangun OK. Pendekatan terakhir memungkinkan Anda menangani tambalan Anda menggunakan pendekatan berbasis Debian standar untuk menjaga kode kemasan terpisah dari kode hulu ... namun, jika pengembang hulu mengadopsi salah satu tambalan Anda maka quilt tidak akan dapat menerapkan (duplikat) tambalan dan paket akan gagal dibangun.

Alex Valavanis
sumber
Tetapi versi gtk-3 mana yang lp:ubuntu/gtk+3.0dilacak? Versi pengembangan stabil atau saat ini?
Khurshid Alam