Cây phụ thuộc gói nguồn Ubuntu


10

Tôi có một số gói. Hãy gọi cho họ A.deb, B.debC.deb. Mỗi gói có một gói nguồn tương ứng A.dscA.tar.gz, B.dscB.tar.gz, C.dscC.tar.gz. Các gói phụ thuộc lẫn nhau: C.debphụ thuộc B.debB.debphụ thuộc vàoA.deb

Nếu tôi sửa đổi A.deb, tôi cần phải xây dựng lại B.debhoặc nó sẽ không hoạt động. Điều tương tự cũng xảy ra B.debC.deb. Có cách nào để tự động hóa quá trình này? Có lẽ có một công cụ hoặc kịch bản sẽ làm điều đó cho tôi? Nếu không, làm thế nào tôi có thể tự động hóa nó?

Ngoài ra, không có gói của tôi.


2
Bạn đang nói "C.deb phụ thuộc vào B.deb và B.deb phụ thuộc vào A.deb", vì vậy tôi đoán bạn đang đề cập đến các gói nhị phân ? Ngoài ra, bạn đang đề cập đến việc biên dịch B với một thư viện bên ngoài trong A? Nếu vậy, đơn giản là không cần phải xây dựng lại gói, vì nhà phát triển của A đã không thay đổi giao diện của thư viện đó (vì vậy, điều này tùy thuộc vào người quản lý của A, chứ không phải cho người bảo trợ của B ; nếu bạn là nhà phát triển của tất cả chúng thì chỉ cần duy trì việc thực hiện A bất khả tri khỏi giao diện của nó càng nhiều càng tốt, để khả năng tương thích được đảm bảo tối đa).
kos

1
Tôi không làm công cụ ở cấp độ này trên Linux, nhưng tôi nghĩ đó là những gì makeđã được phát minh ra. Makefile bao gồm các quy tắc xác định những gì cần được biên dịch lại / xây dựng lại dựa trên những gì đã thay đổi.
Joe

1
@xiaodongjie - bạn là một người thân yêu với một câu hỏi thân yêu - vậy bạn đã biết bash rồi và bash-scripting chưa? ---> bằng cách này, bạn có thể viết một tập lệnh nhỏ với vòng lặp trường hợp chuyển đổi và sau đó giống như trong thang máy xây dựng thành các trường hợp khác nhau phải làm gì với các gói. Không có kịch bản của tôi. Bạn thông minh như chúng ta thông minh - hãy cười. - kịch bản này tất nhiên có thể được thiết lập như một daemon (để hoạt động tự động).
dschinn1001

1
Một @Joe đã nói: sử dụng makevà như bạn đã nói, @xiaodongjie, các mục tiêu thực hiện sẽ là các gói kết quả, với các phụ thuộc gói-gói của chúng được khai báo và hành động liên quan cho mỗi mục tiêu sẽ là lệnh tạo ra gói . Cài đặt make-docvà gõ info makeđể đọc tất cả về nó.
Ralph Rönnquist

1
Còn việc tạo bí danh cho quá trình xây dựng thì sao?
Wilhelm Erasmus

Câu trả lời:


3

Bạn sẽ sử dụng Makefile với các phụ thuộc xây dựng được khai báo, ví dụ như sau:

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

Lưu ý rằng thụt lệnh là TAB.

Với điều đó Makefile, bạn sẽ sử dụng lệnh

make

và điều này sẽ tìm ra gói nào sẽ được xây dựng và theo thứ tự, sau đó xây dựng chúng, tất cả phụ thuộc vào dấu thời gian của các tệp. Ví dụ: nếu nói B.tar.gzcó dấu thời gian muộn hơn B.deb(nghĩa là gói Bcó nguồn mới), thì điều đó trước tiên B.debsẽ được xây dựng lại và vì điều đó sẽ khiến nó bị đóng dấu muộn hơn C.deb, nó cũng sẽ C.debđược xây dựng lại.


1

Vâng, có lẽ tôi đang hoàn toàn mất tích quan điểm của bạn, nhưng nó có vẻ như bạn đang gói biên dịch lại A và muốn biên dịch lại gói B & C, mà tôi sẽ chỉ đơn giản là chúng ta một makefile cho.


Bạn có thể giải thích chi tiết hơn?
xiaodongjie

hoặc bất kỳ ví dụ.
xiaodongjie
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.