installer le package yum sans mettre à jour les autres packages ou échouer…?

10

Existe-t-il un moyen de dire yumd'installer un package, en sélectionnant une version de ce package qui serait satisfaite par les dépendances actuellement installées?

Par exemple, si j'installe un package pecl et que j'ai déjà installé php-5.4.11mais qu'un plus récent php-5.4.14est disponible. Plutôt que d'installer le nouveau package (et de mettre à jour tous les packages php en 5.4.14), je veux juste qu'il sélectionne une ancienne version du package que j'ai demandé à installer sans mettre à jour toutes les autres (ou échouer si cela ne peut pas être fait).

Il s'agit d'un cas spécifique dans lequel je sais que je pourrais exclure ou corriger le package php mais je recherche une option générique qui s'appliquerait à toute installation.

Quelque chose comme:

yum install php-pecl-xxxx --no-updates
Clint Priest
la source

Réponses:

10

Solution temporaire:

Utilisez le -Cdrapeau:

sudo yum install foobar -C

Solution permanente:

Utilisez le metadata_expiredrapeau dans votre yum.conf pour contrôler cela.

Modifier /etc/yum.confet définir

metadata_expire=15d

Vous pouvez utiliser d, h ou m pour configurer l'heure en jours, heures ou minutes .

Bonus: voici la documentation:

metadata_expire est le temps (en secondes) après lequel les métadonnées expireront. De sorte que si les métadonnées actuelles téléchargées datent de moins de quelques secondes, yum ne mettra pas à jour les métadonnées par rapport au référentiel. Si vous constatez que yum ne télécharge pas les informations sur les mises à jour aussi souvent que vous le souhaitez, diminuez la valeur de cette option. Vous pouvez également passer de l'utilisation par défaut des secondes à l'utilisation des jours, des heures ou des minutes en ajoutant respectivement ad, h ou m. La valeur par défaut est de 6 heures, pour compléter yum-updatesd en cours d'exécution une fois par heure. Il est également possible d'utiliser le mot "jamais", ce qui signifie que les métadonnées n'expireront jamais. Notez que lorsque vous utilisez un fichier metalink, le metalink doit toujours être plus récent que les métadonnées du référentiel, en raison de la validation, ce délai s'applique également au fichier metalink. Notez également que "jamais" ne remplace pas "yum clean expire-cache"

Shubham Chaudhary
la source
0

Je n'ai pas rencontré une telle option pour l'instant. Cependant, si vous souhaitez installer le package sans mise à niveau, je recommanderais de télécharger un rpm de la même version, puis de l'installer.

Aazim Parkar
la source
0

Dans le yum-utilspackage, il y a un outil appelé yumdownloader. Vous pouvez l'utiliser pour télécharger à partir des dépôts sans installer. Tous les commutateurs standard comme --disablerepos'appliquent. Consultez la page de manuel pour en savoir plus.

Je pense que vous pouvez télécharger le RPM puis faire ce que vous voulez en utilisant directement le RPM.

slm
la source
1
Cela fait partie d'un système d'installation automatique de paquets, le problème est que nous ne voulons pas que yum "installe la dernière" et "mette à jour tout ce qui est nécessaire". Nous voulons vraiment qu'il installe une version du package qui soit compatible avec ce qui est déjà installé. Fondamentalement, une option d'installation uniquement ou d'installation de xxx -no-updates.
Clint Priest
0

Si l'ancienne version du package est toujours dans vos référentiels yum, vous pouvez simplement l'exécuter yum install packagename-version-release.archet elle installera l'ancienne version sans essayer de mettre à niveau vers la dernière version. Vous devrez utiliser le nom complet, la version, la version et l'archive s'il existe plusieurs versions et architectures dans votre référentiel yum. Vous pouvez obtenir toutes ces informations en exécutant la yum list available 'packagename*'recherche de tous les packages commençant par «packagename». Si vous avez réussi à mettre à niveau vos packages et souhaitez rétrograder vers l'ancienne version, vous pouvez exécuter yum downgrade packagename1 packagename2. Vous devrez inclure la liste de tous les packages que vous souhaitez rétrograder, car cela impliquera probablement beaucoup de dépendances.

Si l'ancienne version n'est pas dans votre référentiel yum, alors téléchargez-la à partir de l'endroit où vous avez trouvé l'ancien package et installez-la yum install /path/to/package.rpm, bien que je déconseille d'installer des packages à partir de sources non fiables.

jsbillings
la source
Mais il serait beaucoup plus utile de yumchoisir la dernière version compatible disponible.
forcefsck
C'est possible, mais c'est au conditionneur de définir les exigences appropriées.
jsbillings
Parfois, les exigences sont couvertes par un paquet plus ancien, mais miam insiste pour ne choisir que les dernières. Par exemple. dans le cas décrit ci-dessus, il devrait être possible pour yum de sélectionner automatiquement php-pecl-5.4.11 si la version du système est verrouillée sur php-5.4.11. Cela peut être un problème d'automatisation.
forcefsck
Yum uniquement mettra à jour vers la dernière version s'il n'y a pas de dépendances avec l'ancienne version. Dans le cas ci-dessus, la version requise n'a jamais été requise par le package pecl. Yum ne peut pas lire dans vos pensées et choisir une version arbitraire à moins que vous n'indiquiez quelle version dans un requiert ou en verrouillant la version des paquets pecl et php.
jsbillings
Pour cet exemple en particulier, à condition que php ne soit pas extensible (que la version soit verrouillée ou qu'aucun paquet plus récent ne soit disponible sur les repos), yum pourrait sélectionner la dernière version de pecl qui ne nécessitera pas de mise à niveau php. Ce n'est pas exactement la lecture d'esprit, je crois qu'apt-get le fait déjà. Encore une fois, c'est un problème d'automatisation lorsque vous devez installer un package supplémentaire sans mettre à niveau la moitié de votre système et que vous avez besoin de yum pour être suffisamment intelligent pour gérer la demande, c'est-à-dire que si plusieurs versions existent, choisissez la dernière compatible avec les packages déjà installés. qui, pour une raison quelconque, ne peut pas être mis à niveau.
forcefsck