Welcome to the Linux Foundation Forum!

LFS201 Ch 06: Clarification on rebuilding RPM database + More and more questions :)


here it says

You can use the --rebuilddb option to rebuild the database indices from the installed package headers

What exactly is meant by 'installed package headers' ?

Are these files in specific install directories? And where are they exactly?

Also, i'm reading from fedora docs that we should back up the rpm database before running rpm --rebuilddb. Is that done with rpm, or just cp command?

What situations in real life can result in corrupted rpm database, and why would rebuilding the database have risks? If the database is based on the header entirely, wouldn't backing up the database be superfluous? I mean, you would back up the source of information, not result of information

It take it the database isn't intrinsically necessary (they could have programmed rpm & dnf etc...to not use/need one) but rather is used for performance reasons, correct?


  • syntapy
    syntapy Posts: 8
    edited December 2020

    Another question: I am on the lab assignment now, investigating what package /etc/logrotate.conf belongs to

    For some reason I dont have /etc/logrotate.conf on my system, but I do have /etc/logrotate.d/ folder which contains three files: dnf,tinyproxy, and wpa_supplicant

    Now, I've found that /etc/logrotate.d/ folder belongs to wpa_supplicant-x.y.z while the dnf file belongs to package dnf-data-x.y.z

    What does it mean that a folder belongs to one package and files inside belong to another package?

    Well, I figured that if a file from package dnf-data is inside a folder from package wpa_supplicant then dnf-data must require wpa_supplicant

    However, when I list which packages are required by wpa_supplicant I dont see dnf-data in there, and same visa versa

    Any ideas?

  • coop
    coop Posts: 915

    It's an experiment I won't do, but if you nuke both /var/lib/rpm and /var/cache/yum (or dnf) you are likely to have a system very hard to rebuild. Or you can temporarily rename them and try to run rpm -q commands for example. I've been in this situation and it is hard to recover from as you either have to install from source or copy (to begin with) from a working system and try to rebuild properly.

    You can just back up with cp as in "cp -ax /var/lib/rpm /tmp/varlibrpm" or use a tar command

    I've seen the data base corrupted when a system goes weird during an update or something, or an accident rm command etc. It's not that hard to do.

    /var/cache/yum (or dnf) is for performance reasons. If you do something like "dnf clean all", you wipe out
    almost everything in /var/cache/dnf, but nothing doesn't work. if you wipe out /var/lib/rpm good luck

  • coop
    coop Posts: 915

    I don't know why you do not have logrotate.conf. On any Fedora system I have it is there as long as you have the logrotate package installed, and it is a base package AFAIK (rpm -q logrotate) As far as the stuff in logrotate.d, those files are installed by any package that needs to use the logrotate program and they definitely do not belong to logrotate. That's the whole idea; as packages are installed they sprinkle config files in "/etc/.d" directories such as this or modprobe.d (do du /etc/.d)

  • luisviveropena

    Hi @syntapy ,

    What distro and version are you using?

    I'm on Ubuntu 18.04 and I have it by default:

    luis@ubuntu18server:/etc$ ls -l logrotate.conf
    -rw-r--r-- 1 root root 703 Yag 21 2017 logrotate.conf

    luis@ubuntu18server:/etc$ ls -l logrotate.conf
    -rw-r--r-- 1 root root 703 Yag 21 2017 logrotate.conf

    luis@ubuntu18server:/etc$ dpkg -S /etc/logrotate.conf
    logrotate: /etc/logrotate.conf

    luis@ubuntu18server:/etc$ dpkg -l logrotate
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name Version Architecture Description
    ii logrotate 3.11.0-0.1ubu amd64 Log rotation utility


  • coop
    coop Posts: 915

    if he really doesn't have logrotate.conf the system is a mess, I would not bother trying to debug. It's an anomaly and weird or got deleted. No need to discuss further. It's a base package file on any distro AFAIK.
    However, he is on Open Suse Tumbleweed which is definitely not supported, so I don't know.


Upcoming Training