2013-07-10 18 views
21

Ho un sacco di file rpm in una cartella. Sto cercando di installarli utilizzando: rpm -ivh *.rpm così rpm può prendersi cura del corretto ordine di installazione.RPM ignora i conflitti

Su alcuni di questi RPM ho una versione più recente installato nel mio sistema in modo da ottenere ad esempio:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

Esiste un modo per ignorare il vecchio file .rpm e risolvere la dipendenza con la nuova versione che è già installata? Ho pensato all'opzione --force. Ma come --force risolve i conflitti? Li sovrascrive con la versione precedente o li ignora semplicemente lasciando la nuova versione?

Ogni pensiero è benvenuto.

risposta

3

Dal contesto, il conflitto è stato causato dalla versione del pacchetto.
Diamo uno sguardo al manuale su rpm:

--force 
    Same as using --replacepkgs, --replacefiles, and --oldpackage. 

--oldpackage 
    Allow an upgrade to replace a newer package with an older one. 

Quindi, è possibile eseguire il comando rpm -Uvh info-4.13a-2.rpm --force per risolvere il problema.

+1

Questo non ha risposto alla mia domanda. Come ho detto, voglio lasciare il NUOVO pacchetto installato. Non sostituirlo con quello vecchio ... –

7

Prova Freshen comando:

rpm -Fvh *.rpm 
+0

Il comando Freshening aggiorna solo i pacchetti già presenti nel sistema.Non serve se voglio installare un nuovo pacchetto ... –

+0

Non penso che possiamo tenere due diversi pacchetti di versione installati sul server. –

15

L'opzione --force reinstallerà già installati pacchetti e sovrascrivere i file già installati da altri pacchetti. Non lo vuoi normalmente.

Se si dice a rpm di installare tutti gli RPM da qualche directory, allora fa esattamente questo. rpm non può ignorare gli RPM elencati per l'installazione. È necessario rimuovere manualmente gli RPM non necessari dall'elenco (o dalla directory).

È possibile rimuovere il vecchio RPM e rpm risolverà la dipendenza con la versione più recente dell'RPM installato. Ma questo funzionerà solo se nessuno degli RPM da installare dipende esattamente dalla vecchia versione.

Se sono realmente necessarie versioni diverse dello stesso RPM, l'RPM deve essere relocatable. È quindi possibile indicare a rpm di installare l'RPM specifico in una directory diversa. Se i file non sono in conflitto, è sufficiente installare diverse versioni con rpm -i (zypper in non è possibile installare versioni diverse dello stesso RPM). Per esempio, sto confezionando gemme di rubini come RPM rilocabili sul posto di lavoro. Quindi posso avere diverse versioni della stessa gemma installata.

Non so su quali file i tuoi RPM sono in conflitto, ma se tutti sono "solo" pagine man, allora probabilmente puoi semplicemente sovrascrivere quelli nuovi con quelli vecchi con rpm -i --replacefiles. L'unico problema con questo sarebbe, che potrebbe confondere qualcuno che sta leggendo la pagina del vecchio e pensa che sia per la versione attuale. Un altro problema potrebbe essere il comando rpm --verify. Si lamenterà per il nuovo pacchetto se il vecchio ha sovrascritto alcuni file.

È forse un duplicato di https://serverfault.com/questions/522525/rpm-ignore-conflicts?