yum installa un pacchetto senza aggiornare altri pacchetti o fallisce ...?


10

C'è un modo per dire yumdi installare un pacchetto, selezionando una versione di quel pacchetto che sarebbe soddisfatta dalle dipendenze attualmente installate?

Ad esempio, se sto installando un pacchetto Pecl e attualmente ho installato, php-5.4.11ma php-5.4.14è disponibile una versione più recente . Invece di installare il nuovo pacchetto (e aggiornare tutti i pacchetti php alla 5.4.14) Voglio solo selezionare una versione precedente del pacchetto che ho richiesto di installare senza aggiornare tutti gli altri (o fallire se non è possibile farlo).

Questo è un caso specifico in cui so che potrei escludere o correggere il pacchetto php ma sto cercando un'opzione generica che si applicherebbe a qualsiasi installazione.

Qualcosa di simile a:

yum install php-pecl-xxxx --no-updates

Risposte:


10

Soluzione temporanea:

Usa -Cbandiera:

sudo yum install foobar -C

Soluzione permanente:

Usa il metadata_expireflag nel tuo yum.conf per controllarlo.

Modifica /etc/yum.confe imposta

metadata_expire=15d

È possibile utilizzare d, h o m per configurare l'ora in giorni, ore o minuti .

Bonus: ecco la documentazione:

metadata_expire è Tempo (in secondi) dopo il quale i metadati scadranno. Pertanto, se gli attuali metadati scaricati sono inferiori a molti secondi, Yum non aggiornerà i metadati rispetto al repository. Se scopri che yum non sta scaricando informazioni sugli aggiornamenti tutte le volte che desideri abbassare il valore di questa opzione. Puoi anche passare dall'impostazione predefinita dell'uso dei secondi all'utilizzo di giorni, ore o minuti aggiungendo rispettivamente l'annuncio, h o m. L'impostazione predefinita è 6 ore, per completare yum-updatesd in esecuzione una volta ogni ora. È anche possibile usare la parola "mai", il che significa che i metadati non scadranno mai. Si noti che quando si utilizza un file metalink il metalink deve essere sempre più recente dei metadati per il repository, a causa della convalida, quindi questo timeout si applica anche al file metalink. Si noti inoltre che "mai" non sostituisce "yum clean expire-cache"


0

Non ho trovato nessuna opzione al momento. Tuttavia, se si desidera installare il pacchetto senza aggiornare, si consiglia di scaricare un rpm della stessa versione e installarlo.


0

Nel yum-utilspacchetto c'è uno strumento chiamato yumdownloader. Puoi usarlo per scaricare dai repository senza installarlo. Tutti gli switch standard come si --disablerepoapplicano. Vedi la pagina man per saperne di più.

Penso che puoi scaricare l'RPM e poi fare quello che vuoi usando direttamente RPM.


1
Questa è una parte di un sistema di installazione automatica dei pacchetti, il problema è che non vogliamo che yum "installi le ultime" e "aggiorni tutto ciò che è necessario". Vogliamo solo che installi una versione del pacchetto compatibile con ciò che è già installato. Fondamentalmente un'opzione installonly o install xxx -no-updates.
Clint Priest,

0

Se la versione precedente del pacchetto è ancora nei tuoi repository yum, puoi semplicemente eseguire yum install packagename-version-release.arche installerà la versione precedente senza tentare di eseguire l'aggiornamento alla versione più recente. Dovrai utilizzare il nome completo, la versione, la versione e l'arch se ci sono più versioni e architetture nel tuo repository yum. Puoi ottenere tutte queste informazioni eseguendo la yum list available 'packagename*'ricerca di tutti i pacchetti che iniziano con 'nomepacchetto'. Se sei riuscito a aggiornare i tuoi pacchetti e desideri eseguire il downgrade alla versione precedente, puoi eseguire yum downgrade packagename1 packagename2. Dovrai includere l'elenco di tutti i pacchetti che desideri effettuare il downgrade, poiché probabilmente implicherà molte dipendenze.

Se la versione precedente non è nel tuo repository yum, scaricala semplicemente da qualsiasi punto in cui hai trovato il vecchio pacchetto e installalo yum install /path/to/package.rpm, anche se vorrei mettere in guardia dall'installazione di pacchetti da fonti non attendibili.


Ma sarebbe molto più utile se yumpotessi scegliere l'ultima versione compatibile disponibile.
forcefsck

Può, ma spetta al packager definire i requisiti appropriati.
jsbillings,

A volte i requisiti sono coperti da un pacchetto precedente, ma yum insiste nel selezionare solo l'ultimo. Per esempio. nel caso sopra descritto, dovrebbe essere possibile per yum selezionare automaticamente php-pecl-5.4.11 se il sistema è la versione bloccata su php-5.4.11. Può essere un problema per l'automazione.
forcefsck,

Yum si aggiornerà all'ultima versione solo se non ci sono dipendenze dalla vecchia versione. Nel caso sopra, il pacchetto pecl non ha mai richiesto il requisito di versione. Yum non può leggere la tua mente e scegliere una versione arbitraria a meno che tu non indichi quale versione in un richiede o bloccando la versione dei pacchetti pecl e php.
jsbillings,

Per questo esempio in particolare, a condizione che php non sia aggiornabile (né versione bloccata o nessun pacchetto più recente disponibile sui repository), yum potrebbe selezionare l'ultima versione di pecl che non richiederà un aggiornamento php. Non è esattamente la lettura della mente, credo che apt-get lo faccia già. Ancora una volta, questo è un problema per l'automazione quando è necessario installare un pacchetto aggiuntivo senza aggiornare metà del sistema e è necessario che tu sia abbastanza intelligente da gestire la richiesta, ovvero, se esistono più versioni, scegli l'ultima compatibile con i pacchetti già installati che per qualsiasi motivo non può essere aggiornato.
forcefsck
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.