web-dev-qa-db-fra.com

Comment ignorer les conflits dans les installations rpm

J'ai un tas de fichiers RPM dans un dossier. J'essaie de les installer en utilisant: rpm -ivh *.rpm Pour que rpm puisse s'occuper du bon ordre d'installation.

Sur certains de ces processus, une version plus récente est installée sur mon système, de sorte que je reçois par exemple:

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

Existe-t-il un moyen d'ignorer l'ancien fichier .rpm et de résoudre la dépendance avec la nouvelle version déjà installée? J'ai pensé à l'option --force. Mais comment résoudre les conflits avec force? Les écrase avec l'ancienne version ou les ignore tout simplement en laissant la nouvelle version?

Toutes les pensées sont les bienvenues.

29
Cobra Kai Dojo

L'option --force Réinstallera les packages déjà installés et écrasera les fichiers déjà installés des autres packages. Vous ne voulez pas cela normalement.

Si vous dites à rpm d'installer tous les RPM à partir d'un répertoire, c'est exactement ce que vous faites. rpm ne peut pas ignorer les RPM listés pour l'installation. Vous devez supprimer manuellement les RPM inutiles de la liste (ou du répertoire).

Vous pouvez supprimer l'ancien RPM et rpm résoudra la dépendance avec la version la plus récente du RPM installé. Mais cela ne fonctionnera que si aucun des RPM à installer ne dépend exactement de l’ancienne version.

Si vous avez vraiment besoin de différentes versions du même RPM, celui-ci doit être relogeable . Vous pouvez ensuite dire à rpm d'installer le RPM spécifique dans un autre répertoire. Si les fichiers ne sont pas en conflit, vous pouvez simplement installer différentes versions avec rpm -i (zypper in Ne peut pas installer différentes versions du même RPM). Je compresse par exemple Ruby des gemmes en tant que RPM déplaçables au travail. Ainsi, différentes versions du même gem peuvent être installées.

Je ne sais pas sur quels fichiers vos RPM sont en conflit, mais si tous ne sont que des pages de manuel, vous pouvez probablement simplement écraser les nouveaux avec les anciens avec rpm -i --replacefiles. Le seul problème avec cela serait que cela pourrait confondre quelqu'un qui lit l'ancienne page de manuel et pense que c'est pour la version actuelle. Un autre problème serait la commande rpm --verify. Il se plaindra pour le nouveau paquet si l'ancien a écrasé certains fichiers.

Est-ce éventuellement une copie de https://serverfault.com/questions/522525/rpm-ignore-conflicts ?

22
xoryves

Essayez la commande Freshen:

rpm -Fvh *.rpm
8
Kalim Sayyed

Du contexte, le conflit a été causé par la version du package.
Jetons un coup d’œil au manuel sur rpm:

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

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

Vous pouvez donc exécuter la commande rpm -Uvh info-4.13a-2.rpm --force pour résoudre votre problème.

6
James