[Pkg-dkms-maint] Bug#810665: "/usr/sbin/dkms status" needs /proc due to bashism

Trent W. Buck trentbuck at gmail.com
Mon Jan 11 06:00:59 UTC 2016


Package: dkms
Version: 2.2.0.3-2
Severity: wishlist

I wanted to install zfsonlinux in a debootstrap chroot.
It didn't work:

    Setting up spl-dkms (0.6.5-1-wheezy) ...
    Removing old spl-0.6.5 DKMS files...
    [ /usr/sbin/dkms status -m spl -v 0.6.5 -k 3.16.0-4-amd64 ]
    /usr/sbin/dkms: line 1874: /dev/fd/62: No such file or directory
    /usr/sbin/dkms: line 1805: /dev/fd/62: No such file or directory

OTOH, "dkms build" works just fine :-)

This is because the bash idiom <(foo) relies on /dev/fd -> /proc/self/fd:

    $ ls -l <(date)
    lr-x------ 1 twb twb 64 Jan 11 16:34 /dev/fd/63 -> pipe:[20778]

But inside a chroot without /proc:

    (bootstrap)# ls -l <(date)
    ls: cannot access /dev/fd/63: No such file or directory

In most cases, dkms uses this because:

    while read ...; do x=...; done < <(f); echo "$x"   # works

    f | while read ...; do x=...; done; echo "$x"      # fails

Because the RHS of a pipe is a child process,
so new lexical binding (x=) can't propagate back to the parent.

So: removing the <()'s would make my life a little easier,
but your life harder.

You will probably WONTFIX this; that's OK.
I decided to report it anyway,
because the reason DKMS needs /proc is not obvious.


PS: bash can use FIFOs instead of /dev/fd,
but it looks like that's a compile-time decision,
and because /proc is usually mounted,
I doubt Debian's bash maintainers will be keen to change that :-)



More information about the Pkg-dkms-maint mailing list