14

I have a RHEL7 server managed by Satellite 6.5.

The command

yum clean all --verbose 

shows a yum cache of several Mb for untracked repositories.

yum clean all doesn't clean this cache. Is it possible to do so, or the only way is to run rm -rf /var/cache/yum/* && yum check-update?

2 Answers 2

18

The yum clean all command actually suggests that you run rm -rf /var/cache/yum:

» yum clean all
Cleaning repos: amzn2-core amzn2extra-docker amzn2extra-epel copr:copr.fedorainfracloud.org:jdoss:wireguard epel
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos

There have been a few enhancements to the yum clean all workings in the past (most notably https://bugzilla.redhat.com/show_bug.cgi?id=1357083) but you are absolutely right that there are edge cases where yum clean all just doesn't do its job properly.

rm -rf /var/cache/yum, albeit nasty, does the trick every time.

The man page has a short message on cleaning untracked repos:

<...> Also note that untracked (no longer configured) repositories will not be automatically cleaned.

and

To purge the entire cache in one go, the easiest way is to delete the files manually. Depending on your cachedir configuration, this usually means treating any variables as shell wildcards and recursively removing matching directories. For example, if your cachedir is /var/cache/yum/$basearch/$releasever, then the whole /var/cache/yum directory has to be removed. If you do this, yum will rebuild the cache as required the next time it is run (this may take a while).

Regarding the last point about rebuilding taking a long time, you might want to follow rm -rf /var/cache/yum with && yum makecache to properly recreate the directories and avoid long waits on the next yum invocation. Note the difference between makecache and makecache fast though, most don't really know the difference. yum makecache fast only makes sure the repos are current. yum makecache actually downloads the metadata.

11

There is another option available:

# yum --enablerepo='*' --verbose clean all

Here it's explained:

# man yum
...
CLEAN OPTIONS
   The following are the ways which you can invoke yum in clean mode.
   Note that "all files" in the commands below means "all  files  in currently
   enabled repositories".  If you want to also clean any (temporarily)
   disabled repositories you need to use --enablerepo='*' option.

But the caches of removed repositories (which means "untracked") will be kept:

Disk usage under /var/cache/yum/*/* after cleanup:
4.0 k  enabled repos:
0      disabled repos
145 M  untracked repos

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .