Running Fedora 22's dnf as a normal user versus as root

August 3, 2015

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 ...]

Wait, what?

What's going on here is that dnf maintains separate package databases for root and for individual users. When you run dnf as root, it consults (and updates) the 'official' DNF package databases and metadata under /var/cache/dnf. When you run dnf as any non-root user, it uses a /var/tmp/dnf-<user>-<random> directory instead; although everything in /var/cache/dnf is world-readable, dnf makes no attempt to look at it. As a result it's completely possible for root's dnf commands and your dnf commands to give completely different results.

You can reduce the odds of this by remembering to do 'dnf clean 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 mirror root's dnf used.

(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?

Sidebar: How dnf should behave

When run as a normal user, DNF should try to use /var/cache/dnf 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.

Written on 03 August 2015.
« My view on the potential death of the ad-supported web
A lesson to myself: commit my local changes in little bits »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Aug 3 00:52:39 2015
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.