RPM: Set Diperlukan: somepackage> = 0.5.0 DAN somepackage <0.6.0

14

Apakah mungkin untuk menetapkan persyaratan versi ketergantungan seperti ini:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Jadi hanya beberapa paket 0,5.x akan diinstal secara otomatis.

coxx
sumber

Jawaban:

18

Ya, sangat mudah melakukannya.

Tulis saja:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

ke dalam .specfile Anda .

Menambahkan Persyaratan Versi

Ketika sebuah paket memiliki kebutuhan yang sedikit lebih ketat, mungkin diperlukan versi tertentu dari suatu paket. Yang diperlukan hanyalah menambahkan nomor versi yang diinginkan, didahului oleh salah satu operator perbandingan berikut:

  • Membutuhkan paket dengan versi kurang dari versi yang ditentukan.

  • Membutuhkan paket dengan versi kurang dari atau sama dengan versi yang ditentukan.

  • Membutuhkan paket dengan versi yang sama dengan versi yang ditentukan.

  • Membutuhkan paket dengan versi yang sama atau lebih besar dari versi yang ditentukan.

  • Membutuhkan paket dengan versi lebih besar dari versi yang ditentukan.

Melanjutkan dengan contoh kami, misalkan versi bilah paket yang diperlukan sebenarnya harus paling tidak 2.7, dan bahwa baz paket harus versi 2.1 - tidak ada versi lain yang akan melakukannya. Begini tampilannya garis tag: membutuhkan: bar> = 2.7, baz = 2.1

Sumber: http://rpm.org/user_doc/more_dependencies.html

Waspadai Kemampuan / Ketersediaan Virtual

Sistem yang dijelaskan di atas berfungsi untuk sebagian besar paket; namun, jika paket yang ingin Anda perlukan disediakan sebagai [kemampuan virtual] [1] atau disediakan (mis. "Menyediakan:" kata kunci) dengan paket nama yang berbeda (yang tidak saling bertentangan), maka Anda mungkin berakhir dengan dua paket berbeda diinstal, masing-masing secara individual memenuhi salah satu persyaratan Anda. Misalnya, jika file spesifikasi Anda berisi:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

Mungkin menghasilkan (jika Anda memiliki paket-paket ini tersedia untuk yum) instalasi:

  • postgresql-server 8.1.23-6.el5_8 (postgresql-server <9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5 (postgresql-server> = 8.4)

Tetapi tidak akan menginstal postgresql84-server, yang mungkin merupakan paket yang Anda harapkan telah diinstal.

(Dalam hal ini solusinya hanya memerlukan server postgresql84; namun, ada beberapa contoh lain yang tidak memiliki solusi mudah.)

MikeyB
sumber
saya memiliki ketergantungan virtual pada "somethingdev (nama)> = 1.0.14" tetapi ketika saya pergi ke yum install ... dependensi virtual tidak menginstal versi yang diperlukan meskipun dalam repo RPM. saya harus mengubah ketergantungan virtual ke nama RPM "something-name-dev> = 1.0.14" dan kemudian berhasil.
Trevor Boyd Smith
1

Tidak jelas bagi saya jika Anda mencoba membangun sebuah paket atau menginstal paket dan "membatasi" ketergantungannya.

Saya tidak melihat cara untuk membuat case yang kedua tanpa membangun kembali paket.

Anda dapat mengambil SRPM dan mengedit file spek dan untuk menambah / memodifikasi entri Diperlukan (Anda ingin paket tertentu 0,5.x, bukan?) Ke sesuatu seperti ini:

Requires: somepackage = 0.5.0

dan kemudian membangun kembali dengan

rpmbuild -bb -v yourpackage.spec

Jika Anda tidak pernah melakukannya, itu terlihat menakutkan tetapi itu memecahkan masalah Anda. Ingatlah bahwa jika membuat paket publik untuk sebuah distro, Anda mungkin ingin membaca panduannya karena mengatur ketergantungan dengan cara ini umumnya tidak dianjurkan.

sebelk
sumber
2
Saya tidak dapat berbicara untuk OP, tetapi kadang-kadang Anda menginginkan pembaruan terbaru dalam seri versi tertentu, bukan hanya versi tertentu. Misalnya, Anda mungkin tahu Anda menginginkan Apache 2.2.x karena 2.4.x tidak akan berfungsi dengan baik dengan paket Anda. Khususnya yang membutuhkan 2.2.23 tidak akan memungkinkan pembaruan di masa depan dalam 2.2.x diinstal.
Alan Krueger