Bagaimana cara membuat paket meta yang secara otomatis menginstal paket lain?

54

Saya ingin dapat membuat paket yang tidak mengandung kode atau program itu sendiri, tetapi menginstal paket lain yang ada di repositori ke komputer, seperti bagaimana ubuntu-restricted-extraspaket itu?

Thomas Ward
sumber

Jawaban:

47

Paket meta seperti ini dapat dibuat dengan alat yang disebut equivs yang akan membuat paket dengan informasi ketergantungan saja.

Pertama, buat direktori:

mkdir my-metapackage
cd my-metapackage/

Sekarang jalankan program:

equivs-control ns-control

Ini akan membuat file bernama ns-control, buka file ini dengan editor teks Anda. File kontrol yang Anda hasilkan harus dimodifikasi Dependsatau Recommendsgaris - garisnya bergantung pada paket yang ingin Anda instal:

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!

(Sebagai contoh, Anda harus memasukkan lebih banyak informasi)

Dan akhirnya, bangun paket dengan menjalankan

equivs-build ns-control

Paket Anda terletak di my-metapackage/my-metapackage_1.0_all.deb.

Jika Anda juga ingin membuat paket sumber, --fullopsi dapat diteruskan ke equivs-build, misalnya equivs-build --full ns-control. Ini akan menggunakan debuild & juga membuat file .dsc & .tar.gz.

Untuk membuat file .changes sumber yang dapat Anda unggah ke PPA, ekstrak & buat paket sumbernya dengan

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

Jika Maintainer yang Anda atur di ns-control cocok dengan kunci GPG Anda, itu harus membangun & menandatangani file my-metapackage_1.0_source.changes untuk Anda transfer ke PPA Anda

ajmitch
sumber
Terimakasih banyak. Saya kemungkinan besar akan menguji ini nanti, tetapi sejauh ini, instruksinya berhasil. :)
Thomas Ward
2
Ini bekerja dengan sempurna!
Stefano Palazzo
Terima kasih atas jawabannya, ajmitch, tetapi hanya karena alasan, saya akan menunjukkan bahwa jika Anda memiliki ~/.devscriptsfile dan secara khusus mendefinisikan kunci GPG yang berbeda untuk digunakan dalam file devscripts, itu akan MENGATASI proses dpkg / debuild dan memilikinya gunakan kunci GPG spesifik yang ditentukan .devscripts. Sama seperti poin penting untuk kalimat terakhir dalam jawaban Anda
Thomas Ward
Saya perhatikan bahwa meletakkan paket-paket di bawah Depends:membuat instalasi menjadi baik jika dan hanya jika ada paket; itu tidak menginstal mereka jika mereka tidak ada di mesin saya. Untuk menginstalnya, saya menggunakan Providessebagai gantinya dan itu berfungsi seperti pesona. Lihat kode saya (baru saja mengubahnya): github.com/palladius/debian-packages/blob/master/…
Riccardo