So deinstallieren Sie neu installierte Abhängigkeiten für ein RPM-Paket

16

Gibt es eine einfache Möglichkeit, eine Liste der Abhängigkeiten zu erstellen, mit denen ein neu installiertes RPM-Paket installiert wird yum?

Beispiel: Wenn Sie dies tun yum install ruby, werden auch einige Rubygems installiert.

Aber wenn ich das rubyPaket deinstalliere, möchte ich auch die Abhängigkeiten loswerden, die es installiert hat.

Meine erste Idee war es also, eine Liste dieser neuen Pakete zu erstellen und diese dann rpm -ezu bearbeiten, wenn ich sie deinstalliere ruby.

Frage

Wie kann man eine solche Liste automatisiert erstellen?

Oder gibt es eine einfachere Möglichkeit, Textdateien mit RPM-Paketnamen zu verwalten?

Jasmine Lognnes
quelle

Antworten:

21

yum behält seinen eigenen Verlauf bei, sodass Sie anhand des Verlaufs herausfinden können, wann ein Paket installiert oder aktualisiert wurde.

Zum Beispiel erhalten yum history packages-info rubySie alle Transaktionen mit Ruby, wobei die älteste normalerweise diejenige ist, in der das Paket installiert wurde.

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>

Dadurch erhalten Sie die Transaktions-ID, mit der Sie nach den installierten Abhängigkeiten suchen können, z yum history info <ID>. B. mit .

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

Wenn das Paket gerade installiert wurde und noch nicht aktualisiert wurde, können Sie die Transaktion mit zurücksetzen, z yum history undo 102. Dies funktioniert jedoch nicht, wenn eines der Pakete seit der Installation aktualisiert wurde, da Name, Version und Version übereinstimmen.

Und wenn Sie die Pakete wirklich gerade erst installiert haben, können Sie alles andere überspringen und yum history undo lastdie letzte Transaktion rückgängig machen.

Michael Hampton
quelle
7

Sie können sie mit entfernen yum autoremove.

Sven
quelle
3
Als ich das versuchte, schlug es ein paar unnötigen Pakete zu entfernen, zusammen mit einem ganzen Bündel , dass ich hatte explizit installiert und will. Ich würde sehr vorsichtig sein, wenn ich das benutze.
Michael Hampton
yum autoremoveentfernt alle Pakete, die für nicht mehr verfügbare Pakete benötigt wurden. Wenn Sie sie behalten möchten, müssen Sie yum autoremovesie zuerst manuell installieren.
Mast
"yum autoremove" funktioniert nicht in CentOS 6.6 "No such Befehl:. autoremove Bitte verwenden / usr / bin / yum --help"
c4f4t0r