11

I run a number of CentOS servers. I was recently doing the occasional yum update but this failed on a handful of the servers. On most I have been able to move forward by doing:

# yum clean all
# rm -f /var/lib/rpm/__db*
# rpm --rebuilddb
# yum update

However on one server, the yum clean command hangs. I have tried running:

# yum -v --noplugins clean all

but I get no output at all. Yum just hangs, and will sit there for hours if I let it, not using any cpu, just stopped. Doing

# strace -f yum -v --noplugins clean all

produces quite a lot of output, but then stops with:

...
stat64("/var/lib/rpm/__db.003", {st_mode=S_IFREG|0644, st_size=450560, ...}) = 0
open("/var/lib/rpm/__db.003", O_RDWR|O_LARGEFILE) = 4
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
mmap2(NULL, 450560, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) = 0xb6b34000
close(4)                                = 0
stat64("/var/lib/rpm/Packages", {st_mode=S_IFREG|0644, st_size=14938112, ...}) = 0
open("/var/lib/rpm/Packages", O_RDONLY|O_LARGEFILE) = 4
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
read(4, "\0\0\0\0\1\0\0\0\0\0\0\0a\25\6\0\10\0\0\0\0\20\0\0\0\10\0\0k\t\0\0"..., 512) = 5
12
close(4)                                = 0
open("/var/lib/rpm/Packages", O_RDONLY|O_LARGEFILE) = 4
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=14938112, ...}) = 0
futex(0xb6b7bd1c, FUTEX_WAIT, 1, NULL

At this point I'm feeling stuck. This is a production server, so I don't want to just blow it away, or even blow away all the yum information. Apart from the yum stuff, the server is working fine.

Itai Ganot
  • 10,976

5 Answers5

19

I had the same problem, all my yum commands were hanging.

I ran the following commands

rm /var/lib/rpm/__db*
rm /var/lib/rpm/.rpm.lock
rm /var/lib/rpm/.dbenv.lock

So a combination of some of the above comments and answers.

Mz A
  • 311
4

On my Redhat 7.2 this helps to let run the yum commands.

 rm /var/lib/rpm/.dbenv.lock
1

In my case, I had all but one server with

[main]
enabled=1

in

/etc/yum/pluginconf.d/subscription-manager.conf

Setting this to enabled=0 fixed my issue.

mforsetti
  • 2,888
Mike D
  • 11
  • 1
1

This is not a direct answer, but if none of the commands from the other answers helped then I'd check the command package-cleanup.

All the proposed commands are for handling the RPM database, but it could be that there's something broken in the relation of some installed packages.

From man package-cleanup:

DESCRIPTION
       package-cleanup is a program for cleaning up the locally-installed RPMs.
EXAMPLES
       List all dependency problems:
              package-cleanup --problems

       List all packages that are not in any Yum repository:
              package-cleanup --orphans

I'd start with the command in the second example, I've used it before and it solved some weird issues I had in one of my CentOS machines which was related to yum clean.

Itai Ganot
  • 10,976
0

All of the above but also:

ps -ef | grep yum # kill off all yum processes
ps -ef | grep rpm # kill off rpm processes

I couldn't get any of the above to work until I did this.

Credit to: https://cloudlinux.zendesk.com/hc/en-us/articles/115004580385-If-RPM-or-yum-processes-hangs

Gerald Schneider
  • 26,582
  • 8
  • 65
  • 97