RPM: Gerekli Set: somepackage> = 0.5.0 VE somepackage <0.6.0


14

Bunun gibi bağımlı sürüm gereksinimlerini ayarlamak mümkün müdür:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Böylece otomatik olarak sadece bir paket 0.5.x kurulacaktır.

Yanıtlar:


18

Evet, bunu yapmak çok kolay.

Sadece yaz:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

içine yerleştirin .spec.

Sürüm Gereksinimleri Ekleme

Bir paketin biraz daha katı ihtiyaçları olduğunda, bir paketin belirli sürümlerini gerektirebilir. Tek yapmanız gereken, aşağıdaki karşılaştırma operatörlerinden önce gelen istenen sürüm numarasını eklemektir:

  • Belirtilen sürümden daha düşük bir sürüme sahip paket gerektirir.

  • Belirtilen sürüme eşit veya daha düşük bir sürüme sahip paket gerektirir.

  • Belirtilen sürüme eşit sürüme sahip paket gerektirir.

  • Belirtilen sürüme eşit veya daha büyük bir sürüme sahip paket gerektirir.

  • Belirtilen sürümden daha büyük bir sürüme sahip paket gerektirir.

Örneğimize devam edersek, paket çubuğunun gerekli sürümünün aslında en az 2.7 olması gerektiğini ve baz paketin 2.1 sürümü olması gerektiğini varsayalım - başka bir sürüm yapmayacak. Gerektiren etiket satırı şöyle görünecektir: gerektirir: bar> = 2.7, baz = 2.1

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

Sanal Özelliklere Dikkat Edin / Sağlar

Yukarıda açıklanan sistem çoğu paket için çalışır; İstediğiniz isteyen vardır paketi [sanal yeteneği] olarak verilmiştir ancak, [1] ya da başka şekilde temin edilir (yani "Sağlar:" anahtar kelime) paketler ile farklı (birbirleriyle çakışmayan) adlarıyla, o zaman her biri gereksinimlerinizi ayrı ayrı karşılayan iki farklı paket yüklenebilir. Örneğin, spec dosyanız aşağıdakileri içeriyorsa:

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

Şununla sonuçlanabilir (bu paketlerde yum varsa):

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

Ama olacak değil muhtemelen yüklediğiniz bekleniyor olurdu paketidir postgresql84-sunucu yükleyin.

(Bu durumda çözüm sadece postgresql84-server gerektirir; ancak, kolay bir çözümü olmayan başka örnekler de olabilir.)


i "somethingdev (name)> = 1.0.14" sanal bir bağımlılığı vardı ama yum yüklemek için gittiğimde ... sanal bağımlılık RPM repo olmasına rağmen gerekli sürümü yüklemedi. RPM "bir şey-adı-dev> = 1.0.14" adına sanal bağımlılığı değiştirmek zorunda kaldı ve sonra çalıştı.
Trevor Boyd Smith

1

Bir paket oluşturmaya veya bir paket kurmaya ve bağımlılıklarını "sınırlandırmaya" çalışıyorsanız benim için net değil.

Paketi yeniden oluşturmadan ikinci bir davayı yapmanın bir yolunu göremiyorum.

SRPM'yi alıp spec dosyasını düzenleyebilir ve giriş eklemek / değiştirmek için gerekli (somepackage 0.5.x istiyorsun, değil mi?) Gibi bir şeye:

Requires: somepackage = 0.5.0

ve sonra yeniden inşa

rpmbuild -bb -v yourpackage.spec

Hiç yapmadıysanız, göz korkutucu görünüyor, ancak sorununuzu çözüyor. Bir dağıtım için halka açık bir paket oluşturuyorsanız, guidelliğini okumak isteyebilirsiniz, çünkü bağımlılığı bu yollarla ayarlamak genellikle önerilmez.


2
OP için gerçekten konuşamıyorum, ancak bazen sadece belirli bir sürümde değil, en son güncellemeyi belirli bir sürüm serisinde istersiniz. Örneğin, 2.4.x paketinizle düzgün çalışmadığından Apache 2.2.x'i istediğinizi biliyor olabilirsiniz. Özellikle 2.2.23 gerektiren 2.2.x sürümünde gelecekteki güncellemelerin yüklenmesine izin verilmez.
Alan Krueger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.