Luca Boccassi <[email protected]> writes:

>> > So the main point of the proposed change is to improve diagnostics,
>> > right?
>>
>> No. The point is to make it possible to install the coreutils package
>> without installing the libselinux1 package. There are only two
>> available options for that purpose: delete all the selinux-related
>> code and remove the dependency entirely, or make it runtime-optional
>> like openssl already is.
>
> Sorry, brainfart: substitute "systemd" for "selinux". Working to
> change util-linux to dlopen libselinux and wires got crossed.

And the coreutils one [1].

I think the most obvious benefit is that you can avoid installing
libselinux and libsystemd in a container where, as far as I am aware,
they are not needed.

One other thing that occurred to me is that it might improve the
performance of the single binary. That is, when running a command like
'true', you are no longer loading libselinux and libpcre2. That would be
helpful for Red Hat containers, which use coreutils-single, and likely
others:

    $ podman run --rm -it redhat/ubi10
    $ ldd /usr/bin/coreutils 
          linux-vdso.so.1 (0x00007f06e92a7000)
          libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f06e9110000)
          libacl.so.1 => /lib64/libacl.so.1 (0x00007f06e9106000)
          libattr.so.1 => /lib64/libattr.so.1 (0x00007f06e90fe000)
          libcap.so.2 => /lib64/libcap.so.2 (0x00007f06e90f1000)
          libc.so.6 => /lib64/libc.so.6 (0x00007f06e8f16000)
          libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f06e8e74000)
          /lib64/ld-linux-x86-64.so.2 (0x00007f06e92a9000)

Pádraig, I remember you looked into startup times fairly recently. Do
you recall how much of that was from loading shared libraries? No
problem if not, I can stop being lazy and test it myself.

Collin

[1] https://github.com/coreutils/coreutils/pull/317

Reply via email to