I have installed some rpm package on my Fedora 17. Some packages had a lot of dependencies. I have removed some packages but I forgot remove unused dependencies with yum remove.
How can I do that now?
I have installed some rpm package on my Fedora 17. Some packages had a lot of dependencies. I have removed some packages but I forgot remove unused dependencies with yum remove.
How can I do that now?
If you install a package with yum install
, say pdftk
, it will pull in a lot of dependencies:
Installed:
pdftk.x86_64 0:1.44-10.fc18
Dependency Installed:
bouncycastle.noarch 0:1.46-6.fc18
itext-core.noarch 0:2.1.7-14.fc18
libgcj.x86_64 0:4.7.2-8.fc18
bouncycastle-mail.noarch 0:1.46-6.fc18
java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
sinjdoc.x86_64 0:0.5-13.fc18
bouncycastle-tsp.noarch 0:1.46-5.fc18
java_cup.noarch 1:0.11a-10.fc18
itext.x86_64 0:2.1.7-14.fc18
javamail.noarch 0:1.4.3-12.fc18
Complete!
yum remove pdftk
will remove only that package and not all the dependencies.
But you can look at all the 'transactions' (install, remove etc.):
$ sudo yum history list pdftk
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
88 | install pdftk | 2012-12-14 13:35 | Install | 11
And then you can undo that transaction:
$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
Dep-Install bouncycastle-1.46-6.fc18.noarch @fedora
Dep-Install bouncycastle-mail-1.46-6.fc18.noarch @fedora
Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch @fedora
Dep-Install itext-2.1.7-14.fc18.x86_64 @fedora
Dep-Install itext-core-2.1.7-14.fc18.noarch @fedora
Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
Dep-Install java_cup-1:0.11a-10.fc18.noarch @fedora
Dep-Install javamail-1.4.3-12.fc18.noarch @fedora
Dep-Install libgcj-4.7.2-8.fc18.x86_64 @fedora
Install pdftk-1.44-10.fc18.x86_64 @fedora
Dep-Install sinjdoc-0.5-13.fc18.x86_64 @fedora
...
Complete!
yum history
. Thanks!
– Stefan Lasiewski
May 14 '14 at 20:24
Starting from Fedora 18, you can simply use this command
yum autoremove
or
yum remove --setopt=clean_requirements_on_remove=1
You can also apply autoremove command with specific package
yum autoremove <package>
Which will remove unneeded dependencies from that installed package. autoremove
is very much an alias of remove --setopt=clean_requirements_on_remove=1
but for some reasons, is still undocumented.
yum remove --setopt=clean_requirements_on_remove=1
works for me in centOS
– BMW
Jul 13 '14 at 09:57
package-cleanup --leaves && yum autoremove
removed libvorbis and so made the internet-radio-streaming "Ices" application die -- probably because it isn't in repos and I had to compile it.
– Nakilon
Dec 11 '18 at 20:22
It's not easy. How do you differentiate between "a file that was required by something I have since removed" from "a file that is not required by anything else that I really want"?
You can use the package-cleanup
command from the yum-utils
package to list "leaf nodes" in your package dependency graph. These are packages that can be removed without affecting anything else:
$ package-cleanup --leaves
This will produce a list of "libraries" on which nothing else depends. In most cases you can safely remove these packages. If you add --all
to the command line:
$ package-cleanup --leaves --all
You'll get packages that aren't considered libraries, also, but this list is going to be so long that it probably won't be useful.
package-cleanup --leaves
– brauliobo
Jan 10 '20 at 14:43
I took larsks answer one step farther.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
This grabs all of the dependencies that can be removed without affecting anything else and then removes them. Better then going through one by one.
"-q" is useful on some systems which print "Setting up yum" otherwise, causing this command to remove yum. And that's not what you want.
package-cleanup
outputs "Setting up yum" on my machine, which resulted in Yum removing itself. I'm now trying to figure out how to sort this out.
– Paul Lammertsma
Feb 01 '15 at 17:05
-q
option to package-cleanup. This happened to me as well :D
– Ealhad
Aug 03 '15 at 15:23
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
will silently skip xargs if package-cleanup output is empty, useful for automated scripts like ansible, chef, puppet, vagrant
– Ilya Sheershoff
Oct 05 '18 at 16:02
-y
so that future users won't get burned by whatever burned @Paul Lammertsma
– Wayne Walker
Jul 07 '21 at 16:22
In newer Fedoras with dnf
, you can use dnf repoquery --unneeded
as a replacement for package-cleanup --leaves
.
yum
manpage: http://linux.die.net/man/8/yum ? – Linuxios Jun 06 '12 at 19:22