On Monday, 9 October 2023 01:37:09 CEST Santiago Vila wrote:
> El 9/10/23 a las 0:34, Diederik de Haas escribió:
> > I did initially wonder to which package to file the bug against as next to
> > debootstrap I also considered to file it against aptitude.
> > But as the base-files package creates the symlink, I think it's therefor
> > also its responsibility to make sure it points to an existing directory.
> I see your point, but the directory /run/lock is special, because
> directory /run is usually a ramdisk. The base-files package may not be
> responsible for creating it, because it would not survive a reboot.

It seems I'm missing something.

https://sources.debian.org/src/base-files/13/debian/postinst.in/#L76:
```sh
install_directory run/lock 1777 root
```
https://sources.debian.org/src/base-files/13/debian/postinst.in/#L28-L34:
```sh
install_directory() {
  if [ ! -d "$DPKG_ROOT/$1" ]; then
    mkdir "$DPKG_ROOT/$1"
    chown "root:$3" "$DPKG_ROOT/$1"
    chmod "$2" "$DPKG_ROOT/$1"
  fi
}
```

I interpret that as line 76 wants to create directory `/run/lock` and then in 
line 29 it tests whether the dir exist, which it does not, and then in line 30 
it tries to create it ... and that FAILS as it *assumes* the parent directory 
is available, which it turns out not to be.

```sh
ls -lh /run:
drwxr-xr-x 4 root root 160 Oct  8 13:16 host
ls -lh /var:
drwxr-xr-x 5 root root  4.0K Oct  8 13:11 cache
lrwxrwxrwx 1 root root     9 Oct  8 13:12 lock -> /run/lock
lrwxrwxrwx 1 root root     4 Oct  8 13:12 run -> /run
```

Looking at the timestamps (^=part of OP) makes it looks like `/run/` itself 
was created on 13:16 by whatever created `/run/host`, but base-files ran its 
commands on 13:12. 

But the assumption that the parent dir exists is IMO the bug.

> As I said, I don't think we can make base-files responsible for the
> existence of /run/lock.

Isn't that the whole point of line 76?

Cheers,
  Diederik

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to