Có cách nào dễ dàng để tự động vá các nguồn Ubuntu khi chúng có sẵn và tải lên PPA không?


9

Tôi đang tìm kiếm một công cụ để làm như sau:

  • Tự động phát hiện các bản cập nhật cho một tập hợp các gói nguồn (cụ thể là gtk + 2 và gtk + 3)
  • tải gói nguồn
  • áp dụng các bản vá tùy chỉnh của riêng tôi cho nguồn
  • cam kết bản vá đúng cách ( dpkg-source --commit [something-or-other]?)
  • nếu tải thành công chúng lên PPA trên Launchpad (sau đó tôi có thể trỏ hệ thống của mình theo cách thông thường).

Launchpad có thể làm tất cả điều đó cho tôi?

Nếu không, có một công cụ sẽ tự động làm tất cả những điều đó từ một công việc định kỳ không?

Không thực hiện được những điều trên, tôi sẽ tự mình gõ một cái gì đó, nhưng tôi cần những lệnh nào:

  • phát hiện và tải về các bản cập nhật gói nguồn? (Tôi thích thứ gì đó như (bzr | git) kéo hơn là phải lấy nguồn một bản sao hoàn toàn mới mỗi lần)
  • tự động xác nhận bản vá cục bộ (Tôi sẽ sử dụng cùng một mô tả cam kết mỗi lần)?
  • tải các nguồn không tương tác lên PPA?

Tôi đã tìm thấy một câu hỏi ( Cách thích hợp để vá Wine cho PPA tùy chỉnh là gì? ), Tương tự nhưng các bước trong câu trả lời về cơ bản vẫn là thủ công và tương tác. Một phiên bản hoàn toàn rảnh tay cộng với việc tự động phát hiện các bản cập nhật nguồn sẽ giúp ích rất nhiều.

Câu trả lời:


2

Chà, có vẻ như công thức đóng gói là cách để đi đến đây. Về cơ bản, các công thức đóng gói có thể tự động tạo các gói nguồn Ubuntu và tải chúng lên PPA bất cứ khi nào chi nhánh bzr trên Launchpad thay đổi. Các tài liệu trực tuyến là khá tốt, nhưng tôi sẽ đưa ra một vài ví dụ ...

Đầu tiên, bạn chỉ định một nhánh để theo dõi (ví dụ lp:gtk3:) và sau đó thêm một lệnh để lồng nhánh bao bì Debian của riêng bạn vào nhánh đó. Hãy xem công thức này tôi đã tạo cho các bản dựng Inkscape hàng ngày.

# 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

Công thức này tạo ra một gói Ubuntu mỗi ngày bằng cách sử dụng nguồn ngược dòng mới nhất cho Inkscape, nhưng sao chép các hướng dẫn đóng gói Debian tùy chỉnh từ lp:~inkscape.dev/inkscape/debian-packagingnhánh vào thư mục con có tên là " debian".

Trang công thức đóng gói trên Launchpad cho phép bạn chỉ định PPA nào sẽ tự động tải các gói của bạn lên. Trong trường hợp của chúng tôi, nó được tải lên ở đây .

Là một cách tiếp cận khác, bạn có thể dựa vào công thức của mình trên gói Ubuntu hiện tại thay vì trực tiếp trên nguồn ngược dòng. Ví dụ , lp:ubuntu/gtk+3.0. Sau đó, bạn cần tạo một nhánh của mã này và cam kết mọi sửa đổi bạn yêu cầu. Hãy gọi nó là lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-buildví dụ. Sau đó, bạn sẽ tạo một công thức để tự động hợp nhất các thay đổi của mình thay vì hướng dẫn đóng gói lồng. Công thức sẽ trông giống như:

# 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

Do đó, công thức này sẽ tự động xây dựng gói nguồn Ubuntu tùy chỉnh và tải nó lên PPA của bạn bất cứ khi nào có thay đổi trong gói Ubuntu chính thức.

Nếu bạn thực hiện phương pháp "hợp nhất" này, thì bạn có hai tùy chọn để áp dụng các bản vá của mình. Hoặc bạn chỉ cần chỉnh sửa mã nguồn ngược dòng trực tiếp trong chi nhánh của mình và để bzr đảm nhiệm việc hợp nhất nó hoặc bạn có thể tạo các tệp vá trong debian/thư mục bằng quilt. Mỗi cái đều có ưu điểm / nhược điểm riêng. Cách tiếp cận trước đây thông minh hơn một chút ... nếu một trong các bản vá của bạn được nhà phát triển ngược dòng chấp nhận, thì việc hợp nhất thường sẽ vẫn hoạt động và gói Ubuntu sẽ xây dựng OK. Cách tiếp cận thứ hai cho phép bạn xử lý các bản vá của mình bằng cách sử dụng cách tiếp cận dựa trên Debian tiêu chuẩn để tách mã đóng gói khỏi mã ngược dòng ... tuy nhiên, nếu nhà phát triển ngược dòng chấp nhận một trong các bản vá của bạn thì quilt sẽ không thể áp dụng (trùng lặp) Bản vá và gói sẽ không thể xây dựng.


Nhưng phiên bản gtk-3 nào lp:ubuntu/gtk+3.0theo dõi? Phiên bản phát triển ổn định hay hiện tại?
Khurshid Alam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.