Làm cách nào để tạo gói meta tự động cài đặt các gói khác?


54

Tôi muốn có thể tạo một gói không chứa bất kỳ mã hoặc chương trình nào, nhưng thay vào đó cài đặt các gói khác tồn tại trong kho trên máy tính, cách thức ubuntu-restricted-extrasgói đó hoạt động?

Câu trả lời:


47

Một gói meta như thế này có thể được tạo bằng một công cụ được gọi là equivs sẽ tạo ra một gói chỉ với thông tin phụ thuộc.

Đầu tiên, tạo một thư mục:

mkdir my-metapackage
cd my-metapackage/

Bây giờ chạy chương trình:

equivs-control ns-control

Nó sẽ tạo một tệp gọi là ns-control, mở tệp này bằng trình soạn thảo văn bản của bạn. Tệp điều khiển mà bạn tạo nên được sửa đổi Dependshoặc Recommendsdòng của nó để phụ thuộc vào các gói bạn muốn cài đặt:

Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(Chỉ là một ví dụ, bạn nên bao gồm thêm thông tin)

Và cuối cùng, xây dựng gói bằng cách chạy

equivs-build ns-control

Gói của bạn được đặt tại my-metapackage/my-metapackage_1.0_all.deb.

Nếu bạn cũng muốn tạo một gói nguồn, --fulltùy chọn có thể được chuyển đến equivs-build, ví dụ equivs-build --full ns-control. Điều này sẽ sử dụng debuild và cũng tạo các tệp .dsc & .tar.gz.

Để tạo tệp .changes nguồn mà bạn có thể tải lên PPA, giải nén & xây dựng gói nguồn với

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

Nếu Bảo trì mà bạn đặt trong điều khiển ns khớp với khóa GPG của bạn, thì nó sẽ tạo và ký vào tệp my-metapackage_1.0_source.changes để bạn chuyển sang PPA của bạn


Cảm ơn nhiều. Tôi rất có thể sẽ kiểm tra điều này sau, nhưng cho đến nay, các hướng dẫn đã làm việc. :)
Thomas Ward

2
Nó hoạt động hoàn hảo!
Stefano Palazzo

Cảm ơn câu trả lời, ajmitch, nhưng chỉ vì lý do, tôi sẽ chỉ ra rằng nếu bạn có một ~/.devscriptstệp và xác định cụ thể một khóa GPG khác để sử dụng trong tệp devscripts, nó sẽ QUÁ TRÌNH quá trình dpkg / debuild và có nó sử dụng khóa GPG cụ thể được chỉ định trong .devscripts. Cũng như một điểm đáng chú ý cho câu cuối cùng trong câu trả lời của bạn
Thomas Ward

Tôi nhận thấy rằng việc đặt các gói bên dưới Depends:giúp cài đặt tốt nếu và chỉ khi các gói ở đó; nó không cài đặt chúng nếu chúng không có trên máy của tôi. Để cài đặt chúng, tôi đã sử dụng Providesthay thế và nó hoạt động như một bùa mê. Xem mã của tôi (chỉ thay đổi nó): github.com/palladius/debian-packages/blob/master/ mẹo
Riccardo
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.