Running Fedora 22's
dnf as a normal user versus as root
If you're me, you've probably done this at some point:
# dnf clean metadata [...] # dnf check-update [... lists some available updates ...]
Then in another window, running as myself:
; dnf updateinfo info [... doesn't report anything ...]
What's going on here is that
dnf maintains separate package
databases for root and for individual users. When you run
as root, it consults (and updates) the 'official' DNF package
databases and metadata under
/var/cache/dnf. When you run
as any non-root user, it uses a
directory instead; although everything in
world-readable, dnf makes no attempt to look at it. As a result
it's completely possible for root's
dnf commands and your
commands to give completely different results.
You can reduce the odds of this by remembering to do '
metadata' or the like as yourself too, but this doesn't absolutely
guarantee that root's data and your data are in sync. When your
dnf command re-pulls the package information, it may fetch it
from a different mirror that is more (or less) up to date than the
(And of course this wastes bandwidth on re-fetching data you already have.)
I hate the idea of running '
dnf updateinfo info' as root instead
of myself, but I'm probably going to have to get used to it. There
are just too many annoyances otherwise.
PS: Yes, I know about '
dnf clean expire-cache'; I used to do it
all the time with yum. Unlike with yum, with DNF it doesn't work
really well to get me the latest update state. Have I mentioned
that I'm not fond of DNF?
dnf should behave
When run as a normal user, DNF should try to use
data files if they're suitable, ie if they're sufficiently up to
date and DNF is being used in a mode where it only needs read access
to them. Only if DNF has been asked to do something that would
normally write to
/var/cache/dnf would it switch to the
/var/tmp/dnf-<user>-... scheme. In other words, if you just used
information commands as a normal user you'd get to take advantage
of the system DNF database.