Làm cách nào để cập nhật các gói Ubuntu từ nguồn?


8

Tôi muốn tạo một phiên bản cập nhật của gói quản lý mạng openconnect trong Ubuntu. Tôi cần phải có được nguồn gói mới nhất:

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

Rồi sao? Gói dường như có một cách để tự cập nhật từ mã ngược dòng mới nhất bằng git. Nhưng làm thế nào để tôi có được nó để làm điều đó?


Tôi nghĩ bzr có nghĩa là chợ - bazaar.canonical.com/en
Paul

Câu trả lời:


6

Xây dựng một gói cập nhật từ một chi nhánh bzr có xu hướng khác nhau một số tiền hợp lý tùy thuộc vào người duy trì các chi nhánh hoặc cách thức hoạt động của gói nói chung. Tuy nhiên, dưới đây là một vài hướng dẫn để cập nhật nhanh chóng và bẩn về bất kỳ gói nào, được đẩy lên PPA:

Lấy chi nhánh:

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

Sau đó chuyển sang nó và cập nhật thay đổi:

dch -i

dch -i đơn giản sẽ mở một mục mới trong debian / changelog, tăng phiên bản sửa đổi thêm một. Nếu bạn muốn thêm một bản vá, điều đó thật hoàn hảo, nhưng nếu bạn muốn cập nhật lên phiên bản mới hơn của phần mềm ngược dòng, bạn sẽ cần cập nhật số phiên bản trước dấu gạch ngang (-). Giả sử, một phiên bản trong 1.2-0ubfox1 , nếu bạn bắt đầu dch -i, nó sẽ thay đổi thành 1.2-0ubfox2 , rất tốt để vá nhưng nếu bạn cần một phiên bản mới, bạn có thể muốn thay đổi thành 1.3-0ubfox1 .

Nếu bạn cần vá, bây giờ là thời gian để thêm các thay đổi của bạn. Trong các nhánh chỉ có debian / thư mục, bạn có thể sử dụng bzr bd-do (yêu cầu gói bzr-builddeb) để chuyển sang cây công việc nơi bạn có thể thay đổi, sử dụng quilt hoặc bất kỳ hệ thống vá lỗi nào, sau đó "thoát 0" để có những thay đổi của bạn được sao chép lại.

Nếu bạn muốn có một phiên bản ngược dòng mới, một khi thay đổi đã được thay đổi, bạn có thể chạy một lệnh tương tự như lệnh này:

debian/rules get-orig-source

Điều này thường sẽ tải xuống tarball đúng từ nhà xuất bản ngược dòng để giúp bạn bắt đầu. Nếu cần thay đổi thêm, hãy tiến hành như trên để "vá" hoặc thay đổi các tệp khác trong thư mục debian / , nếu không bạn đã gần hoàn tất:

bzr bd -S

bzr bd sẽ chăm sóc xây dựng. Gọi nó không có đối số bắt đầu xây dựng trên hệ thống của bạn, trong khi gọi nó bằng -S bảo nó chuẩn bị gói nguồn, sẽ bao gồm tệp ..._ source.changes , đó là những gì bạn muốn tải lên PPA của mình (sử dụng dput ppa: <yourname> / <tên của ppa của bạn> <thay đổi tệp> để làm điều đó).


Đối với các gói NetworkManager, nó hơi khác một chút. Chúng ta hãy xem openconnect cụ thể:

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

Hãy chắc chắn rằng bạn cũng có tất cả các phụ thuộc của bản dựng: sudo get-build-deps

Với chi nhánh được truy xuất, điều này sẽ đọc tệp debian / control và cố gắng tải xuống mọi thứ bạn cần để xây dựng trình quản lý mạng-openconnect. Bạn có thể cần git quá mặc dù. Khi đã xong, hãy chạy get-orig-source để chỉ lấy tarball của ảnh chụp nhanh mới nhất từ ​​git:

debian/rules get-orig-source

Bạn sẽ thấy văn bản bay qua và một tarball có số phiên bản dài xuất hiện. Đó là mã mới nhất mà bạn có thể nhận được cho bước sóng.

Sau đó, bạn sẽ cần cập nhật thay đổi với số phiên bản từ tarball, chỉ cần giữ nguyên hậu tố -0ubfox1 .

Hoặc, thay đổi debian / changelog với số phiên bản cụ thể bạn muốn, sau đó chạy: debian / quy tắc get-current-source

