¿Cómo desinstalar dependencias recién instaladas para un paquete RPM?

16

¿Hay una manera fácil de hacer una lista de las dependencias con las que se instalará un paquete RPM recién instalado yum?

Ejemplo: si lo hace yum install ruby, también instalará algunos rubygems.

Pero cuando desinstalo el rubypaquete también quiero deshacerme de las dependencias que instaló.

Entonces, mi primera idea fue hacer una lista de esos nuevos paquetes y luego hacer uno rpm -een ellos cuando los desinstale ruby.

Pregunta

¿Cómo hacer tal lista de forma automatizada?

¿O hay una manera más fácil de tener que administrar archivos de texto con nombres de paquetes rpm?

Jasmine Lognnes
fuente

Respuestas:

21

yum mantiene su propio historial, para que pueda saber cuándo se instaló o actualizó un paquete utilizando su historial.

Por ejemplo, yum history packages-info rubyle dará todas las transacciones relacionadas con ruby, donde la más antigua suele ser la que instaló el paquete.

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>

Esto le dará el ID de la transacción, que luego puede buscar y encontrar las dependencias que se instalaron, por ejemplo, con 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 el paquete se acaba de instalar y aún no se ha actualizado, puede revertir la transacción, por ejemplo yum history undo 102. Sin embargo, esto no funcionará si alguno de los paquetes se ha actualizado desde la instalación, ya que coincide con el nombre, la versión y la versión.

Y si realmente acaba de instalar los paquetes, puede omitir todo lo demás y ejecutar yum history undo lastpara deshacer la transacción más reciente.

Michael Hampton
fuente
7

Puedes eliminarlos con yum autoremove.

Sven
fuente
3
Cuando probé esto, propuso eliminar algunos paquetes innecesarios, junto con un montón que había instalado explícitamente y que quería. Tendría mucho cuidado al usar esto.
Michael Hampton
yum autoremoveeliminará todos los paquetes necesarios para los paquetes que ya no están disponibles. Si desea mantenerlos durante yum autoremove, primero configúrelos para que se instalen manualmente.
Mástil
"yum autoremove" no funciona en centos 6.6 "No existe ese comando: autoremove. Utilice / usr / bin / yum --help"
c4f4t0r