On Thu, Dec 30, 2021 at 1:31 AM Zbigniew Jędrzejewski-Szmek
<zbyszek(a)in.waw.pl> wrote:
On Thu, Dec 30, 2021 at 02:27:04AM -0500, Matthew Miller wrote:
> On Wed, Dec 29, 2021 at 03:17:42PM +0000, Tom Hughes via devel wrote:
> > At this point somebody will no doubt argue that /usr changes on a
> > package update and that the RPM database is a static definition of
> > the currently installed OS files, but evidence says otherwise:
> >
> > % ls -l /var/lib/rpm
> >
> > total 378M
> >
> > -rw-r--r--. 1 root root 378M Dec 28 16:08 rpmdb.sqlite
> > -rw-r--r--. 1 root root 32K Dec 29 09:27 rpmdb.sqlite-shm
> > -rw-r--r--. 1 root root 0 Dec 28 16:08 rpmdb.sqlite-wal
> >
> >
> > While "Dec 28 16:08" is indeed the last time I updated that machine
> > it seems one of the files has changed more recently - no idea what
> > triggered that but clearly the files are not static between updates.
>
> That is a sqlite write-ahead log shared memory file used to coordinate
> access between concurrent clients. Someone who knows more about the depths
> of DNF and RPM than me will need to comment, but it looks like `dnf list`
> touches it -- even though `rpm -qa` doesn't.
$ sudo strace -efile dnf list
...
openat(AT_FDCWD, "/var/lib/rpm/rpmdb.sqlite-wal",
O_RDWR|O_CREAT|O_NOFOLLOW|O_CLOEXEC, 0644) = 4
openat(AT_FDCWD, "/var/lib/rpm/rpmdb.sqlite-shm",
O_RDWR|O_CREAT|O_NOFOLLOW|O_CLOEXEC, 0644) = 5
...
What happens if /var/lib is read-only? Changing (fixing?) this would
be a pre-requisite to this proposal, we don't want 'dnf list' to break.
Why should it be a prerequisite? In all Fedora editions and spins with
dnf, /usr and /var are read-write. In the case of rpm-ostree based
editions and spins, they don't include dnf. I agree dnf should
tolerate read-only rpmdb files, but I'm not following the logic
leading to it being a prerequisite (must tolerate rather than should
tolerate).
--
Chris Murphy