Vì các plugin không thay đổi nhiều, bạn có thể chỉ cần xây dựng gói từ đó, sử dụng bzr bd như trên. Nếu không, áp dụng bất kỳ thay đổi cần thiết như trên.

Đừng quên cam kết bzr sau khi bạn đã thay đổi.

Trước tiên tôi quên thêm, đừng ngần ngại sử dụng hệ thống đề xuất hợp nhất ( Đề xuất hợp nhất liên kết trang của chi nhánh của bạn trên LP) khi những thay đổi bạn thực hiện có thể mang lại lợi ích cho người khác. Thông thường, bạn chỉ có thể đề xuất hợp nhất với chi nhánh mà bạn dựa trên (ví dụ: lp: ~ quản lý mạng / quản lý mạng / openconnect-ub Ubuntu.head trong trường hợp này).


Hình tôi phải quên một điều: đừng ngại đưa ra những thay đổi của bạn để sáp nhập vào chi nhánh đóng gói chính nếu đó là cách sửa chữa bao bì (điều này bao gồm cả các bản vá), để mọi người đều có thể hưởng lợi từ những thay đổi! :)
Mathieu Trudel-Lapierre

2

Ok cập nhật về cách kéo mã từ bệ phóng

chi nhánh bzr lp: ~ quản lý mạng / quản lý mạng / openconnect-ub Ubuntu.head

Liều này là gì kéo mã từ lp (dịch vụ lưu trữ launchpad). Chúng ta cần tìm nơi mã đang ngồi.

man bzr
343 #type 343 khi trang man xuất hiện.

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.

Hãy thử thay đổi thư mục bạn muốn làm việc hoặc thêm thư mục nơi bạn và mã đi đến.

cd / home / [tên người dùng của bạn] / [đường dẫn đến thư mục phát triển]
hoặc chi nhánh bzr lp: ~ quản lý mạng / quản lý mạng / openconnect-ub Ubuntu.head / home / [tên người dùng của bạn] / [đường dẫn đến thư mục phát triển]
ví dụ: chi nhánh bzr

Nếu bạn đã làm điều này, bạn có thể có một thư mục trong thư mục nhà của bạn

ls ~
./openconnect-ubfox.head

Cần có một fiel README trong thư mục đó để xem những gì nên có trong đó có một cái nhìn mã dự án , đây là một liên kết đến README.source

README nên có hướng dẫn xây dựng dự án cá nhân đó.

Các công cụ bzr hữu ích khác để cài đặt

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

Bzr-explorere sẽ cho phép bạn duyệt các kho bzr của bạn mà bạn đã tạo trên máy của mình trong gui.

Một lưu ý khác. Bạn có thể cần phải kéo toàn bộ nguồn quản lý mạng để xây dựng một kết nối một thành phần Có thể có nhiều phụ thuộc và giữa các thành phần khác nhau.

Bạn cần tạo một bản sửa lỗi cho gói opneconnect hiện tại sau đó tạo một bản vá bằng cách sử dụng những gì mọi công cụ khác nhau bạn sử dụng. Và gửi nó cho người bảo trì gói.

Hoặc nếu bạn muốn sử dụng gói sửa lỗi mới cục bộ, bạn muốn tạo tệp gói .deb.

Tạo một gói này khá liên quan đọc các liên kết sau


Cảm ơn. Nhưng tôi vẫn không chắc chắn làm thế nào để gỡ xuống mã quản lý mạng mới nhất từ ​​git. Các tập tin tôi kéo xuống với bzr có một tập lệnh trong debian / quy tắc dường như có thể thực hiện thao tác kéo git nhưng tôi không biết cách chạy tập lệnh chính xác.
James Ward

@james launchpad lấy nguồn ngược dòng từ sự lặp lại git của dự án nework-manager được lưu trữ bởi cộng đồng gnome. Vì vậy, bạn không cần phải sử dụng git để kéo kho lưu trữ. đọc tài liệu bzr và làm một số hướng dẫn để có ý tưởng về cách thức hoạt động của bzr. Kiểm tra khôn ngoan khác git over tại stackoverflow
nelaaro

@james đơn giản hơn có thể là chỉ cần tải xuống tệp .tar.gz ở cuối trang này hoặc sử dụng liên kết này
nelaaro

Có vẻ như bzr có một cách đơn giản để phân nhánh và sau đó cập nhật lên nguồn gốc mới nhất.
James Ward
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.