Comment désinstaller les dépendances nouvellement installées pour un package RPM?

16

Existe-t-il un moyen simple de dresser une liste des dépendances avec lesquelles un package RPM nouvellement installé sera installé yum?

Exemple: Si vous le faites, yum install rubyil installera également quelques rubygems.

Mais lorsque je désinstalle le rubypackage, je veux également me débarrasser des dépendances qu'il a installées.

Donc, ma première idée a été de faire une liste de ces nouveaux packages, puis d'en faire un rpm -elors de la désinstallation ruby.

Question

Comment faire une telle liste de manière automatisée?

Ou existe-t-il un moyen plus simple de gérer les fichiers texte avec les noms de package rpm?

Jasmine Lognnes
la source

Réponses:

21

yum conserve son propre historique, afin que vous puissiez savoir quand un package a été installé ou mis à jour à l'aide de son historique.

Par exemple, yum history packages-info rubyvous donnera toutes les transactions impliquant ruby, où la plus ancienne est généralement celle où le package a été installé.

Transaction ID : 102
Begin time     : Thu Apr  3 17:15:17 2014
Package        : ruby-2.0.0.353-16.fc20.x86_64
State          : Install
Size           : 64,734
Build host     : buildvm-17.phx2.fedoraproject.org
Build time     : Thu Nov 28 06:01:20 2013
Packager       : Fedora Project
Vendor         : Fedora Project
License        : (Ruby or BSD) and Public Domain
URL            : http://ruby-lang.org/
Source RPM     : ruby-2.0.0.353-16.fc20.src.rpm
Commit Time    : Mon Nov 25 07:00:00 2013
Committer      : V?t Ondruch <vondruch@redhat.com>
Reason         : user
Command Line   : install ruby rubygems
From repo      : updates
Installed by   : Michael Hampton <error>

Cela vous donnera l'ID de transaction, que vous pouvez ensuite rechercher et trouver les dépendances qui ont été installées, par exemple avec yum history info <ID>.

Transaction ID : 102
Begin time     : Thu Apr  3 17:15:17 2014
Begin rpmdb    : 2336:55d492c6f5d091f328529861bdf95111264337f6
End time       :            17:15:20 2014 (3 seconds)
End rpmdb      : 2346:ccca040d610665c49a1ff6a11f787f8d5aa6790d
User           : Michael Hampton <error>
Return-Code    : Success
Command Line   : install ruby rubygems
Transaction performed with:
    Updated       rpm-4.11.2-2.fc20.x86_64                @updates/20
2 packages excluded due to repository priority protections
    Updated       yum-3.4.3-137.fc20.noarch               ?
    Updated       yum-metadata-parser-1.1.4-9.fc20.x86_64 @fedora/20
Packages Altered:
    Install     ruby-2.0.0.353-16.fc20.x86_64           @updates/20
    Dep-Install ruby-irb-2.0.0.353-16.fc20.noarch       @updates/20
    Dep-Install ruby-libs-2.0.0.353-16.fc20.x86_64      @updates/20
    Dep-Install rubygem-bigdecimal-1.2.0-16.fc20.x86_64 @updates/20
    Dep-Install rubygem-io-console-0.4.2-16.fc20.x86_64 @updates/20
    Dep-Install rubygem-json-1.7.7-101.fc20.x86_64      @fedora/20
    Dep-Install rubygem-psych-2.0.0-16.fc20.x86_64      @updates/20
    Dep-Install rubygem-rdoc-4.0.1-2.fc20.noarch        @fedora/20
    Install     rubygems-2.1.11-115.fc20.noarch         @updates/20
    Dep-Install rubypick-1.1.1-1.fc20.noarch            @updates/20

Si le package vient d'être installé et n'a pas encore été mis à jour, vous pouvez annuler la transaction avec, par exemple yum history undo 102. Cela ne fonctionnera pas si l'un des packages a été mis à jour depuis l'installation, car il correspond au nom, à la version et à la version.

Et si vous venez d' installer les packages, vous pouvez ignorer tout le reste et exécuter yum history undo lastpour annuler la transaction la plus récente.

Michael Hampton
la source
7

Vous pouvez les supprimer avec yum autoremove.

Sven
la source
3
Quand j'ai essayé cela, il a proposé de supprimer quelques paquets inutiles, ainsi que tout un tas que j'avais explicitement installé et que vous voulez. Je serais très prudent lors de l'utilisation de cela.
Michael Hampton
yum autoremovesupprimera tous les packages requis pour les packages qui ne sont plus disponibles. Si vous souhaitez les conserver pendant yum autoremove, définissez-les d'abord sur installés manuellement.
mât
"yum autoremove" ne fonctionne pas dans centos 6.6 "Aucune commande de ce type: autoremove. Veuillez utiliser / usr / bin / yum --help"
c4f4t0r