Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Remove runtime dependencies from slim and alpine variants" #497

Merged
merged 2 commits into from
Jan 14, 2025

Conversation

Earlopain
Copy link
Contributor

@Earlopain Earlopain commented Jan 14, 2025

This reverts commit 7f078b1. (#493)

It looks like this change is too disruptive. For example, modern rails apps all transitively depend in psych which requires libyaml. Coincidentally my own builds would fail with this.

I still think this change makes sense, but should probably only be part of the next Ruby version so it doesn't suddently break for lots of people.

Closes #495, closes #496

This reverts commit 7f078b1.

It looks like this change is too disruptive. For example, modern rails apps all depend in `psych` which requires libyaml.

I still think it makes sense, but should probably only be part of the next Ruby version so it doesn't suddently break for lots of people.
@mfittko
Copy link

mfittko commented Jan 14, 2025

The psych dependency is ironically not an issue for us, because we have somehow python3 installed on our images which is in turn depending on libyaml-dev. We rather had an issue with ps being pulled as we were using this for non-rails ECS tasks health checks on AWS. I support getting the revert out ASAP and apply this on any new ruby versions only starting from 3.5.

@stevehill1981
Copy link

Yeah, it looks like this has broken about a dozen projects for me 😢

@dawidof
Copy link

dawidof commented Jan 14, 2025

When it's going to be merged?

@tomasmiguez
Copy link

Sorry to be reiterative, but do we have a timeline for merging this? Some of our pipelines are currently broken, and while we can edit our Dockerfiles as a temporary fix, we’d prefer to avoid that if the change will soon be reversed. At the moment, this issue is blocking deployments of new features. Thanks!

@szechyjs
Copy link

agreed this broke zlib gem, which is also standard

@dan-manges
Copy link

dan-manges commented Jan 14, 2025

I'm sure most people coming here know this, but if you need to fix your builds while waiting for this to be merged, you can pin to the previous release sha, e.g.

diff --git a/Dockerfile b/Dockerfile
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
 # syntax = docker/dockerfile:experimental
-FROM registry.docker.com/library/ruby:3.4.1-slim as base
+FROM registry.docker.com/library/ruby:3.4.1-slim@sha256:e872e03ff02996cc9e3200bfc178c306009e851b72b9919f03d7d406ab44da94 as base

Alternatively, install the missing system packages.

@yosifkit
Copy link
Member

yosifkit commented Jan 14, 2025

The breakage is unfortunate but correct. The ruby:*slim and ruby:*alpine images were not intended to keep -dev (header) packages in the final image. We can apply a revert, but the removal of unintentional and unnecessary packages will likely be back at the next patch release of each ruby major.minor (for an easier escape hatch since finding your previous image's content-addressable sha256: digest is harder than it ought to be).

Please use this temporary breakage as a chance to prepare by adding any of the removed packages that you require to your own build-time or runtime dependencies (like Redmine).

Edit: I meant next the patch release of each major.minor (as @tianon implemented).

This adjusts the backwards-compatibility shim to be easier to remove in the future (and automatically removes it at each next minor release).
@tianon
Copy link
Member

tianon commented Jan 14, 2025

I've added commit 1ea0c59

Remove packages again at next minor release of each series

This adjusts the backwards-compatibility shim to be easier to remove in the future (and automatically removes it at each next minor release).

Diff:
$ for version in 3.4 3.1; do for variant in slim-{bookworm,bullseye} alpine3.21; do if [ "$variant" = 'alpine3.21' ]; then cmd=( apk list --installed ); else cmd=( dpkg -l ); fi; printf '\n\n%s\n\n' "ruby:$version-$variant"; diff -u <(docker run --rm "ruby:$version-$variant" "${cmd[@]}") <(docker run --rm $(docker build -q "$version/$variant") "${cmd[@]}"); done; done


ruby:3.4-slim-bookworm

--- /dev/fd/63	2025-01-14 11:25:31.145789294 -0800
+++ /dev/fd/62	2025-01-14 11:25:31.145789294 -0800
@@ -9,6 +9,7 @@
 ii  base-passwd             3.6.1                 amd64        Debian base system master password and group files
 ii  bash                    5.2.15-2+b7           amd64        GNU Bourne Again SHell
 ii  bsdutils                1:2.38.1-5+deb12u3    amd64        basic utilities from 4.4BSD-Lite
+ii  bzip2                   1.0.8-5+b1            amd64        high-quality block-sorting file compressor - utilities
 ii  ca-certificates         20230311              all          Common CA certificates
 ii  coreutils               9.1-1                 amd64        GNU core utilities
 ii  dash                    0.5.12-2              amd64        POSIX-compliant shell
@@ -33,33 +34,48 @@
 ii  libblkid1:amd64         2.38.1-5+deb12u3      amd64        block device ID library
 ii  libbz2-1.0:amd64        1.0.8-5+b1            amd64        high-quality block-sorting file compressor library - runtime
 ii  libc-bin                2.36-9+deb12u9        amd64        GNU C Library: Binaries
+ii  libc-dev-bin            2.36-9+deb12u9        amd64        GNU C Library: Development binaries
 ii  libc6:amd64             2.36-9+deb12u9        amd64        GNU C Library: Shared libraries
+ii  libc6-dev:amd64         2.36-9+deb12u9        amd64        GNU C Library: Development Libraries and Header Files
 ii  libcap-ng0:amd64        0.8.3-1+b3            amd64        alternate POSIX capabilities library
 ii  libcap2:amd64           1:2.66-4              amd64        POSIX 1003.1e capabilities (library)
 ii  libcom-err2:amd64       1.47.0-2              amd64        common error description library
+ii  libcrypt-dev:amd64      1:4.4.33-2            amd64        libcrypt development files
 ii  libcrypt1:amd64         1:4.4.33-2            amd64        libcrypt shared library
 ii  libdb5.3:amd64          5.3.28+dfsg2-1        amd64        Berkeley v5.3 Database Libraries [runtime]
 ii  libdebconfclient0:amd64 0.270                 amd64        Debian Configuration Management System (C-implementation library)
 ii  libext2fs2:amd64        1.47.0-2              amd64        ext2/ext3/ext4 file system libraries
+ii  libffi-dev:amd64        3.4.4-1               amd64        Foreign Function Interface library (development files)
 ii  libffi8:amd64           3.4.4-1               amd64        Foreign Function Interface library runtime
 ii  libgcc-s1:amd64         12.2.0-14             amd64        GCC support library
 ii  libgcrypt20:amd64       1.10.1-3              amd64        LGPL Crypto library - runtime library
+ii  libgmp-dev:amd64        2:6.2.1+dfsg1-1.1     amd64        Multiprecision arithmetic library developers tools
 ii  libgmp10:amd64          2:6.2.1+dfsg1-1.1     amd64        Multiprecision arithmetic library
+ii  libgmpxx4ldbl:amd64     2:6.2.1+dfsg1-1.1     amd64        Multiprecision arithmetic library (C++ bindings)
 ii  libgnutls30:amd64       3.7.9-2+deb12u3       amd64        GNU TLS library - main runtime library
 ii  libgpg-error0:amd64     1.46-1                amd64        GnuPG development runtime library
+ii  libgssapi-krb5-2:amd64  1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
 ii  libhogweed6:amd64       3.8.1-2               amd64        low level cryptographic library (public-key cryptos)
 ii  libidn2-0:amd64         2.3.3-1+b1            amd64        Internationalized domain names (IDNA2008/TR46) library
+ii  libk5crypto3:amd64      1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries - Crypto Library
+ii  libkeyutils1:amd64      1.6.3-2               amd64        Linux Key Management Utilities (library)
+ii  libkrb5-3:amd64         1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries
+ii  libkrb5support0:amd64   1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries - Support library
 ii  liblz4-1:amd64          1.9.4-1               amd64        Fast LZ compression algorithm library - runtime
 ii  liblzma5:amd64          5.4.1-0.2             amd64        XZ-format compression library
 ii  libmd0:amd64            1.0.4-2               amd64        message digest functions from BSD systems - shared library
 ii  libmount1:amd64         2.38.1-5+deb12u3      amd64        device mounting library
+ii  libncursesw6:amd64      6.4-4                 amd64        shared libraries for terminal handling (wide character support)
 ii  libnettle8:amd64        3.8.1-2               amd64        low level cryptographic library (symmetric and one-way cryptos)
+ii  libnsl-dev:amd64        1.3.0-2               amd64        libnsl development files
+ii  libnsl2:amd64           1.3.0-2               amd64        Public client interface for NIS(YP) and NIS+
 ii  libp11-kit0:amd64       0.24.1-2              amd64        library for loading and coordinating access to PKCS#11 modules - runtime
 ii  libpam-modules:amd64    1.5.2-6+deb12u1       amd64        Pluggable Authentication Modules for PAM
 ii  libpam-modules-bin      1.5.2-6+deb12u1       amd64        Pluggable Authentication Modules for PAM - helper binaries
 ii  libpam-runtime          1.5.2-6+deb12u1       all          Runtime support for the PAM library
 ii  libpam0g:amd64          1.5.2-6+deb12u1       amd64        Pluggable Authentication Modules library
 ii  libpcre2-8-0:amd64      10.42-1               amd64        New Perl Compatible Regular Expression Library- 8 bit runtime files
+ii  libproc2-0:amd64        2:4.0.2-3             amd64        library for accessing process information from /proc
 ii  libseccomp2:amd64       2.5.4-1+deb12u1       amd64        high level interface to Linux seccomp filter
 ii  libselinux1:amd64       3.4-1+b6              amd64        SELinux runtime shared libraries
 ii  libsemanage-common      3.4-1                 all          Common files for SELinux policy management libraries
@@ -67,17 +83,23 @@
 ii  libsepol2:amd64         3.4-2.1               amd64        SELinux library for manipulating binary security policies
 ii  libsmartcols1:amd64     2.38.1-5+deb12u3      amd64        smart column output alignment library
 ii  libss2:amd64            1.47.0-2              amd64        command-line interface parsing library
+ii  libssl-dev:amd64        3.0.15-1~deb12u1      amd64        Secure Sockets Layer toolkit - development files
 ii  libssl3:amd64           3.0.15-1~deb12u1      amd64        Secure Sockets Layer toolkit - shared libraries
 ii  libstdc++6:amd64        12.2.0-14             amd64        GNU Standard C++ Library v3
 ii  libsystemd0:amd64       252.33-1~deb12u1      amd64        systemd utility library
 ii  libtasn1-6:amd64        4.19.0-2              amd64        Manage ASN.1 structures (runtime)
 ii  libtinfo6:amd64         6.4-4                 amd64        shared low-level terminfo library for terminal handling
+ii  libtirpc-common         1.3.3+ds-1            all          transport-independent RPC library - common files
+ii  libtirpc-dev:amd64      1.3.3+ds-1            amd64        transport-independent RPC library - development files
+ii  libtirpc3:amd64         1.3.3+ds-1            amd64        transport-independent RPC library
 ii  libudev1:amd64          252.33-1~deb12u1      amd64        libudev shared library
 ii  libunistring2:amd64     1.0-2                 amd64        Unicode string library for C
 ii  libuuid1:amd64          2.38.1-5+deb12u3      amd64        Universally Unique ID library
 ii  libxxhash0:amd64        0.8.1-1               amd64        shared library for xxhash
 ii  libyaml-0-2:amd64       0.2.5-1               amd64        Fast YAML 1.1 parser and emitter library
+ii  libyaml-dev:amd64       0.2.5-1               amd64        Fast YAML 1.1 parser and emitter library (development)
 ii  libzstd1:amd64          1.5.4+dfsg2-5         amd64        fast lossless compression algorithm
+ii  linux-libc-dev:amd64    6.1.123-1             amd64        Linux support headers for userspace development
 ii  login                   1:4.13+dfsg1-1+b1     amd64        system login tools
 ii  logsave                 1.47.0-2              amd64        save the output of a command in a log file
 ii  mawk                    1.3.4.20200120-3.1    amd64        Pattern scanning and text processing language
@@ -87,6 +109,8 @@
 ii  openssl                 3.0.15-1~deb12u1      amd64        Secure Sockets Layer toolkit - cryptographic utility
 ii  passwd                  1:4.13+dfsg1-1+b1     amd64        change and administer password and group data
 ii  perl-base               5.36.0-7+deb12u1      amd64        minimal Perl system
+ii  procps                  2:4.0.2-3             amd64        /proc file system utilities
+ii  rpcsvc-proto            1.4.3-1               amd64        RPC protocol compiler and definitions
 ii  sed                     4.9-1                 amd64        GNU stream editor for filtering/transforming text
 ii  sysvinit-utils          3.06-4                amd64        System-V-like utilities
 ii  tar                     1.34+dfsg-1.2+deb12u1 amd64        GNU version of the tar archiving utility
@@ -95,3 +119,4 @@
 ii  util-linux              2.38.1-5+deb12u3      amd64        miscellaneous system utilities
 ii  util-linux-extra        2.38.1-5+deb12u3      amd64        interactive login tools
 ii  zlib1g:amd64            1:1.2.13.dfsg-1       amd64        compression library - runtime
+ii  zlib1g-dev:amd64        1:1.2.13.dfsg-1       amd64        compression library - development


ruby:3.4-slim-bullseye

--- /dev/fd/63	2025-01-14 11:25:32.321798988 -0800
+++ /dev/fd/62	2025-01-14 11:25:32.321798988 -0800
@@ -9,6 +9,7 @@
 ii  base-passwd             3.5.51                       amd64        Debian base system master password and group files
 ii  bash                    5.1-2+deb11u1                amd64        GNU Bourne Again SHell
 ii  bsdutils                1:2.36.1-8+deb11u2           amd64        basic utilities from 4.4BSD-Lite
+ii  bzip2                   1.0.8-4                      amd64        high-quality block-sorting file compressor - utilities
 ii  ca-certificates         20210119                     all          Common CA certificates
 ii  coreutils               8.32-4+b1                    amd64        GNU core utilities
 ii  dash                    0.5.11+git20200708+dd9ef66-5 amd64        POSIX-compliant shell
@@ -34,17 +35,23 @@
 ii  libblkid1:amd64         2.36.1-8+deb11u2             amd64        block device ID library
 ii  libbz2-1.0:amd64        1.0.8-4                      amd64        high-quality block-sorting file compressor library - runtime
 ii  libc-bin                2.31-13+deb11u11             amd64        GNU C Library: Binaries
+ii  libc-dev-bin            2.31-13+deb11u11             amd64        GNU C Library: Development binaries
 ii  libc6:amd64             2.31-13+deb11u11             amd64        GNU C Library: Shared libraries
+ii  libc6-dev:amd64         2.31-13+deb11u11             amd64        GNU C Library: Development Libraries and Header Files
 ii  libcap-ng0:amd64        0.7.9-2.2+b1                 amd64        An alternate POSIX capabilities library
 ii  libcom-err2:amd64       1.46.2-2+deb11u1             amd64        common error description library
+ii  libcrypt-dev:amd64      1:4.4.18-4                   amd64        libcrypt development files
 ii  libcrypt1:amd64         1:4.4.18-4                   amd64        libcrypt shared library
 ii  libdb5.3:amd64          5.3.28+dfsg1-0.8             amd64        Berkeley v5.3 Database Libraries [runtime]
 ii  libdebconfclient0:amd64 0.260                        amd64        Debian Configuration Management System (C-implementation library)
 ii  libext2fs2:amd64        1.46.2-2+deb11u1             amd64        ext2/ext3/ext4 file system libraries
+ii  libffi-dev:amd64        3.3-6                        amd64        Foreign Function Interface library (development files)
 ii  libffi7:amd64           3.3-6                        amd64        Foreign Function Interface library runtime
 ii  libgcc-s1:amd64         10.2.1-6                     amd64        GCC support library
 ii  libgcrypt20:amd64       1.8.7-6                      amd64        LGPL Crypto library - runtime library
+ii  libgmp-dev:amd64        2:6.2.1+dfsg-1+deb11u1       amd64        Multiprecision arithmetic library developers tools
 ii  libgmp10:amd64          2:6.2.1+dfsg-1+deb11u1       amd64        Multiprecision arithmetic library
+ii  libgmpxx4ldbl:amd64     2:6.2.1+dfsg-1+deb11u1       amd64        Multiprecision arithmetic library (C++ bindings)
 ii  libgnutls30:amd64       3.7.1-5+deb11u6              amd64        GNU TLS library - main runtime library
 ii  libgpg-error0:amd64     1.38-2                       amd64        GnuPG development runtime library
 ii  libgssapi-krb5-2:amd64  1.18.3-6+deb11u5             amd64        MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
@@ -57,7 +64,10 @@
 ii  liblz4-1:amd64          1.9.3-2                      amd64        Fast LZ compression algorithm library - runtime
 ii  liblzma5:amd64          5.2.5-2.1~deb11u1            amd64        XZ-format compression library
 ii  libmount1:amd64         2.36.1-8+deb11u2             amd64        device mounting library
+ii  libncurses6:amd64       6.2+20201114-2+deb11u2       amd64        shared libraries for terminal handling
+ii  libncursesw6:amd64      6.2+20201114-2+deb11u2       amd64        shared libraries for terminal handling (wide character support)
 ii  libnettle8:amd64        3.7.3-1                      amd64        low level cryptographic library (symmetric and one-way cryptos)
+ii  libnsl-dev:amd64        1.3.0-2                      amd64        libnsl development files
 ii  libnsl2:amd64           1.3.0-2                      amd64        Public client interface for NIS(YP) and NIS+
 ii  libp11-kit0:amd64       0.23.22-1                    amd64        library for loading and coordinating access to PKCS#11 modules - runtime
 ii  libpam-modules:amd64    1.4.0-9+deb11u1              amd64        Pluggable Authentication Modules for PAM
@@ -66,6 +76,7 @@
 ii  libpam0g:amd64          1.4.0-9+deb11u1              amd64        Pluggable Authentication Modules library
 ii  libpcre2-8-0:amd64      10.36-2+deb11u1              amd64        New Perl Compatible Regular Expression Library- 8 bit runtime files
 ii  libpcre3:amd64          2:8.39-13                    amd64        Old Perl 5 Compatible Regular Expression Library - runtime files
+ii  libprocps8:amd64        2:3.3.17-5                   amd64        library for accessing process information from /proc
 ii  libseccomp2:amd64       2.5.1-1+deb11u1              amd64        high level interface to Linux seccomp filter
 ii  libselinux1:amd64       3.1-3                        amd64        SELinux runtime shared libraries
 ii  libsemanage-common      3.1-1                        all          Common files for SELinux policy management libraries
@@ -73,19 +84,23 @@
 ii  libsepol1:amd64         3.1-1+deb11u1                amd64        SELinux library for manipulating binary security policies
 ii  libsmartcols1:amd64     2.36.1-8+deb11u2             amd64        smart column output alignment library
 ii  libss2:amd64            1.46.2-2+deb11u1             amd64        command-line interface parsing library
+ii  libssl-dev:amd64        1.1.1w-0+deb11u2             amd64        Secure Sockets Layer toolkit - development files
 ii  libssl1.1:amd64         1.1.1w-0+deb11u2             amd64        Secure Sockets Layer toolkit - shared libraries
 ii  libstdc++6:amd64        10.2.1-6                     amd64        GNU Standard C++ Library v3
 ii  libsystemd0:amd64       247.3-7+deb11u6              amd64        systemd utility library
 ii  libtasn1-6:amd64        4.16.0-2+deb11u1             amd64        Manage ASN.1 structures (runtime)
 ii  libtinfo6:amd64         6.2+20201114-2+deb11u2       amd64        shared low-level terminfo library for terminal handling
 ii  libtirpc-common         1.3.1-1+deb11u1              all          transport-independent RPC library - common files
+ii  libtirpc-dev:amd64      1.3.1-1+deb11u1              amd64        transport-independent RPC library - development files
 ii  libtirpc3:amd64         1.3.1-1+deb11u1              amd64        transport-independent RPC library
 ii  libudev1:amd64          247.3-7+deb11u6              amd64        libudev shared library
 ii  libunistring2:amd64     0.9.10-4                     amd64        Unicode string library for C
 ii  libuuid1:amd64          2.36.1-8+deb11u2             amd64        Universally Unique ID library
 ii  libxxhash0:amd64        0.8.0-2                      amd64        shared library for xxhash
 ii  libyaml-0-2:amd64       0.2.2-1                      amd64        Fast YAML 1.1 parser and emitter library
+ii  libyaml-dev:amd64       0.2.2-1                      amd64        Fast YAML 1.1 parser and emitter library (development)
 ii  libzstd1:amd64          1.4.8+dfsg-2.1               amd64        fast lossless compression algorithm
+ii  linux-libc-dev:amd64    5.10.226-1                   amd64        Linux support headers for userspace development
 ii  login                   1:4.8.1-1                    amd64        system login tools
 ii  logsave                 1.46.2-2+deb11u1             amd64        save the output of a command in a log file
 ii  lsb-base                11.1.0                       all          Linux Standard Base init script functionality
@@ -96,9 +111,11 @@
 ii  openssl                 1.1.1w-0+deb11u2             amd64        Secure Sockets Layer toolkit - cryptographic utility
 ii  passwd                  1:4.8.1-1                    amd64        change and administer password and group data
 ii  perl-base               5.32.1-4+deb11u4             amd64        minimal Perl system
+ii  procps                  2:3.3.17-5                   amd64        /proc file system utilities
 ii  sed                     4.7-1                        amd64        GNU stream editor for filtering/transforming text
 ii  sysvinit-utils          2.96-7+deb11u1               amd64        System-V-like utilities
 ii  tar                     1.34+dfsg-1+deb11u1          amd64        GNU version of the tar archiving utility
 ii  tzdata                  2024b-0+deb11u1              all          time zone and daylight-saving time data
 ii  util-linux              2.36.1-8+deb11u2             amd64        miscellaneous system utilities
 ii  zlib1g:amd64            1:1.2.11.dfsg-2+deb11u2      amd64        compression library - runtime
+ii  zlib1g-dev:amd64        1:1.2.11.dfsg-2+deb11u2      amd64        compression library - development


ruby:3.4-alpine3.21

--- /dev/fd/63	2025-01-14 11:25:33.737810661 -0800
+++ /dev/fd/62	2025-01-14 11:25:33.737810661 -0800
@@ -1,4 +1,5 @@
-.ruby-rundeps-20250114.013745 noarch {.ruby-rundeps} () [installed]
+.ruby-493-backcompat-20250114.191511 noarch {.ruby-493-backcompat} () [installed]
+.ruby-rundeps-20250114.191511 noarch {.ruby-rundeps} () [installed]
 alpine-baselayout-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-baselayout-data-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-keys-2.5-r0 x86_64 {alpine-keys} (MIT) [installed]
@@ -6,15 +7,30 @@
 apk-tools-2.14.6-r2 x86_64 {apk-tools} (GPL-2.0-only) [installed]
 busybox-1.37.0-r9 x86_64 {busybox} (GPL-2.0-only) [installed]
 busybox-binsh-1.37.0-r9 x86_64 {busybox} (GPL-2.0-only) [installed]
+bzip2-1.0.8-r6 x86_64 {bzip2} (bzip2-1.0.6) [installed]
+ca-certificates-20241121-r1 x86_64 {ca-certificates} (MPL-2.0 AND MIT) [installed]
 ca-certificates-bundle-20241121-r1 x86_64 {ca-certificates} (MPL-2.0 AND MIT) [installed]
 gmp-6.3.0-r2 x86_64 {gmp} (LGPL-3.0-or-later OR GPL-2.0-or-later) [installed]
+gmp-dev-6.3.0-r2 x86_64 {gmp} (LGPL-3.0-or-later OR GPL-2.0-or-later) [installed]
 libcrypto3-3.3.2-r4 x86_64 {openssl} (Apache-2.0) [installed]
 libffi-3.4.6-r0 x86_64 {libffi} (MIT) [installed]
+libffi-dev-3.4.6-r0 x86_64 {libffi} (MIT) [installed]
 libgcc-14.2.0-r4 x86_64 {gcc} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
+libgmpxx-6.3.0-r2 x86_64 {gmp} (LGPL-3.0-or-later OR GPL-2.0-or-later) [installed]
+libintl-0.22.5-r0 x86_64 {gettext} (LGPL-2.1-or-later) [installed]
+libncursesw-6.5_p20241006-r3 x86_64 {ncurses} (X11) [installed]
+libproc2-4.0.4-r2 x86_64 {procps-ng} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
 libssl3-3.3.2-r4 x86_64 {openssl} (Apache-2.0) [installed]
+libstdc++-14.2.0-r4 x86_64 {gcc} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
+linux-headers-6.6-r1 x86_64 {linux-headers} (GPL-2.0-only) [installed]
 musl-1.2.5-r8 x86_64 {musl} (MIT) [installed]
 musl-utils-1.2.5-r8 x86_64 {musl} (MIT AND BSD-2-Clause AND GPL-2.0-or-later) [installed]
+ncurses-terminfo-base-6.5_p20241006-r3 x86_64 {ncurses} (X11) [installed]
+pkgconf-2.3.0-r0 x86_64 {pkgconf} (ISC) [installed]
+procps-ng-4.0.4-r2 x86_64 {procps-ng} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
 scanelf-1.3.8-r1 x86_64 {pax-utils} (GPL-2.0-only) [installed]
 ssl_client-1.37.0-r9 x86_64 {busybox} (GPL-2.0-only) [installed]
 yaml-0.2.5-r2 x86_64 {yaml} (MIT) [installed]
+yaml-dev-0.2.5-r2 x86_64 {yaml} (MIT) [installed]
 zlib-1.3.1-r2 x86_64 {zlib} (Zlib) [installed]
+zlib-dev-1.3.1-r2 x86_64 {zlib} (Zlib) [installed]


ruby:3.1-slim-bookworm

--- /dev/fd/63	2025-01-14 11:25:35.549825601 -0800
+++ /dev/fd/62	2025-01-14 11:25:35.549825601 -0800
@@ -9,6 +9,7 @@
 ii  base-passwd             3.6.1                 amd64        Debian base system master password and group files
 ii  bash                    5.2.15-2+b7           amd64        GNU Bourne Again SHell
 ii  bsdutils                1:2.38.1-5+deb12u3    amd64        basic utilities from 4.4BSD-Lite
+ii  bzip2                   1.0.8-5+b1            amd64        high-quality block-sorting file compressor - utilities
 ii  ca-certificates         20230311              all          Common CA certificates
 ii  coreutils               9.1-1                 amd64        GNU core utilities
 ii  dash                    0.5.12-2              amd64        POSIX-compliant shell
@@ -33,34 +34,49 @@
 ii  libblkid1:amd64         2.38.1-5+deb12u3      amd64        block device ID library
 ii  libbz2-1.0:amd64        1.0.8-5+b1            amd64        high-quality block-sorting file compressor library - runtime
 ii  libc-bin                2.36-9+deb12u9        amd64        GNU C Library: Binaries
+ii  libc-dev-bin            2.36-9+deb12u9        amd64        GNU C Library: Development binaries
 ii  libc6:amd64             2.36-9+deb12u9        amd64        GNU C Library: Shared libraries
+ii  libc6-dev:amd64         2.36-9+deb12u9        amd64        GNU C Library: Development Libraries and Header Files
 ii  libcap-ng0:amd64        0.8.3-1+b3            amd64        alternate POSIX capabilities library
 ii  libcap2:amd64           1:2.66-4              amd64        POSIX 1003.1e capabilities (library)
 ii  libcom-err2:amd64       1.47.0-2              amd64        common error description library
+ii  libcrypt-dev:amd64      1:4.4.33-2            amd64        libcrypt development files
 ii  libcrypt1:amd64         1:4.4.33-2            amd64        libcrypt shared library
 ii  libdb5.3:amd64          5.3.28+dfsg2-1        amd64        Berkeley v5.3 Database Libraries [runtime]
 ii  libdebconfclient0:amd64 0.270                 amd64        Debian Configuration Management System (C-implementation library)
 ii  libext2fs2:amd64        1.47.0-2              amd64        ext2/ext3/ext4 file system libraries
+ii  libffi-dev:amd64        3.4.4-1               amd64        Foreign Function Interface library (development files)
 ii  libffi8:amd64           3.4.4-1               amd64        Foreign Function Interface library runtime
 ii  libgcc-s1:amd64         12.2.0-14             amd64        GCC support library
 ii  libgcrypt20:amd64       1.10.1-3              amd64        LGPL Crypto library - runtime library
+ii  libgmp-dev:amd64        2:6.2.1+dfsg1-1.1     amd64        Multiprecision arithmetic library developers tools
 ii  libgmp10:amd64          2:6.2.1+dfsg1-1.1     amd64        Multiprecision arithmetic library
+ii  libgmpxx4ldbl:amd64     2:6.2.1+dfsg1-1.1     amd64        Multiprecision arithmetic library (C++ bindings)
 ii  libgnutls30:amd64       3.7.9-2+deb12u3       amd64        GNU TLS library - main runtime library
 ii  libgpg-error0:amd64     1.46-1                amd64        GnuPG development runtime library
+ii  libgssapi-krb5-2:amd64  1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
 ii  libhogweed6:amd64       3.8.1-2               amd64        low level cryptographic library (public-key cryptos)
 ii  libidn2-0:amd64         2.3.3-1+b1            amd64        Internationalized domain names (IDNA2008/TR46) library
+ii  libk5crypto3:amd64      1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries - Crypto Library
+ii  libkeyutils1:amd64      1.6.3-2               amd64        Linux Key Management Utilities (library)
+ii  libkrb5-3:amd64         1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries
+ii  libkrb5support0:amd64   1.20.1-2+deb12u2      amd64        MIT Kerberos runtime libraries - Support library
 ii  liblz4-1:amd64          1.9.4-1               amd64        Fast LZ compression algorithm library - runtime
 ii  liblzma5:amd64          5.4.1-0.2             amd64        XZ-format compression library
 ii  libmd0:amd64            1.0.4-2               amd64        message digest functions from BSD systems - shared library
 ii  libmount1:amd64         2.38.1-5+deb12u3      amd64        device mounting library
 ii  libncurses6:amd64       6.4-4                 amd64        shared libraries for terminal handling
+ii  libncursesw6:amd64      6.4-4                 amd64        shared libraries for terminal handling (wide character support)
 ii  libnettle8:amd64        3.8.1-2               amd64        low level cryptographic library (symmetric and one-way cryptos)
+ii  libnsl-dev:amd64        1.3.0-2               amd64        libnsl development files
+ii  libnsl2:amd64           1.3.0-2               amd64        Public client interface for NIS(YP) and NIS+
 ii  libp11-kit0:amd64       0.24.1-2              amd64        library for loading and coordinating access to PKCS#11 modules - runtime
 ii  libpam-modules:amd64    1.5.2-6+deb12u1       amd64        Pluggable Authentication Modules for PAM
 ii  libpam-modules-bin      1.5.2-6+deb12u1       amd64        Pluggable Authentication Modules for PAM - helper binaries
 ii  libpam-runtime          1.5.2-6+deb12u1       all          Runtime support for the PAM library
 ii  libpam0g:amd64          1.5.2-6+deb12u1       amd64        Pluggable Authentication Modules library
 ii  libpcre2-8-0:amd64      10.42-1               amd64        New Perl Compatible Regular Expression Library- 8 bit runtime files
+ii  libproc2-0:amd64        2:4.0.2-3             amd64        library for accessing process information from /proc
 ii  libreadline8:amd64      8.2-1.3               amd64        GNU readline and history libraries, run-time libraries
 ii  libseccomp2:amd64       2.5.4-1+deb12u1       amd64        high level interface to Linux seccomp filter
 ii  libselinux1:amd64       3.4-1+b6              amd64        SELinux runtime shared libraries
@@ -69,17 +85,23 @@
 ii  libsepol2:amd64         3.4-2.1               amd64        SELinux library for manipulating binary security policies
 ii  libsmartcols1:amd64     2.38.1-5+deb12u3      amd64        smart column output alignment library
 ii  libss2:amd64            1.47.0-2              amd64        command-line interface parsing library
+ii  libssl-dev:amd64        3.0.15-1~deb12u1      amd64        Secure Sockets Layer toolkit - development files
 ii  libssl3:amd64           3.0.15-1~deb12u1      amd64        Secure Sockets Layer toolkit - shared libraries
 ii  libstdc++6:amd64        12.2.0-14             amd64        GNU Standard C++ Library v3
 ii  libsystemd0:amd64       252.33-1~deb12u1      amd64        systemd utility library
 ii  libtasn1-6:amd64        4.19.0-2              amd64        Manage ASN.1 structures (runtime)
 ii  libtinfo6:amd64         6.4-4                 amd64        shared low-level terminfo library for terminal handling
+ii  libtirpc-common         1.3.3+ds-1            all          transport-independent RPC library - common files
+ii  libtirpc-dev:amd64      1.3.3+ds-1            amd64        transport-independent RPC library - development files
+ii  libtirpc3:amd64         1.3.3+ds-1            amd64        transport-independent RPC library
 ii  libudev1:amd64          252.33-1~deb12u1      amd64        libudev shared library
 ii  libunistring2:amd64     1.0-2                 amd64        Unicode string library for C
 ii  libuuid1:amd64          2.38.1-5+deb12u3      amd64        Universally Unique ID library
 ii  libxxhash0:amd64        0.8.1-1               amd64        shared library for xxhash
 ii  libyaml-0-2:amd64       0.2.5-1               amd64        Fast YAML 1.1 parser and emitter library
+ii  libyaml-dev:amd64       0.2.5-1               amd64        Fast YAML 1.1 parser and emitter library (development)
 ii  libzstd1:amd64          1.5.4+dfsg2-5         amd64        fast lossless compression algorithm
+ii  linux-libc-dev:amd64    6.1.123-1             amd64        Linux support headers for userspace development
 ii  login                   1:4.13+dfsg1-1+b1     amd64        system login tools
 ii  logsave                 1.47.0-2              amd64        save the output of a command in a log file
 ii  mawk                    1.3.4.20200120-3.1    amd64        Pattern scanning and text processing language
@@ -89,7 +111,9 @@
 ii  openssl                 3.0.15-1~deb12u1      amd64        Secure Sockets Layer toolkit - cryptographic utility
 ii  passwd                  1:4.13+dfsg1-1+b1     amd64        change and administer password and group data
 ii  perl-base               5.36.0-7+deb12u1      amd64        minimal Perl system
+ii  procps                  2:4.0.2-3             amd64        /proc file system utilities
 ii  readline-common         8.2-1.3               all          GNU readline and history libraries, common files
+ii  rpcsvc-proto            1.4.3-1               amd64        RPC protocol compiler and definitions
 ii  sed                     4.9-1                 amd64        GNU stream editor for filtering/transforming text
 ii  sysvinit-utils          3.06-4                amd64        System-V-like utilities
 ii  tar                     1.34+dfsg-1.2+deb12u1 amd64        GNU version of the tar archiving utility
@@ -98,3 +122,4 @@
 ii  util-linux              2.38.1-5+deb12u3      amd64        miscellaneous system utilities
 ii  util-linux-extra        2.38.1-5+deb12u3      amd64        interactive login tools
 ii  zlib1g:amd64            1:1.2.13.dfsg-1       amd64        compression library - runtime
+ii  zlib1g-dev:amd64        1:1.2.13.dfsg-1       amd64        compression library - development


ruby:3.1-slim-bullseye

--- /dev/fd/63	2025-01-14 11:25:37.089838300 -0800
+++ /dev/fd/62	2025-01-14 11:25:37.089838300 -0800
@@ -9,6 +9,7 @@
 ii  base-passwd             3.5.51                       amd64        Debian base system master password and group files
 ii  bash                    5.1-2+deb11u1                amd64        GNU Bourne Again SHell
 ii  bsdutils                1:2.36.1-8+deb11u2           amd64        basic utilities from 4.4BSD-Lite
+ii  bzip2                   1.0.8-4                      amd64        high-quality block-sorting file compressor - utilities
 ii  ca-certificates         20210119                     all          Common CA certificates
 ii  coreutils               8.32-4+b1                    amd64        GNU core utilities
 ii  dash                    0.5.11+git20200708+dd9ef66-5 amd64        POSIX-compliant shell
@@ -34,17 +35,23 @@
 ii  libblkid1:amd64         2.36.1-8+deb11u2             amd64        block device ID library
 ii  libbz2-1.0:amd64        1.0.8-4                      amd64        high-quality block-sorting file compressor library - runtime
 ii  libc-bin                2.31-13+deb11u11             amd64        GNU C Library: Binaries
+ii  libc-dev-bin            2.31-13+deb11u11             amd64        GNU C Library: Development binaries
 ii  libc6:amd64             2.31-13+deb11u11             amd64        GNU C Library: Shared libraries
+ii  libc6-dev:amd64         2.31-13+deb11u11             amd64        GNU C Library: Development Libraries and Header Files
 ii  libcap-ng0:amd64        0.7.9-2.2+b1                 amd64        An alternate POSIX capabilities library
 ii  libcom-err2:amd64       1.46.2-2+deb11u1             amd64        common error description library
+ii  libcrypt-dev:amd64      1:4.4.18-4                   amd64        libcrypt development files
 ii  libcrypt1:amd64         1:4.4.18-4                   amd64        libcrypt shared library
 ii  libdb5.3:amd64          5.3.28+dfsg1-0.8             amd64        Berkeley v5.3 Database Libraries [runtime]
 ii  libdebconfclient0:amd64 0.260                        amd64        Debian Configuration Management System (C-implementation library)
 ii  libext2fs2:amd64        1.46.2-2+deb11u1             amd64        ext2/ext3/ext4 file system libraries
+ii  libffi-dev:amd64        3.3-6                        amd64        Foreign Function Interface library (development files)
 ii  libffi7:amd64           3.3-6                        amd64        Foreign Function Interface library runtime
 ii  libgcc-s1:amd64         10.2.1-6                     amd64        GCC support library
 ii  libgcrypt20:amd64       1.8.7-6                      amd64        LGPL Crypto library - runtime library
+ii  libgmp-dev:amd64        2:6.2.1+dfsg-1+deb11u1       amd64        Multiprecision arithmetic library developers tools
 ii  libgmp10:amd64          2:6.2.1+dfsg-1+deb11u1       amd64        Multiprecision arithmetic library
+ii  libgmpxx4ldbl:amd64     2:6.2.1+dfsg-1+deb11u1       amd64        Multiprecision arithmetic library (C++ bindings)
 ii  libgnutls30:amd64       3.7.1-5+deb11u6              amd64        GNU TLS library - main runtime library
 ii  libgpg-error0:amd64     1.38-2                       amd64        GnuPG development runtime library
 ii  libgssapi-krb5-2:amd64  1.18.3-6+deb11u5             amd64        MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
@@ -58,7 +65,9 @@
 ii  liblzma5:amd64          5.2.5-2.1~deb11u1            amd64        XZ-format compression library
 ii  libmount1:amd64         2.36.1-8+deb11u2             amd64        device mounting library
 ii  libncurses6:amd64       6.2+20201114-2+deb11u2       amd64        shared libraries for terminal handling
+ii  libncursesw6:amd64      6.2+20201114-2+deb11u2       amd64        shared libraries for terminal handling (wide character support)
 ii  libnettle8:amd64        3.7.3-1                      amd64        low level cryptographic library (symmetric and one-way cryptos)
+ii  libnsl-dev:amd64        1.3.0-2                      amd64        libnsl development files
 ii  libnsl2:amd64           1.3.0-2                      amd64        Public client interface for NIS(YP) and NIS+
 ii  libp11-kit0:amd64       0.23.22-1                    amd64        library for loading and coordinating access to PKCS#11 modules - runtime
 ii  libpam-modules:amd64    1.4.0-9+deb11u1              amd64        Pluggable Authentication Modules for PAM
@@ -67,6 +76,7 @@
 ii  libpam0g:amd64          1.4.0-9+deb11u1              amd64        Pluggable Authentication Modules library
 ii  libpcre2-8-0:amd64      10.36-2+deb11u1              amd64        New Perl Compatible Regular Expression Library- 8 bit runtime files
 ii  libpcre3:amd64          2:8.39-13                    amd64        Old Perl 5 Compatible Regular Expression Library - runtime files
+ii  libprocps8:amd64        2:3.3.17-5                   amd64        library for accessing process information from /proc
 ii  libreadline8:amd64      8.1-1                        amd64        GNU readline and history libraries, run-time libraries
 ii  libseccomp2:amd64       2.5.1-1+deb11u1              amd64        high level interface to Linux seccomp filter
 ii  libselinux1:amd64       3.1-3                        amd64        SELinux runtime shared libraries
@@ -75,19 +85,23 @@
 ii  libsepol1:amd64         3.1-1+deb11u1                amd64        SELinux library for manipulating binary security policies
 ii  libsmartcols1:amd64     2.36.1-8+deb11u2             amd64        smart column output alignment library
 ii  libss2:amd64            1.46.2-2+deb11u1             amd64        command-line interface parsing library
+ii  libssl-dev:amd64        1.1.1w-0+deb11u2             amd64        Secure Sockets Layer toolkit - development files
 ii  libssl1.1:amd64         1.1.1w-0+deb11u2             amd64        Secure Sockets Layer toolkit - shared libraries
 ii  libstdc++6:amd64        10.2.1-6                     amd64        GNU Standard C++ Library v3
 ii  libsystemd0:amd64       247.3-7+deb11u6              amd64        systemd utility library
 ii  libtasn1-6:amd64        4.16.0-2+deb11u1             amd64        Manage ASN.1 structures (runtime)
 ii  libtinfo6:amd64         6.2+20201114-2+deb11u2       amd64        shared low-level terminfo library for terminal handling
 ii  libtirpc-common         1.3.1-1+deb11u1              all          transport-independent RPC library - common files
+ii  libtirpc-dev:amd64      1.3.1-1+deb11u1              amd64        transport-independent RPC library - development files
 ii  libtirpc3:amd64         1.3.1-1+deb11u1              amd64        transport-independent RPC library
 ii  libudev1:amd64          247.3-7+deb11u6              amd64        libudev shared library
 ii  libunistring2:amd64     0.9.10-4                     amd64        Unicode string library for C
 ii  libuuid1:amd64          2.36.1-8+deb11u2             amd64        Universally Unique ID library
 ii  libxxhash0:amd64        0.8.0-2                      amd64        shared library for xxhash
 ii  libyaml-0-2:amd64       0.2.2-1                      amd64        Fast YAML 1.1 parser and emitter library
+ii  libyaml-dev:amd64       0.2.2-1                      amd64        Fast YAML 1.1 parser and emitter library (development)
 ii  libzstd1:amd64          1.4.8+dfsg-2.1               amd64        fast lossless compression algorithm
+ii  linux-libc-dev:amd64    5.10.226-1                   amd64        Linux support headers for userspace development
 ii  login                   1:4.8.1-1                    amd64        system login tools
 ii  logsave                 1.46.2-2+deb11u1             amd64        save the output of a command in a log file
 ii  lsb-base                11.1.0                       all          Linux Standard Base init script functionality
@@ -98,6 +112,7 @@
 ii  openssl                 1.1.1w-0+deb11u2             amd64        Secure Sockets Layer toolkit - cryptographic utility
 ii  passwd                  1:4.8.1-1                    amd64        change and administer password and group data
 ii  perl-base               5.32.1-4+deb11u4             amd64        minimal Perl system
+ii  procps                  2:3.3.17-5                   amd64        /proc file system utilities
 ii  readline-common         8.1-1                        all          GNU readline and history libraries, common files
 ii  sed                     4.7-1                        amd64        GNU stream editor for filtering/transforming text
 ii  sysvinit-utils          2.96-7+deb11u1               amd64        System-V-like utilities
@@ -105,3 +120,4 @@
 ii  tzdata                  2024b-0+deb11u1              all          time zone and daylight-saving time data
 ii  util-linux              2.36.1-8+deb11u2             amd64        miscellaneous system utilities
 ii  zlib1g:amd64            1:1.2.11.dfsg-2+deb11u2      amd64        compression library - runtime
+ii  zlib1g-dev:amd64        1:1.2.11.dfsg-2+deb11u2      amd64        compression library - development


ruby:3.1-alpine3.21

--- /dev/fd/63	2025-01-14 11:25:38.381848956 -0800
+++ /dev/fd/62	2025-01-14 11:25:38.381848956 -0800
@@ -1,4 +1,5 @@
-.ruby-rundeps-20250114.013652 noarch {.ruby-rundeps} () [installed]
+.ruby-493-backcompat-20250114.191428 noarch {.ruby-493-backcompat} () [installed]
+.ruby-rundeps-20250114.191428 noarch {.ruby-rundeps} () [installed]
 alpine-baselayout-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-baselayout-data-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-keys-2.5-r0 x86_64 {alpine-keys} (MIT) [installed]
@@ -6,17 +7,31 @@
 apk-tools-2.14.6-r2 x86_64 {apk-tools} (GPL-2.0-only) [installed]
 busybox-1.37.0-r9 x86_64 {busybox} (GPL-2.0-only) [installed]
 busybox-binsh-1.37.0-r9 x86_64 {busybox} (GPL-2.0-only) [installed]
+bzip2-1.0.8-r6 x86_64 {bzip2} (bzip2-1.0.6) [installed]
+ca-certificates-20241121-r1 x86_64 {ca-certificates} (MPL-2.0 AND MIT) [installed]
 ca-certificates-bundle-20241121-r1 x86_64 {ca-certificates} (MPL-2.0 AND MIT) [installed]
 gmp-6.3.0-r2 x86_64 {gmp} (LGPL-3.0-or-later OR GPL-2.0-or-later) [installed]
+gmp-dev-6.3.0-r2 x86_64 {gmp} (LGPL-3.0-or-later OR GPL-2.0-or-later) [installed]
 libcrypto3-3.3.2-r4 x86_64 {openssl} (Apache-2.0) [installed]
 libffi-3.4.6-r0 x86_64 {libffi} (MIT) [installed]
+libffi-dev-3.4.6-r0 x86_64 {libffi} (MIT) [installed]
+libgcc-14.2.0-r4 x86_64 {gcc} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
+libgmpxx-6.3.0-r2 x86_64 {gmp} (LGPL-3.0-or-later OR GPL-2.0-or-later) [installed]
+libintl-0.22.5-r0 x86_64 {gettext} (LGPL-2.1-or-later) [installed]
 libncursesw-6.5_p20241006-r3 x86_64 {ncurses} (X11) [installed]
+libproc2-4.0.4-r2 x86_64 {procps-ng} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
 libssl3-3.3.2-r4 x86_64 {openssl} (Apache-2.0) [installed]
+libstdc++-14.2.0-r4 x86_64 {gcc} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
+linux-headers-6.6-r1 x86_64 {linux-headers} (GPL-2.0-only) [installed]
 musl-1.2.5-r8 x86_64 {musl} (MIT) [installed]
 musl-utils-1.2.5-r8 x86_64 {musl} (MIT AND BSD-2-Clause AND GPL-2.0-or-later) [installed]
 ncurses-terminfo-base-6.5_p20241006-r3 x86_64 {ncurses} (X11) [installed]
+pkgconf-2.3.0-r0 x86_64 {pkgconf} (ISC) [installed]
+procps-ng-4.0.4-r2 x86_64 {procps-ng} (GPL-2.0-or-later AND LGPL-2.1-or-later) [installed]
 readline-8.2.13-r0 x86_64 {readline} (GPL-3.0-or-later) [installed]
 scanelf-1.3.8-r1 x86_64 {pax-utils} (GPL-2.0-only) [installed]
 ssl_client-1.37.0-r9 x86_64 {busybox} (GPL-2.0-only) [installed]
 yaml-0.2.5-r2 x86_64 {yaml} (MIT) [installed]
+yaml-dev-0.2.5-r2 x86_64 {yaml} (MIT) [installed]
 zlib-1.3.1-r2 x86_64 {zlib} (Zlib) [installed]
+zlib-dev-1.3.1-r2 x86_64 {zlib} (Zlib) [installed]

@tamaloa
Copy link

tamaloa commented Jan 14, 2025

FYI - rails has already added now necessary packages to the default Dockerfile - rails/rails#54237

@tianon
Copy link
Member

tianon commented Jan 14, 2025

(I'm working on another diff to compare the pure revert version / old version's packages to my change to validate that it correctly does bring everything we expect back in, which should be a smaller diff than what I posted above and easier to review for correctness.)

@Earlopain
Copy link
Contributor Author

Earlopain commented Jan 14, 2025

@tianon what do you think about keeping it indefinitely for 3.1/3.2/3.3/3.4? I understand the inclusion of the dev packages is unintentional and I totally agree about removing them eventually.

But considering they have been a part of the image for almost a decade and no one really noticed I don't think this needs to be pushed even in a patch version.

@tianon
Copy link
Member

tianon commented Jan 14, 2025

For Alpine, these unintentional dependencies account for a ~25MiB image size increase (in a ~100MiB image, that's pretty sizeable).

For Debian-based Slim variants, it's ~50MiB (on a ~220MiB image).

Size isn't the end-all-be-all, of course, but both of these variants have minimal image size as an explicit goal, so it seems useful and even important that we correct our mistake. Doing it on a minor version bump means that (as noted above), it's easier for users to pin to a working version while they figure out which of these dependencies they need to fix their builds and don't have to dig up a content-digest, so it seems like a pretty fair compromise.

(I'm working on another diff to compare the pure revert version / old version's packages to my change to validate that it correctly does bring everything we expect back in, which should be a smaller diff than what I posted above and easier to review for correctness.)

As promised:

Diff:
ruby:3.4-slim-bookworm



ruby:3.4-slim-bullseye



ruby:3.4-alpine3.21

--- /dev/fd/63	2025-01-14 11:43:52.523585335 -0800
+++ /dev/fd/62	2025-01-14 11:43:52.527585370 -0800
@@ -1,4 +1,5 @@
-.ruby-rundeps-20250114.193809 noarch {.ruby-rundeps} () [installed]
+.ruby-493-backcompat-20250114.191511 noarch {.ruby-493-backcompat} () [installed]
+.ruby-rundeps-20250114.191511 noarch {.ruby-rundeps} () [installed]
 alpine-baselayout-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-baselayout-data-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-keys-2.5-r0 x86_64 {alpine-keys} (MIT) [installed]


ruby:3.1-slim-bookworm



ruby:3.1-slim-bullseye



ruby:3.1-alpine3.21

--- /dev/fd/63	2025-01-14 11:43:56.495620656 -0800
+++ /dev/fd/62	2025-01-14 11:43:56.495620656 -0800
@@ -1,4 +1,5 @@
-.ruby-rundeps-20250114.194243 noarch {.ruby-rundeps} () [installed]
+.ruby-493-backcompat-20250114.191428 noarch {.ruby-493-backcompat} () [installed]
+.ruby-rundeps-20250114.191428 noarch {.ruby-rundeps} () [installed]
 alpine-baselayout-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-baselayout-data-3.6.8-r1 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
 alpine-keys-2.5-r0 x86_64 {alpine-keys} (MIT) [installed]

@Earlopain
Copy link
Contributor Author

Doing it on a minor version bump ...

I guess most(?) do specify the patch version so if you have even the smallest amount of CI it should catch it. I just rank the size savings so very low since it went unnoticed for sooo long. I can't really tell if it would repeat with the next patch versions, so I would be more conservative, but it may be fine.

@mfittko
Copy link

mfittko commented Jan 14, 2025

I guess most should have already noticed the issue and added the build dependencies in the respective build stages (where they honestly belong). It's just unfortunate that it surfaced like this, so maybe take it as a note for the future to at least add a warning first, before adding breaking changes and/or add the breaking changes in the next patch or (conservatively) minor version(s).

@tianon
Copy link
Member

tianon commented Jan 14, 2025

We don't really have a better way to notify users of things like this -- a warning would've been lost in the logs, totally unnoticed. 😞

@tianon
Copy link
Member

tianon commented Jan 14, 2025

(There's also not an obvious place to add a warning -- we'd have to add something nutty like a wrapper script around ... apt? ruby?)

@mfittko
Copy link

mfittko commented Jan 14, 2025

Yeah that's why it's probably better to just keep the patch versions backwards compatible. You're right, a warning would have most likely been lost in the logs. There's also no built in mechanism for notifying docker users of such changes.

@yosifkit
Copy link
Member

I'll go ahead and merge this to at least get the revert in. LGTM.

If you'd still like to discuss or change when it will come back, let's open a new PR/issue.

@yosifkit yosifkit merged commit 2ba928a into docker-library:master Jan 14, 2025
26 checks passed
docker-library-bot added a commit to docker-library-bot/official-images that referenced this pull request Jan 14, 2025
Changes:

- docker-library/ruby@2ba928a: Merge pull request docker-library/ruby#497 from Earlopain/revert-slim-trim
- docker-library/ruby@1ea0c59: Remove packages again at next minor release of each series
- docker-library/ruby@6f84caa: Revert "Remove runtime dependencies from slim and alpine variants"
@sergioruiz-jt
Copy link

@tianon Hi! It is true that even if it were included in the logs, it would probably result in the message being lost and unnoticed.

Anyway, developers usually test newer images before bumping versions, so they would notice if something is failing.

What we should avoid is introducing changes to already released and tagged versions when those are already in use.

@seandilda
Copy link
Contributor

When will new images be deployed? The latest ruby:3.3-slim was built before this was reverted.

@yosifkit
Copy link
Member

#498 (comment):

The builds from #497 (comment) should've gone out yesterday (docker-library/official-images#18238) but there's been some kind of glitch 😞

I'm digging in right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet