Bagaimana cara saya memperbarui paket Ubuntu dari sumber?

8

Saya ingin membuat versi terbaru dari paket network-manager-openconnect di Ubuntu. Tampaknya saya perlu mendapatkan sumber paket terbaru:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Lalu apa? Paket tersebut tampaknya memiliki cara untuk memperbarui diri dari kode hulu terbaru menggunakan git. Tetapi bagaimana cara saya melakukannya?

James Ward
sumber
Saya pikir bzr berarti bazaar - bazaar.canonical.com/en
Paul

Jawaban:

6

Membangun paket yang diperbarui dari cabang bzr cenderung berbeda jumlah yang adil tergantung pada siapa yang memelihara cabang atau bagaimana paket bekerja secara umum. Namun, berikut adalah beberapa panduan untuk pembaruan cepat dan kotor dari hampir semua paket, untuk didorong ke PPA:

Dapatkan cabang:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Kemudian beralih ke sana, dan perbarui changelog:

dch -i

dch -i hanya akan membuka entri baru di debian / changelog, meningkatkan revisi versi per satu. Jika Anda ingin menambahkan tambalan, itu sempurna, tetapi jika Anda ingin memperbarui ke versi yang lebih baru dari perangkat lunak hulu, Anda harus memperbarui nomor versi sebelum tanda hubung (-). Katakanlah, versi dalam 1.2-0ubuntu1 , jika Anda memulai dch -i itu akan berubah menjadi 1.2-0ubuntu2 , yang bagus untuk menambal tetapi jika Anda memerlukan versi baru Anda mungkin ingin mengubahnya ke 1.3-0ubuntu1 .

Jika Anda perlu menambal, sekaranglah saatnya untuk menambahkan perubahan Anda. Di cabang yang hanya memiliki debian / direktori, Anda dapat menggunakan bzr bd-do (memerlukan paket bzr-builddeb) untuk beralih ke pohon kerja di mana Anda dapat melakukan perubahan, gunakan quilt atau sistem patch apa pun, kemudian "keluar 0" untuk minta perubahan Anda disalin kembali.

Jika Anda menginginkan versi upstream baru, setelah changelog diubah, Anda kemungkinan akan menjalankan perintah yang mirip dengan ini:

debian/rules get-orig-source

Ini biasanya akan mengunduh tarball yang tepat dari penerbit hulu untuk membantu Anda memulai. Jika perubahan lebih lanjut diperlukan, lanjutkan seperti di atas untuk "menambal" atau mengubah file lain di direktori debian / , jika tidak Anda hampir selesai:

bzr bd -S

bzr bd akan mengurus gedung. Menyebutnya tanpa argumen mulai membangun di sistem Anda, sementara memanggilnya dengan -S memberitahu untuk menyiapkan paket sumber, yang akan mencakup file ..._ source.changes yang ingin Anda unggah ke PPA Anda (gunakan dput ppa: <namaanda> / <nama ppa Anda> <ubah file> untuk melakukannya).


Untuk paket NetworkManager, ini sedikit berbeda. Mari kita lihat openconnect secara khusus:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect

Pastikan Anda juga memiliki semua dependensi build: sudo get-build-deps

Dengan cabang diambil, ini akan membaca file debian / control dan mencoba mengunduh semua yang Anda butuhkan untuk membangun network-manager-openconnect. Anda mungkin perlu git juga. Setelah selesai, jalankan get-orig-source untuk mendapatkan tarball snapshot terbaru dari git:

debian/rules get-orig-source

Anda akan melihat teks terbang oleh dan tarball dengan nomor versi panjang muncul. Itu kode terbaru yang bisa Anda dapatkan untuk nm-openconnect.

Anda kemudian perlu memperbarui changelog dengan nomor versi dari tarball, agar sufiks -0ubuntu1 tetap utuh.

Atau, ubah debian / changelog dengan nomor versi spesifik yang Anda inginkan, kemudian jalankan: debian / rules get-current-source

Karena plugin tidak banyak berubah, Anda harus dapat membangun paket dari sana, menggunakan bzr bd seperti di atas. Jika tidak, terapkan perubahan apa pun yang diperlukan seperti di atas.

Jangan lupa untuk melakukan bzr setelah Anda membuat perubahan.

Pertama-tama saya lupa menambahkan, jangan ragu untuk menggunakan sistem proposal penggabungan (Proposal untuk menggabungkan tautan halaman cabang Anda di LP) ketika perubahan yang Anda buat dapat bermanfaat bagi orang lain. Biasanya Anda bisa mengusulkan penggabungan cabang yang menjadi basis Anda (mis. Lp: ~ network-manager / network-manager / openconnect-ubuntu.head dalam kasus ini).

Mathieu Trudel-Lapierre
sumber
Berpikir saya harus melupakan sesuatu: jangan takut untuk membawa perubahan Anda untuk bergabung ke cabang kemasan utama jika itu adalah perbaikan pengemasan (ini termasuk patch juga), sehingga semua orang dapat mengambil manfaat dari perubahan! :)
Mathieu Trudel-Lapierre
2

Ok diperbarui tentang cara menarik kode dari panel peluncuran

bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head

Apa dosis ini adalah menarik kode dari lp (layanan hosting launchpad). Kita perlu menemukan di mana kode itu berada.

man bzr
343 #type 343 saat halaman manual muncul.

bzr branch FROM_LOCATION [TO_LOCATION]        
       If  the TO_LOCATION is omitted, the last component of the FROM_LOCATION
       will be used.  In other words, "branch ../foo/bar" will attempt to cre‐
       ate  ./bar.   If the FROM_LOCATION has no / or path separator embedded,
       the TO_LOCATION is derived from the FROM_LOCATION by stripping a  lead‐
       ing   scheme   or  drive  identifier,  if  any.  For  example,  "branch
       lp:foo-bar" will attempt to create ./foo-bar.

Coba ubah ke direktori tempat Anda ingin bekerja atau tambahkan direktori tempat Anda dan kode itu dituju.

cd / home / [nama pengguna Anda] / [path ke development dir]
atau bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / [nama pengguna Anda] / [path ke development dir]
mis. cabang bzr lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / joe / proyek / network-palungan / dev

Jika Anda sudah melakukan ini, Anda mungkin memiliki direktori di direktori home Anda

ls ~
./openconnect-ubuntu.head

Seharusnya ada README fiel di direktori itu untuk melihat apa yang seharusnya ada lihat kode proyek , di sini ada tautan ke README.source

README harus memiliki instruksi untuk membangun proyek tersebut.

Alat bzr berguna lainnya untuk menginstal

sudo apt-get install bzr-builddeb bzr-builder bzr-explorer quilt

Bzr-explorere akan membiarkan Anda menelusuri repositori bzr yang telah Anda buat pada mesin Anda dalam gui.

Catatan lain. Anda mungkin perlu menarik seluruh sumber palungan jaringan untuk membangun openconnect satu komponen. Mungkin ada banyak ketergantungan dan antara komponen yang berbeda.

Anda perlu membuat perbaikan untuk paket opneconnect saat ini kemudian membuat tambalan menggunakan apa yang digunakan setiap alat berbeda. Dan kirimkan ke pengelola paket.

Atau jika Anda ingin menggunakan paket baru Anda secara lokal, Anda ingin membuat file paket .deb.

Membuat paket ini cukup melibatkan membaca tautan berikut

nelaaro
sumber
Terima kasih. Tapi saya masih tidak yakin bagaimana cara menarik kode network-manager-openconnect terbaru dari git. File-file yang saya tarik dengan bzr memiliki skrip dalam debian / aturan yang tampaknya dapat melakukan git pull tetapi saya tidak tahu cara menjalankan skrip dengan benar.
James Ward
@james launchpad menarik sumber hulu dari repositori git dari proyek nework-manager yang di-host oleh komunitas gnome. Jadi Anda tidak perlu menggunakan git untuk menarik repositori. baca dokumentasi bzr dan lakukan beberapa tutorial untuk mendapatkan ide bagaimana bzr bekerja. Lihat juga git di stackoverflow
nelaaro
@james mungkin lebih sederhana dengan hanya mengunduh file .tar.gz di bagian bawah halaman ini atau langsung menggunakan tautan ini
nelaaro
Sepertinya bzr memiliki cara sederhana untuk bercabang dan kemudian memperbarui ke sumber asli terbaru.
James Ward