RPM: Set Obbligatorio: somepackage> = 0.5.0 E somepackage <0.6.0


14

È possibile impostare requisiti di versione di dipendenza come questo:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Quindi solo alcuni pacchetti 0.5.x verranno installati automaticamente.

Risposte:


18

Sì, molto facile farlo.

Scrivi e basta:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

nel tuo .specfile.

Aggiunta di requisiti di versione

Quando un pacchetto ha esigenze leggermente più rigorose, è possibile richiedere determinate versioni di un pacchetto. È sufficiente aggiungere il numero di versione desiderato, preceduto da uno dei seguenti operatori di confronto:

  • Richiede un pacchetto con una versione inferiore alla versione specificata.

  • Richiede un pacchetto con una versione inferiore o uguale alla versione specificata.

  • Richiede un pacchetto con una versione uguale alla versione specificata.

  • Richiede un pacchetto con una versione uguale o maggiore della versione specificata.

  • Richiede un pacchetto con una versione successiva alla versione specificata.

Continuando con il nostro esempio, supponiamo che la versione richiesta della barra dei pacchetti debba effettivamente essere almeno 2.7 e che il pacchetto baz debba essere la versione 2.1 - nessun'altra versione lo farà. Ecco come dovrebbe apparire la tag tag richiesta: richiede: bar> = 2.7, baz = 2.1

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

Attenzione alle funzionalità / offerte virtuali

Il sistema sopra descritto funziona per la maggior parte dei pacchetti; tuttavia, se il pacchetto che si desidera richiedere viene fornito come [capacità virtuale] [1] o è altrimenti fornito (ovvero "Fornisce:" parola chiave) da pacchetti di nomi diversi (che non sono in conflitto tra loro), l'utente può finire con due diversi pacchetti installati, ognuno dei quali soddisfa individualmente uno dei tuoi requisiti. Ad esempio, se il file delle specifiche contiene:

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

Può comportare (se si dispone di questi pacchetti disponibili per yum) l'installazione di:

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

Ma non verrà installato postgresql84-server, che è probabilmente il pacchetto che ci si sarebbe aspettati di aver installato.

(In questo caso la soluzione sarebbe semplicemente quella di richiedere postgresql84-server; tuttavia, ci sono probabilmente altri esempi che non hanno una soluzione semplice.)


ho avuto una dipendenza virtuale da "qualcosa (nome)> = 1.0.14" ma quando sono andato a yum install ... la dipendenza virtuale non ha installato la versione richiesta nonostante fosse nel repository RPM. ho dovuto cambiare la dipendenza virtuale con il nome dell'RPM "qualcosa-nome-dev> = 1.0.14" e poi ha funzionato.
Trevor Boyd Smith,

1

Non è chiaro per me se stai cercando di creare un pacchetto o installare un pacchetto e "limitare" le sue dipendenze.

Non vedo un modo per creare il secondo caso senza ricostruire il pacchetto.

È possibile recuperare l'SRPM e modificare il file delle specifiche e per aggiungere / modificare la voce Richiede (vuoi un pacchetto 0.5.x, vero?) In qualcosa del genere:

Requires: somepackage = 0.5.0

e poi ricostruire con

rpmbuild -bb -v yourpackage.spec

Se non l'hai mai fatto, sembra intimidatorio ma risolve il tuo problema. Tieni presente che se stai creando un pacchetto pubblico per una distro, potresti voler leggere la sua guida perché impostare la dipendenza in questo modo non è generalmente raccomandato.


2
Non posso davvero parlare per l'OP, ma a volte vuoi l'aggiornamento più recente in una serie di versioni specifiche, non solo una versione specifica. Ad esempio, potresti sapere che vuoi Apache 2.2.x perché 2.4.x non funzionerà correttamente con il tuo pacchetto. Richiedere specificamente 2.2.23 non consentirebbe l'installazione di futuri aggiornamenti in 2.2.x.
Alan Krueger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.