Tôi có một ứng dụng foobar
mà ai đó đã viết một bản vá để thêm một tính năng tôi thích. Làm thế nào tôi có thể sử dụng các bản vá?
Tôi có một ứng dụng foobar
mà ai đó đã viết một bản vá để thêm một tính năng tôi thích. Làm thế nào tôi có thể sử dụng các bản vá?
Câu trả lời:
Các bản vá thường được chứa trong .diff
các tệp, bởi vì các bản vá được tạo bằng diff
lệnh.
Một bản vá là một loạt các phần chèn và xóa vào mã nguồn. Vì lý do này, để sử dụng bản vá, bạn phải xây dựng ứng dụng (ví dụ: "foobar") từ nguồn sau khi áp dụng bản vá. Vì vậy, trong các bước:
1. Nhận gói nguồn cho foobar .
Hầu hết các bản phân phối linux (bản vá nb không phải là duy nhất cho linux) có "gói nguồn" bạn có thể sử dụng cho mục đích này, nhưng vì chúng không đồng nhất, tôi sẽ chỉ đề cập đến định dạng của nguồn gốc ở đây. Nguồn ban đầu không phải là một phần của bản phân phối và có thể khó tìm. Một nơi tốt để bắt đầu là wikipedia, nơi có các bài viết cho nhiều ứng dụng phổ biến và bài viết nên chứa liên kết đến trang chủ với tải xuống nguồn. Bạn cũng có thể tự google. Gói nguồn sẽ được gọi là một cái gì đó như foobar.0.1.tar.bz2
. Giải nén cái này - bây giờ bạn có một thư mục được gọi foobar.0.1
.
2. Thêm bản vá.
Đôi khi các bản vá là các tệp đơn lẻ và đôi khi chúng là một tập hợp của một số tệp. Sao chép chúng vào foobar.0.1
và cd foobar.0.1
. Tiếp theo, bạn cần chạy patch
lệnh. Điều này đọc từ đầu vào tiêu chuẩn, vì vậy bạn muốn dẫn .diff
tập tin vào. Phần khó khăn là xác định những gì sẽ sử dụng cho -p
tùy chọn (nếu không có hướng dẫn với bản vá). Để làm điều đó bạn cần nhìn vào phần đầu của tệp vá. Ví dụ:
--- old/comm.c 2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c 2006-07-07 02:39:24.000000000 +0000
Trong trường hợp này, comm.c
là tên của tệp nguồn sẽ bị thay đổi. Tuy nhiên, lưu ý rằng có một thư mục được gắn vào nó. Vì đây không phải là cùng một thư mục ("cũ" so với "mới"), đây là một manh mối lớn cho thấy phần này của đường dẫn là rác (cho mục đích của chúng tôi). Mục đích của -p
chuyển đổi (xem man patch
) là để loại bỏ tiền tố này. Phải mất một số, là số dấu gạch chéo ( /
) để loại bỏ, với mọi thứ ở giữa; trong trường hợp này, chúng tôi sẽ sử dụng -p1
để giảm đường dẫn xuống chỉ đơn giản comm.c
.
Giả định đó comm.c
thực sự nằm trong cùng một thư mục, đây sẽ là một manh mối khác về việc giải thích của bạn có đúng không. Nếu cả hai dòng này đều src/comm.c
và comm.c
thực sự nằm trong src
thư mục con của cây xây dựng của bạn, thì bạn cần sử dụng -p0
- hãy cẩn thận khi không sử dụng -p
tất cả sẽ loại bỏ TẤT CẢ các dấu gạch chéo. Nếu đường dẫn là tuyệt đối (nghĩa là bắt đầu bằng /
), đó có thể là những gì bạn muốn. Bây giờ áp dụng các bản vá:
patch -p1 < patch.diff
Nguồn hiện đã được sửa đổi. Nếu có nhiều .diff
tệp hơn , hãy áp dụng chúng theo cùng một cách.
3. Xây dựng và cài đặt.
Đây là quá trình bình thường bạn sẽ đi qua để xây dựng một cái gì đó từ nguồn - đầu tiên ./configure
, sau đó make
, make check
, make install
. Trước khi bạn thực hiện lần cuối cùng, nếu bạn đã có bản cài đặt hiện có foobar
, hãy quyết định xem bạn muốn xóa hoặc ghi đè lên điều đó hay cách bạn sẽ giải quyết xung đột đặt tên. Bạn có thể muốn foobar
tham khảo phiên bản mới, vá chứ không phải phiên bản cũ.