Как удалить недавно установленные зависимости для пакета RPM?

16

Есть ли простой способ составить список зависимостей, с которыми будет устанавливаться только что установленный RPM-пакет yum?

Пример: если вы это сделаете, yum install rubyон также установит некоторые рубины.

Но когда я удаляю rubyпакет, я также хочу избавиться от установленных зависимостей.

Поэтому моей первой идеей было составить список этих новых пакетов, а затем сделать rpm -eих, когда я удалю их ruby.

Вопрос

Как составить такой список в автоматическом режиме?

Или есть более простой способ, чем управлять текстовыми файлами с именами пакетов rpm?

Жасмин Логн
источник
1
Также см. Unix.stackexchange.com/questions/40179/remove-unused-packages
Стефан Ласевский,

Ответы:

21

yum хранит свою собственную историю, чтобы вы могли узнать, когда пакет был установлен или обновлен, используя его историю.

Например, yum history packages-info rubyпредоставит вам все транзакции, связанные с ruby, где самой старой обычно является та, где был установлен пакет.

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>

Это даст вам идентификатор транзакции, который вы затем сможете найти и найти зависимости, которые были установлены, например, с помощью 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

Если пакет был только что установлен и еще не обновлен, вы можете откатить транзакцию, например, с помощью yum history undo 102. Это не будет работать, если какой-либо из пакетов был обновлен с момента установки, хотя, поскольку он соответствует имени, версии и выпуску.

И если вы действительно только что установили пакеты, вы можете пропустить все остальное и запустить yum history undo lastдля отката самой последней транзакции.

Майкл Хэмптон
источник
7

Вы можете удалить их с помощью yum autoremove.

Свен
источник
3
Когда я попробовал это, он предложил , чтобы удалить несколько ненужных пакетов, наряду с целым букетом , что я был явно установлен и хочу. Я был бы очень осторожен при использовании этого.
Майкл Хэмптон
yum autoremoveудалит все пакеты, которые были необходимы для более недоступных пакетов. Если вы хотите сохранить их во время yum autoremove, сначала установите их вручную.
Мачта
"yum autoremove" не работает в centos 6.6 "Нет такой команды: autoremove. Пожалуйста, используйте / usr / bin / yum --help"
c4f4t0r