[arvados] created: 2.7.0-6449-g0836d17b0a

git repository hosting git at public.arvados.org
Fri Apr 19 19:23:49 UTC 2024


        at  0836d17b0ace473a66079f0c495f50ac92ac4d93 (commit)


commit 0836d17b0ace473a66079f0c495f50ac92ac4d93
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 15:13:22 2024 -0400

    21700: Select more desired modules in rocky8 test Dockerfile
    
    This prevents needless thrashing when the Dockerfile installs one set of
    packages and then packages we test enable and reinstall a different
    module stream.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/package-test-dockerfiles/rocky8/Dockerfile b/build/package-test-dockerfiles/rocky8/Dockerfile
index 7938d7d421..b58791ee91 100644
--- a/build/package-test-dockerfiles/rocky8/Dockerfile
+++ b/build/package-test-dockerfiles/rocky8/Dockerfile
@@ -6,7 +6,7 @@ FROM rockylinux:8.8-minimal
 MAINTAINER Arvados Package Maintainers <packaging at arvados.org>
 
 # Install dependencies.
-RUN microdnf --assumeyes module enable ruby:3.1 \
+RUN microdnf --assumeyes module enable httpd:2.4 postgresql:10 python39:3.9 ruby:3.1 \
  && microdnf --assumeyes --enablerepo=devel install \
     autoconf \
     automake \
@@ -26,7 +26,7 @@ RUN microdnf --assumeyes module enable ruby:3.1 \
     patch \
     pkgconf \
     procps-ng \
-    python3 \
+    python39 \
     readline-devel \
     redhat-rpm-config \
     ruby \

commit bedc8e775af36f2b87a8e36ec61b3e922db146f5
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 12:46:10 2024 -0400

    21700: Test the RailsAPI Bundler version
    
    See comments for rationale.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/services/api/test/integration/bundler_version_test.rb b/services/api/test/integration/bundler_version_test.rb
new file mode 100644
index 0000000000..fb1634cf90
--- /dev/null
+++ b/services/api/test/integration/bundler_version_test.rb
@@ -0,0 +1,19 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
+require 'test_helper'
+
+class BundlerVersionTest < ActionDispatch::IntegrationTest
+  test "Bundler version matches expectations" do
+    # The expected version range should be the latest that supports all the
+    # versions of Ruby we intend to support. This test checks that a developer
+    # doesn't accidentally update Bundler past that point.
+    expected = Gem::Dependency.new("", "~> 2.4.22")
+    actual = Bundler.gem_version
+    assert(
+      expected.match?("", actual),
+      "Bundler version #{actual} did not match #{expected}",
+    )
+  end
+end

commit 1abb161efd8bde7fa3e4edcfe0aee785ecde009f
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 12:45:12 2024 -0400

    21700: Update the RailsAPI Bundler version
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/services/api/Gemfile.lock b/services/api/Gemfile.lock
index 0fe91e0a18..8b1bbdfc87 100644
--- a/services/api/Gemfile.lock
+++ b/services/api/Gemfile.lock
@@ -320,4 +320,4 @@ DEPENDENCIES
   webrick
 
 BUNDLED WITH
-   2.4.19
+   2.4.22

commit faea0f9ff686af9209e45f62220bb2ec8283e1c5
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 12:11:36 2024 -0400

    21700: Remove `bundle install` from package build Dockerfiles
    
    This work is better done in the package build script. I suspect the
    problem that it's trying to solve is better solved by isolating the
    RailsAPI `vendor` directory as done in
    0333f33a7413aadb7159563e0a7aa2a0a50acaec.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/package-build-dockerfiles/debian11/Dockerfile b/build/package-build-dockerfiles/debian11/Dockerfile
index cc78ac0f3a..97152c51af 100644
--- a/build/package-build-dockerfiles/debian11/Dockerfile
+++ b/build/package-build-dockerfiles/debian11/Dockerfile
@@ -78,15 +78,10 @@ RUN echo "gem: --no-document" >> ~/.gemrc && \
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
 
-# Preseed the go module cache and the ruby gems, using the currently checked
-# out branch of the source tree. This avoids potential compatibility issues
-# between the version of Ruby and certain gems.
+# Preseed the go module cache.
 RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
-    cd /tmp/arvados/services/api && \
-    bundle install && \
-    cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
diff --git a/build/package-build-dockerfiles/debian12/Dockerfile b/build/package-build-dockerfiles/debian12/Dockerfile
index 738c9d946f..e25745565e 100644
--- a/build/package-build-dockerfiles/debian12/Dockerfile
+++ b/build/package-build-dockerfiles/debian12/Dockerfile
@@ -71,15 +71,10 @@ RUN echo "gem: --no-document" >> ~/.gemrc && \
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs 8"
 
-# Preseed the go module cache and the ruby gems, using the currently checked
-# out branch of the source tree. This avoids potential compatibility issues
-# between the version of Ruby and certain gems.
+# Preseed the go module cache.
 RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
-    cd /tmp/arvados/services/api && \
-    bundle install && \
-    cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
diff --git a/build/package-build-dockerfiles/rocky8/Dockerfile b/build/package-build-dockerfiles/rocky8/Dockerfile
index 38dd5fdbcc..1292a618bc 100644
--- a/build/package-build-dockerfiles/rocky8/Dockerfile
+++ b/build/package-build-dockerfiles/rocky8/Dockerfile
@@ -82,15 +82,10 @@ RUN echo "gem: --no-document" >> ~/.gemrc && \
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
 
-# Preseed the go module cache and the ruby gems, using the currently checked
-# out branch of the source tree. This avoids potential compatibility issues
-# between the version of Ruby and certain gems.
+# Preseed the go module cache.
 RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
-    cd /tmp/arvados/services/api && \
-    bundle install && \
-    cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
diff --git a/build/package-build-dockerfiles/ubuntu2004/Dockerfile b/build/package-build-dockerfiles/ubuntu2004/Dockerfile
index c7c9bb791d..dc57c8c03f 100644
--- a/build/package-build-dockerfiles/ubuntu2004/Dockerfile
+++ b/build/package-build-dockerfiles/ubuntu2004/Dockerfile
@@ -82,15 +82,10 @@ RUN echo "gem: --no-document" >> ~/.gemrc && \
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
 
-# Preseed the go module cache and the ruby gems, using the currently checked
-# out branch of the source tree. This avoids potential compatibility issues
-# between the version of Ruby and certain gems.
+# Preseed the go module cache.
 RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
-    cd /tmp/arvados/services/api && \
-    bundle install && \
-    cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
diff --git a/build/package-build-dockerfiles/ubuntu2204/Dockerfile b/build/package-build-dockerfiles/ubuntu2204/Dockerfile
index a0ef1c686f..35ef93ff2d 100644
--- a/build/package-build-dockerfiles/ubuntu2204/Dockerfile
+++ b/build/package-build-dockerfiles/ubuntu2204/Dockerfile
@@ -73,15 +73,10 @@ RUN echo "gem: --no-document" >> ~/.gemrc && \
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs 8"
 
-# Preseed the go module cache and the ruby gems, using the currently checked
-# out branch of the source tree. This avoids potential compatibility issues
-# between the version of Ruby and certain gems.
+# Preseed the go module cache.
 RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
-    cd /tmp/arvados/services/api && \
-    bundle install && \
-    cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados

commit 261b59f7fd11d5b657ee37a4a4f999a8a15a1e48
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 12:05:18 2024 -0400

    21700: Standardize on Bundler~>2.4.0
    
    These are the last versions to support Ruby 2.7, which we're still
    supporting as I write this.
    
    Our usual install recipe is:
    
      gem install --conservative --version '~> 2.4.0' bundler
    
    In environments where we *know* we have Ruby 3, that becomes:
    
      gem install --conservative --version '>= 2.4.0' bundler
    
    As long as we have something at least as recent as 2.4.0, that should be
    enough for function. This recipe meets our functional needs while
    striking a balance between being easy to implement and avoiding
    redundant installs.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/package-build-dockerfiles/debian11/Dockerfile b/build/package-build-dockerfiles/debian11/Dockerfile
index b39f0fad00..cc78ac0f3a 100644
--- a/build/package-build-dockerfiles/debian11/Dockerfile
+++ b/build/package-build-dockerfiles/debian11/Dockerfile
@@ -70,7 +70,7 @@ ADD generated/pkuczynski.asc /tmp/
 # fpm depends on dotenv, but version 3.0 of that gem dropped support for
 # Ruby 2.7, so we need to specifically install an older version.
 RUN echo "gem: --no-document" >> ~/.gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '~> 2.4.0' bundler && \
     gem install dotenv --version '~> 2.8' && \
     gem install fpm --version 1.15.1 && \
     bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
diff --git a/build/package-build-dockerfiles/debian12/Dockerfile b/build/package-build-dockerfiles/debian12/Dockerfile
index 17f2218d0d..738c9d946f 100644
--- a/build/package-build-dockerfiles/debian12/Dockerfile
+++ b/build/package-build-dockerfiles/debian12/Dockerfile
@@ -64,7 +64,7 @@ RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
     unzip
 
 RUN echo "gem: --no-document" >> ~/.gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '>= 2.4.0' bundler && \
     gem install fpm --version 1.15.1 && \
     bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
diff --git a/build/package-build-dockerfiles/rocky8/Dockerfile b/build/package-build-dockerfiles/rocky8/Dockerfile
index 8a9ac4c97b..38dd5fdbcc 100644
--- a/build/package-build-dockerfiles/rocky8/Dockerfile
+++ b/build/package-build-dockerfiles/rocky8/Dockerfile
@@ -74,7 +74,7 @@ RUN microdnf --assumeyes module enable ruby:3.1 \
 # fpm depends on dotenv, but version 3.0 of that gem dropped support for
 # Ruby 2.7, so we need to specifically install an older version.
 RUN echo "gem: --no-document" >> ~/.gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '>= 2.4.0' bundler && \
     gem install dotenv --version '~> 2.8' && \
     gem install fpm --version 1.15.1 && \
     bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
diff --git a/build/package-build-dockerfiles/ubuntu2004/Dockerfile b/build/package-build-dockerfiles/ubuntu2004/Dockerfile
index aecc138a48..c7c9bb791d 100644
--- a/build/package-build-dockerfiles/ubuntu2004/Dockerfile
+++ b/build/package-build-dockerfiles/ubuntu2004/Dockerfile
@@ -74,7 +74,7 @@ RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
 # fpm depends on dotenv, but version 3.0 of that gem dropped support for
 # Ruby 2.7, so we need to specifically install an older version.
 RUN echo "gem: --no-document" >> ~/.gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '~> 2.4.0' bundler && \
     gem install dotenv --version '~> 2.8' && \
     gem install fpm --version 1.15.1 && \
     bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
diff --git a/build/package-build-dockerfiles/ubuntu2204/Dockerfile b/build/package-build-dockerfiles/ubuntu2204/Dockerfile
index f8ea8b33f4..a0ef1c686f 100644
--- a/build/package-build-dockerfiles/ubuntu2204/Dockerfile
+++ b/build/package-build-dockerfiles/ubuntu2204/Dockerfile
@@ -66,7 +66,7 @@ RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
     unzip
 
 RUN echo "gem: --no-document" >> ~/.gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '>= 2.4.0' bundler && \
     gem install fpm --version 1.15.1 && \
     bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
diff --git a/build/package-test-dockerfiles/debian11/Dockerfile b/build/package-test-dockerfiles/debian11/Dockerfile
index 4c3f892587..cd57ffde62 100644
--- a/build/package-test-dockerfiles/debian11/Dockerfile
+++ b/build/package-test-dockerfiles/debian11/Dockerfile
@@ -11,6 +11,6 @@ ENV DEBIAN_FRONTEND noninteractive
 RUN apt-get update && \
     apt-get -y install --no-install-recommends curl ca-certificates gpg procps gpg-agent ruby ruby-dev && \
     echo "gem: --no-document" >> /etc/gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '~> 2.4.0' bundler && \
     mkdir -p /etc/udev/disabled && \
     echo "deb file:///arvados/packages/debian11/ /" >>/etc/apt/sources.list
diff --git a/build/package-test-dockerfiles/debian12/Dockerfile b/build/package-test-dockerfiles/debian12/Dockerfile
index 7c3ee1292d..6cc700d742 100644
--- a/build/package-test-dockerfiles/debian12/Dockerfile
+++ b/build/package-test-dockerfiles/debian12/Dockerfile
@@ -11,6 +11,6 @@ ENV DEBIAN_FRONTEND noninteractive
 RUN apt-get update && \
     apt-get -y install --no-install-recommends curl ca-certificates gpg procps gpg-agent ruby ruby-dev && \
     echo "gem: --no-document" >> /etc/gemrc && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '>= 2.4.0' bundler && \
     mkdir -p /etc/udev/disabled && \
     echo "deb file:///arvados/packages/debian12/ /" >>/etc/apt/sources.list
diff --git a/build/package-test-dockerfiles/rocky8/Dockerfile b/build/package-test-dockerfiles/rocky8/Dockerfile
index ace3c7c572..7938d7d421 100644
--- a/build/package-test-dockerfiles/rocky8/Dockerfile
+++ b/build/package-test-dockerfiles/rocky8/Dockerfile
@@ -40,6 +40,6 @@ RUN microdnf --assumeyes module enable ruby:3.1 \
 
 RUN touch /var/lib/rpm/* && \
     echo "gem: --no-document" >> ~/.gemrc && \
-    gem install bundler --version 2.2.19
+    gem install --conservative --version '>= 2.4.0' bundler
 
 COPY localrepo.repo /etc/yum.repos.d/localrepo.repo
diff --git a/build/package-test-dockerfiles/ubuntu2004/Dockerfile b/build/package-test-dockerfiles/ubuntu2004/Dockerfile
index bffef5eb63..c996a8b972 100644
--- a/build/package-test-dockerfiles/ubuntu2004/Dockerfile
+++ b/build/package-test-dockerfiles/ubuntu2004/Dockerfile
@@ -10,6 +10,6 @@ ENV DEBIAN_FRONTEND noninteractive
 # Install dependencies
 RUN apt-get update && \
     apt-get -y install --no-install-recommends curl ca-certificates gnupg2 ruby ruby-dev && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '~> 2.4.0' bundler && \
     mkdir -p /etc/udev/disabled && \
     echo "deb [trusted=yes] file:///arvados/packages/ubuntu2004/ /" >>/etc/apt/sources.list
diff --git a/build/package-test-dockerfiles/ubuntu2204/Dockerfile b/build/package-test-dockerfiles/ubuntu2204/Dockerfile
index 2c71f4ffcb..01a0496284 100644
--- a/build/package-test-dockerfiles/ubuntu2204/Dockerfile
+++ b/build/package-test-dockerfiles/ubuntu2204/Dockerfile
@@ -10,6 +10,6 @@ ENV DEBIAN_FRONTEND noninteractive
 # Install dependencies
 RUN apt-get update && \
     apt-get -y install --no-install-recommends curl ca-certificates gnupg2 ruby ruby-dev && \
-    gem install bundler --version 2.2.19 && \
+    gem install --conservative --version '>= 2.4.0' bundler && \
     mkdir -p /etc/udev/disabled && \
     echo "deb [trusted=yes] file:///arvados/packages/ubuntu2204/ /" >>/etc/apt/sources.list
diff --git a/build/rails-package-scripts/postinst.sh b/build/rails-package-scripts/postinst.sh
index c832606785..b72347aca3 100644
--- a/build/rails-package-scripts/postinst.sh
+++ b/build/rails-package-scripts/postinst.sh
@@ -192,9 +192,7 @@ configure_version() {
   cd "$RELEASE_PATH"
   export RAILS_ENV=production
 
-  if ! bundle --version >/dev/null 2>&1; then
-      run_and_report "Installing bundler" gem install bundler --version 2.2.19 --no-document
-  fi
+  run_and_report "Installing bundler" gem install --conservative --version '~> 2.4.0' bundler
 
   run_and_report "Running bundle config set --local path $SHARED_PATH/vendor_bundle" \
                  bundle config set --local path "$SHARED_PATH/vendor_bundle"
diff --git a/build/run-tests.sh b/build/run-tests.sh
index 90dc700b10..7089fb8668 100755
--- a/build/run-tests.sh
+++ b/build/run-tests.sh
@@ -490,17 +490,8 @@ setup_ruby_environment() {
     echo "Will install dependencies to $(gem env gemdir)"
     echo "Will install bundler and arvados gems to $tmpdir_gem_home"
     echo "Gem search path is GEM_PATH=$GEM_PATH"
-    (
-        export HOME=$GEMHOME
-        versions=(2.2.19)
-        for v in ${versions[@]}; do
-            if ! gem list --installed --version "${v}" bundler >/dev/null; then
-                gem install --no-document --user $(for v in ${versions[@]}; do echo bundler:${v}; done)
-                break
-            fi
-        done
-        "$bundle" version | tee /dev/stderr | grep -q 'version 2'
-    ) || fatal 'install bundler'
+    gem install --user --no-document --conservative --version '~> 2.4.0' bundler \
+        || fatal 'install bundler'
 	if test -d /var/lib/arvados-arvbox/ ; then
 	    # Inside arvbox, use bundler-installed binstubs.  The
 	    # system bundler and rail's own bin/bundle refuse to work.
diff --git a/lib/boot/passenger.go b/lib/boot/passenger.go
index 5367337e81..bf2ca2a78b 100644
--- a/lib/boot/passenger.go
+++ b/lib/boot/passenger.go
@@ -84,14 +84,9 @@ func (runner installPassenger) Run(ctx context.Context, fail func(error), super
 	if err != nil {
 		return err
 	}
-	for _, version := range []string{"2.2.19"} {
-		if !strings.Contains(buf.String(), "("+version+")") {
-			err = super.RunProgram(ctx, appdir, runOptions{}, "gem", "install", "--user", "--conservative", "--no-document", "bundler:2.2.19")
-			if err != nil {
-				return err
-			}
-			break
-		}
+	err = super.RunProgram(ctx, appdir, runOptions{}, "gem", "install", "--user", "--conservative", "--no-document", "--version", "~> 2.4.0", "bundler")
+	if err != nil {
+		return err
 	}
 	err = super.RunProgram(ctx, appdir, runOptions{}, "bundle", "config", "--set", "local", "path", filepath.Join(os.Getenv("HOME"), ".gem"))
 	if err != nil {
diff --git a/lib/install/deps.go b/lib/install/deps.go
index 9720a30d26..6693e2ee87 100644
--- a/lib/install/deps.go
+++ b/lib/install/deps.go
@@ -35,7 +35,7 @@ const goversion = "1.20.6"
 
 const (
 	defaultRubyVersion        = "3.2.2"
-	defaultBundlerVersion     = "2.2.19"
+	defaultBundlerVersion     = "~> 2.4.0"
 	defaultSingularityVersion = "3.10.4"
 	pjsversion                = "1.9.8"
 	geckoversion              = "0.24.0"
@@ -123,7 +123,7 @@ func (inst *installCommand) RunCommand(prog string, args []string, stdin io.Read
 		fmt.Fprintf(stderr, "invalid argument %q for -ruby-version\n", inst.RubyVersion)
 		return 2
 	}
-	if ok, _ := regexp.MatchString(`^\d`, inst.BundlerVersion); !ok {
+	if ok, _ := regexp.MatchString(`^ *(|~>|[<>!=]=) *\d`, inst.BundlerVersion); !ok {
 		fmt.Fprintf(stderr, "invalid argument %q for -bundler-version\n", inst.BundlerVersion)
 		return 2
 	}
@@ -351,7 +351,7 @@ make install
 if [[ "$rubyversion" > "3" ]]; then
   /var/lib/arvados/bin/gem update --no-document --system 3.4.21
 fi
-/var/lib/arvados/bin/gem install bundler:`+inst.BundlerVersion+` --no-document
+/var/lib/arvados/bin/gem install --conservative --no-docuemnt --version '`+inst.BundlerVersion+`' bundler
 `, stdout, stderr)
 		if err != nil {
 			return 1

commit 945537fd1a3c41d65323893dc543e733c42555e9
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 11:24:36 2024 -0400

    21700: Remove RVM support
    
    We haven't reliably tested this in a long time, and it's a lot of code
    for no benefit.  In general we want to support the versions of Ruby that
    come with the distributions we support. Anybody in a very weird case can
    install a supported version of Ruby from source.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/package-build-dockerfiles/Makefile b/build/package-build-dockerfiles/Makefile
index be27fffab7..920d626483 100644
--- a/build/package-build-dockerfiles/Makefile
+++ b/build/package-build-dockerfiles/Makefile
@@ -43,10 +43,7 @@ HOSTTYPE=$(shell echo $${HOSTTYPE})
 GOTARBALL=${GOTARBALL_$(HOSTTYPE)}
 NODETARBALL=${NODETARBALL_$(HOSTTYPE)}
 
-RVMKEY1=mpapis.asc
-RVMKEY2=pkuczynski.asc
-
-common-generated-all: common-generated/$(GOTARBALL) common-generated/$(NODETARBALL) common-generated/$(RVMKEY1) common-generated/$(RVMKEY2)
+common-generated-all: common-generated/$(GOTARBALL) common-generated/$(NODETARBALL)
 
 common-generated/$(GOTARBALL): common-generated
 	wget -cqO common-generated/$(GOTARBALL) https://dl.google.com/go/$(GOTARBALL)
@@ -54,11 +51,5 @@ common-generated/$(GOTARBALL): common-generated
 common-generated/$(NODETARBALL): common-generated
 	wget -cqO common-generated/$(NODETARBALL) https://nodejs.org/dist/v12.22.12/$(NODETARBALL)
 
-common-generated/$(RVMKEY1): common-generated
-	wget -cqO common-generated/$(RVMKEY1) https://rvm.io/mpapis.asc
-
-common-generated/$(RVMKEY2): common-generated
-	wget -cqO common-generated/$(RVMKEY2) https://rvm.io/pkuczynski.asc
-
 common-generated:
 	mkdir common-generated
diff --git a/build/package-build-dockerfiles/debian11/Dockerfile b/build/package-build-dockerfiles/debian11/Dockerfile
index 5ca7e1f243..b39f0fad00 100644
--- a/build/package-build-dockerfiles/debian11/Dockerfile
+++ b/build/package-build-dockerfiles/debian11/Dockerfile
@@ -6,7 +6,6 @@ ARG HOSTTYPE
 ARG BRANCH
 ARG GOVERSION
 
-## dont use debian:11 here since the word 'bullseye' is used for rvm precompiled binaries
 FROM debian:bullseye as build_x86_64
 # Install go
 ONBUILD ARG BRANCH
@@ -46,23 +45,36 @@ ENV DEBIAN_FRONTEND noninteractive
 
 SHELL ["/bin/bash", "-c"]
 # Install dependencies.
-RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y python3 libcurl4-gnutls-dev curl git procps libattr1-dev libfuse-dev libgnutls28-dev libpq-dev unzip python3-venv python3-dev libpam-dev equivs
+RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
+    build-essential \
+    curl \
+    equivs \
+    git \
+    libattr1-dev \
+    libcurl4-gnutls-dev \
+    libfuse-dev \
+    libgnutls28-dev \
+    libpam-dev \
+    libpq-dev \
+    pkgconf \
+    procps \
+    python3 \
+    python3-dev \
+    python3-venv \
+    ruby \
+    ruby-dev \
+    unzip
 
 ADD generated/mpapis.asc /tmp/
 ADD generated/pkuczynski.asc /tmp/
 # fpm depends on dotenv, but version 3.0 of that gem dropped support for
 # Ruby 2.7, so we need to specifically install an older version.
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) --disable-binary && \
-    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
-    echo "gem: --no-document" >> ~/.gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install dotenv --version '~> 2.8' && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
+RUN echo "gem: --no-document" >> ~/.gemrc && \
+    gem install bundler --version 2.2.19 && \
+    gem install dotenv --version '~> 2.8' && \
+    gem install fpm --version 1.15.1 && \
+    bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
-RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
 
@@ -73,9 +85,9 @@ RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
     cd /tmp/arvados/services/api && \
-    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    bundle install && \
     cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
-CMD ["/usr/local/rvm/bin/rvm-exec", "default", "bash", "/jenkins/run-build-packages.sh", "--target", "debian11"]
+CMD ["bash", "/jenkins/run-build-packages.sh", "--target", "debian11"]
diff --git a/build/package-build-dockerfiles/debian12/Dockerfile b/build/package-build-dockerfiles/debian12/Dockerfile
index fa1d095e79..17f2218d0d 100644
--- a/build/package-build-dockerfiles/debian12/Dockerfile
+++ b/build/package-build-dockerfiles/debian12/Dockerfile
@@ -6,7 +6,6 @@ ARG HOSTTYPE
 ARG BRANCH
 ARG GOVERSION
 
-## dont use debian:12 here since the word 'bookworm' is used for rvm precompiled binaries
 FROM debian:bookworm as build_x86_64
 ONBUILD ARG BRANCH
 # Install go
@@ -44,21 +43,31 @@ ENV DEBIAN_FRONTEND noninteractive
 
 SHELL ["/bin/bash", "-c"]
 # Install dependencies.
-RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y python3 libcurl4-gnutls-dev curl git procps libattr1-dev libfuse-dev libgnutls28-dev libpq-dev unzip python3-venv python3-dev libpam-dev equivs
+RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
+    build-essential \
+    curl \
+    equivs \
+    git \
+    libattr1-dev \
+    libcurl4-gnutls-dev \
+    libfuse-dev \
+    libgnutls28-dev \
+    libpam-dev \
+    libpq-dev \
+    pkgconf \
+    procps \
+    python3 \
+    python3-dev \
+    python3-venv \
+    ruby \
+    ruby-dev \
+    unzip
 
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 3.2.2 -j $(grep -c processor /proc/cpuinfo) --disable-binary && \
-    /usr/local/rvm/bin/rvm alias create default ruby-3.2.2 && \
-    echo "gem: --no-document" >> ~/.gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
+RUN echo "gem: --no-document" >> ~/.gemrc && \
+    gem install bundler --version 2.2.19 && \
+    gem install fpm --version 1.15.1 && \
+    bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
-RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs 8"
 
@@ -69,9 +78,9 @@ RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
     cd /tmp/arvados/services/api && \
-    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    bundle install && \
     cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
-CMD ["/usr/local/rvm/bin/rvm-exec", "default", "bash", "/jenkins/run-build-packages.sh", "--target", "debian12"]
+CMD ["bash", "/jenkins/run-build-packages.sh", "--target", "debian12"]
diff --git a/build/package-build-dockerfiles/rocky8/Dockerfile b/build/package-build-dockerfiles/rocky8/Dockerfile
index a1038a9b88..8a9ac4c97b 100644
--- a/build/package-build-dockerfiles/rocky8/Dockerfile
+++ b/build/package-build-dockerfiles/rocky8/Dockerfile
@@ -35,7 +35,8 @@ FROM build_${HOSTTYPE}
 MAINTAINER Arvados Package Maintainers <packaging at arvados.org>
 
 # Install dependencies.
-RUN microdnf --assumeyes --enablerepo=devel install \
+RUN microdnf --assumeyes module enable ruby:3.1 \
+ && microdnf --assumeyes --enablerepo=devel install \
     automake \
     bison \
     bzip2 \
@@ -53,6 +54,7 @@ RUN microdnf --assumeyes --enablerepo=devel install \
     openssl-devel \
     pam-devel \
     patch \
+    pkgconf \
     postgresql-devel \
     procps-ng \
     python39 \
@@ -60,6 +62,7 @@ RUN microdnf --assumeyes --enablerepo=devel install \
     readline-devel \
     rpm-build \
     ruby \
+    ruby-devel \
     sqlite-devel \
     tar \
     unzip \
@@ -68,21 +71,14 @@ RUN microdnf --assumeyes --enablerepo=devel install \
     xz-libs \
     zlib-devel
 
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
 # fpm depends on dotenv, but version 3.0 of that gem dropped support for
 # Ruby 2.7, so we need to specifically install an older version.
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install --disable-binary 2.7 -j $(grep -c processor /proc/cpuinfo) && \
-    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
-    echo "gem: --no-document" >> ~/.gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install dotenv --version '~> 2.8' && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
+RUN echo "gem: --no-document" >> ~/.gemrc && \
+    gem install bundler --version 2.2.19 && \
+    gem install dotenv --version '~> 2.8' && \
+    gem install fpm --version 1.15.1 && \
+    bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
-RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
 
@@ -93,9 +89,9 @@ RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
     cd /tmp/arvados/services/api && \
-    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    bundle install && \
     cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
-CMD ["/usr/local/rvm/bin/rvm-exec", "default", "bash", "/jenkins/run-build-packages.sh", "--target", "rocky8"]
+CMD ["bash", "/jenkins/run-build-packages.sh", "--target", "rocky8"]
diff --git a/build/package-build-dockerfiles/ubuntu2004/Dockerfile b/build/package-build-dockerfiles/ubuntu2004/Dockerfile
index 576b6021c0..aecc138a48 100644
--- a/build/package-build-dockerfiles/ubuntu2004/Dockerfile
+++ b/build/package-build-dockerfiles/ubuntu2004/Dockerfile
@@ -50,23 +50,35 @@ ENV DEBIAN_FRONTEND noninteractive
 
 SHELL ["/bin/bash", "-c"]
 # Install dependencies.
-RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y python3 libcurl4-gnutls-dev libgnutls28-dev curl git libattr1-dev libfuse-dev libpq-dev unzip tzdata python3-venv python3-dev libpam-dev shared-mime-info equivs
+RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
+    build-essential \
+    curl \
+    equivs \
+    git \
+    libattr1-dev \
+    libcurl4-gnutls-dev \
+    libfuse-dev \
+    libgnutls28-dev \
+    libpam-dev \
+    libpq-dev \
+    pkgconf \
+    python3 \
+    python3-dev \
+    python3-venv \
+    ruby \
+    ruby-dev \
+    shared-mime-info \
+    tzdata \
+    unzip
 
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
 # fpm depends on dotenv, but version 3.0 of that gem dropped support for
 # Ruby 2.7, so we need to specifically install an older version.
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) && \
-    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
-    echo "gem: --no-document" >> ~/.gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install dotenv --version '~> 2.8' && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
+RUN echo "gem: --no-document" >> ~/.gemrc && \
+    gem install bundler --version 2.2.19 && \
+    gem install dotenv --version '~> 2.8' && \
+    gem install fpm --version 1.15.1 && \
+    bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
-RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
 
@@ -77,9 +89,9 @@ RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
     cd /tmp/arvados/services/api && \
-    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    bundle install && \
     cd /tmp/arvados && \
     go mod download
 
 ENV WORKSPACE /arvados
-CMD ["/usr/local/rvm/bin/rvm-exec", "default", "bash", "/jenkins/run-build-packages.sh", "--target", "ubuntu2004"]
+CMD ["bash", "/jenkins/run-build-packages.sh", "--target", "ubuntu2004"]
diff --git a/build/package-build-dockerfiles/ubuntu2204/Dockerfile b/build/package-build-dockerfiles/ubuntu2204/Dockerfile
index 79664fea6b..f8ea8b33f4 100644
--- a/build/package-build-dockerfiles/ubuntu2204/Dockerfile
+++ b/build/package-build-dockerfiles/ubuntu2204/Dockerfile
@@ -44,21 +44,32 @@ ENV DEBIAN_FRONTEND noninteractive
 
 SHELL ["/bin/bash", "-c"]
 # Install dependencies.
-RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y python3 libcurl4-gnutls-dev libgnutls28-dev curl git libattr1-dev libfuse-dev libpq-dev unzip tzdata python3-venv python3-dev libpam-dev shared-mime-info equivs
+RUN /usr/bin/apt-get update && /usr/bin/apt-get install -q -y \
+    build-essential \
+    curl \
+    equivs \
+    git \
+    libattr1-dev \
+    libcurl4-gnutls-dev \
+    libfuse-dev \
+    libgnutls28-dev \
+    libpam-dev \
+    libpq-dev \
+    pkgconf \
+    python3 \
+    python3-dev \
+    python3-venv \
+    ruby \
+    ruby-dev \
+    shared-mime-info \
+    tzdata \
+    unzip
 
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 3.2.2 -j $(grep -c processor /proc/cpuinfo) && \
-    /usr/local/rvm/bin/rvm alias create default ruby-3.2.2 && \
-    echo "gem: --no-document" >> ~/.gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
+RUN echo "gem: --no-document" >> ~/.gemrc && \
+    gem install bundler --version 2.2.19 && \
+    gem install fpm --version 1.15.1 && \
+    bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 
-RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
 ENV MAKE "make --jobs 8"
 
@@ -69,10 +80,9 @@ RUN git clone git://git.arvados.org/arvados.git /tmp/arvados && \
     cd /tmp/arvados && \
     if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
     cd /tmp/arvados/services/api && \
-    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    bundle install && \
     cd /tmp/arvados && \
     go mod download
 
-
 ENV WORKSPACE /arvados
-CMD ["/usr/local/rvm/bin/rvm-exec", "default", "bash", "/jenkins/run-build-packages.sh", "--target", "ubuntu2204"]
+CMD ["bash", "/jenkins/run-build-packages.sh", "--target", "ubuntu2204"]
diff --git a/build/package-test-dockerfiles/Makefile b/build/package-test-dockerfiles/Makefile
index 02e2846a2a..77e49c3c1f 100644
--- a/build/package-test-dockerfiles/Makefile
+++ b/build/package-test-dockerfiles/Makefile
@@ -27,16 +27,10 @@ ubuntu2204/generated: common-generated-all
 	test -d ubuntu2204/generated || mkdir ubuntu2204/generated
 	cp -f -rlt ubuntu2204/generated common-generated/*
 
-RVMKEY1=mpapis.asc
-RVMKEY2=pkuczynski.asc
+common-generated-all: common-generated/empty
 
-common-generated-all: common-generated/$(RVMKEY1) common-generated/$(RVMKEY2)
-
-common-generated/$(RVMKEY1): common-generated
-	wget -cqO common-generated/$(RVMKEY1) https://rvm.io/mpapis.asc
-
-common-generated/$(RVMKEY2): common-generated
-	wget -cqO common-generated/$(RVMKEY2) https://rvm.io/pkuczynski.asc
+common-generated/empty: common-generated
+	touch common-generated/empty
 
 common-generated:
 	mkdir common-generated
diff --git a/build/package-test-dockerfiles/debian11/Dockerfile b/build/package-test-dockerfiles/debian11/Dockerfile
index a659e105d1..4c3f892587 100644
--- a/build/package-test-dockerfiles/debian11/Dockerfile
+++ b/build/package-test-dockerfiles/debian11/Dockerfile
@@ -9,20 +9,8 @@ ENV DEBIAN_FRONTEND noninteractive
 
 # Install dependencies
 RUN apt-get update && \
-    apt-get -y install --no-install-recommends curl ca-certificates gpg procps gpg-agent
-
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) --disable-binary && \
-    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
+    apt-get -y install --no-install-recommends curl ca-certificates gpg procps gpg-agent ruby ruby-dev && \
     echo "gem: --no-document" >> /etc/gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19
-
-# udev daemon can't start in a container, so don't try.
-RUN mkdir -p /etc/udev/disabled
-
-RUN echo "deb file:///arvados/packages/debian11/ /" >>/etc/apt/sources.list
+    gem install bundler --version 2.2.19 && \
+    mkdir -p /etc/udev/disabled && \
+    echo "deb file:///arvados/packages/debian11/ /" >>/etc/apt/sources.list
diff --git a/build/package-test-dockerfiles/debian12/Dockerfile b/build/package-test-dockerfiles/debian12/Dockerfile
index 4cdc41d73b..7c3ee1292d 100644
--- a/build/package-test-dockerfiles/debian12/Dockerfile
+++ b/build/package-test-dockerfiles/debian12/Dockerfile
@@ -9,20 +9,8 @@ ENV DEBIAN_FRONTEND noninteractive
 
 # Install dependencies
 RUN apt-get update && \
-    apt-get -y install --no-install-recommends curl ca-certificates gpg procps gpg-agent
-
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 3.2.2 -j $(grep -c processor /proc/cpuinfo) --disable-binary && \
-    /usr/local/rvm/bin/rvm alias create default ruby-3.2.2 && \
+    apt-get -y install --no-install-recommends curl ca-certificates gpg procps gpg-agent ruby ruby-dev && \
     echo "gem: --no-document" >> /etc/gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19
-
-# udev daemon can't start in a container, so don't try.
-RUN mkdir -p /etc/udev/disabled
-
-RUN echo "deb file:///arvados/packages/debian12/ /" >>/etc/apt/sources.list
+    gem install bundler --version 2.2.19 && \
+    mkdir -p /etc/udev/disabled && \
+    echo "deb file:///arvados/packages/debian12/ /" >>/etc/apt/sources.list
diff --git a/build/package-test-dockerfiles/rocky8/Dockerfile b/build/package-test-dockerfiles/rocky8/Dockerfile
index 809f3626ca..ace3c7c572 100644
--- a/build/package-test-dockerfiles/rocky8/Dockerfile
+++ b/build/package-test-dockerfiles/rocky8/Dockerfile
@@ -2,11 +2,12 @@
 #
 # SPDX-License-Identifier: AGPL-3.0
 
-FROM rockylinux:8.6-minimal
+FROM rockylinux:8.8-minimal
 MAINTAINER Arvados Package Maintainers <packaging at arvados.org>
 
 # Install dependencies.
-RUN microdnf --assumeyes --enablerepo=devel install \
+RUN microdnf --assumeyes module enable ruby:3.1 \
+ && microdnf --assumeyes --enablerepo=devel install \
     autoconf \
     automake \
     bison \
@@ -23,10 +24,13 @@ RUN microdnf --assumeyes --enablerepo=devel install \
     make \
     openssl-devel \
     patch \
+    pkgconf \
     procps-ng \
     python3 \
     readline-devel \
+    redhat-rpm-config \
     ruby \
+    ruby-devel \
     shadow-utils \
     sqlite-devel \
     tar \
@@ -34,15 +38,8 @@ RUN microdnf --assumeyes --enablerepo=devel install \
     which \
     zlib-devel
 
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
 RUN touch /var/lib/rpm/* && \
-    gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install --disable-binary 2.7 -j $(grep -c processor /proc/cpuinfo) && \
-    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19
+    echo "gem: --no-document" >> ~/.gemrc && \
+    gem install bundler --version 2.2.19
 
 COPY localrepo.repo /etc/yum.repos.d/localrepo.repo
diff --git a/build/package-test-dockerfiles/ubuntu2004/Dockerfile b/build/package-test-dockerfiles/ubuntu2004/Dockerfile
index df1e71e75a..bffef5eb63 100644
--- a/build/package-test-dockerfiles/ubuntu2004/Dockerfile
+++ b/build/package-test-dockerfiles/ubuntu2004/Dockerfile
@@ -9,19 +9,7 @@ ENV DEBIAN_FRONTEND noninteractive
 
 # Install dependencies
 RUN apt-get update && \
-    apt-get -y install --no-install-recommends curl ca-certificates gnupg2
-
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) && \
-    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19
-
-# udev daemon can't start in a container, so don't try.
-RUN mkdir -p /etc/udev/disabled
-
-RUN echo "deb [trusted=yes] file:///arvados/packages/ubuntu2004/ /" >>/etc/apt/sources.list
+    apt-get -y install --no-install-recommends curl ca-certificates gnupg2 ruby ruby-dev && \
+    gem install bundler --version 2.2.19 && \
+    mkdir -p /etc/udev/disabled && \
+    echo "deb [trusted=yes] file:///arvados/packages/ubuntu2004/ /" >>/etc/apt/sources.list
diff --git a/build/package-test-dockerfiles/ubuntu2204/Dockerfile b/build/package-test-dockerfiles/ubuntu2204/Dockerfile
index 4926a6573f..2c71f4ffcb 100644
--- a/build/package-test-dockerfiles/ubuntu2204/Dockerfile
+++ b/build/package-test-dockerfiles/ubuntu2204/Dockerfile
@@ -9,19 +9,7 @@ ENV DEBIAN_FRONTEND noninteractive
 
 # Install dependencies
 RUN apt-get update && \
-    apt-get -y install --no-install-recommends curl ca-certificates gnupg2
-
-# Install RVM
-ADD generated/mpapis.asc /tmp/
-ADD generated/pkuczynski.asc /tmp/
-RUN gpg --import --no-tty /tmp/mpapis.asc && \
-    gpg --import --no-tty /tmp/pkuczynski.asc && \
-    curl -L https://get.rvm.io | bash -s stable && \
-    /usr/local/rvm/bin/rvm install 3.2.2 -j $(grep -c processor /proc/cpuinfo) && \
-    /usr/local/rvm/bin/rvm alias create default ruby-3.2.2 && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19
-
-# udev daemon can't start in a container, so don't try.
-RUN mkdir -p /etc/udev/disabled
-
-RUN echo "deb [trusted=yes] file:///arvados/packages/ubuntu2204/ /" >>/etc/apt/sources.list
+    apt-get -y install --no-install-recommends curl ca-certificates gnupg2 ruby ruby-dev && \
+    gem install bundler --version 2.2.19 && \
+    mkdir -p /etc/udev/disabled && \
+    echo "deb [trusted=yes] file:///arvados/packages/ubuntu2204/ /" >>/etc/apt/sources.list
diff --git a/build/package-testing/common-test-rails-server-package.sh b/build/package-testing/common-test-rails-server-package.sh
index ee855d8012..62b30c37d1 100755
--- a/build/package-testing/common-test-rails-server-package.sh
+++ b/build/package-testing/common-test-rails-server-package.sh
@@ -29,4 +29,4 @@ case "$TARGET" in
         ;;
 esac
 
-/usr/local/rvm/bin/rvm-exec default bundle list >"$ARV_PACKAGES_DIR/$PACKAGE_NAME.gems"
+bundle list >"$ARV_PACKAGES_DIR/$PACKAGE_NAME.gems"
diff --git a/build/rails-package-scripts/postinst.sh b/build/rails-package-scripts/postinst.sh
index 17802a7b52..c832606785 100644
--- a/build/rails-package-scripts/postinst.sh
+++ b/build/rails-package-scripts/postinst.sh
@@ -10,12 +10,6 @@ set -e
 DATABASE_READY=1
 APPLICATION_READY=1
 
-if [ -s "$HOME/.rvm/scripts/rvm" ] || [ -s "/usr/local/rvm/scripts/rvm" ]; then
-    COMMAND_PREFIX="/usr/local/rvm/bin/rvm-exec default"
-else
-    COMMAND_PREFIX=
-fi
-
 report_not_ready() {
     local ready_flag="$1"; shift
     local config_file="$1"; shift
@@ -125,17 +119,17 @@ setup_conffile() {
 }
 
 prepare_database() {
-  DB_MIGRATE_STATUS=`$COMMAND_PREFIX bin/rake db:migrate:status 2>&1 || true`
+  DB_MIGRATE_STATUS=`bin/rake db:migrate:status 2>&1 || true`
   if echo "$DB_MIGRATE_STATUS" | grep -qF 'Schema migrations table does not exist yet.'; then
       # The database exists, but the migrations table doesn't.
-      run_and_report "Setting up database" $COMMAND_PREFIX bin/rake \
+      run_and_report "Setting up database" bin/rake \
                      "$RAILSPKG_DATABASE_LOAD_TASK" db:seed
   elif echo "$DB_MIGRATE_STATUS" | grep -q '^database: '; then
       run_and_report "Running db:migrate" \
-                     $COMMAND_PREFIX bin/rake db:migrate
+                     bin/rake db:migrate
   elif echo "$DB_MIGRATE_STATUS" | grep -q 'database .* does not exist'; then
       if ! run_and_report "Running db:setup" \
-           $COMMAND_PREFIX bin/rake db:setup 2>/dev/null; then
+           bin/rake db:setup 2>/dev/null; then
           echo "Warning: unable to set up database." >&2
           DATABASE_READY=0
       fi
@@ -198,24 +192,24 @@ configure_version() {
   cd "$RELEASE_PATH"
   export RAILS_ENV=production
 
-  if ! $COMMAND_PREFIX bundle --version >/dev/null 2>&1; then
-      run_and_report "Installing bundler" $COMMAND_PREFIX gem install bundler --version 2.2.19 --no-document
+  if ! bundle --version >/dev/null 2>&1; then
+      run_and_report "Installing bundler" gem install bundler --version 2.2.19 --no-document
   fi
 
   run_and_report "Running bundle config set --local path $SHARED_PATH/vendor_bundle" \
-      $COMMAND_PREFIX bin/bundle config set --local path $SHARED_PATH/vendor_bundle
+                 bundle config set --local path "$SHARED_PATH/vendor_bundle"
 
   run_and_report "Running bundle install" \
-      $COMMAND_PREFIX bin/bundle install --local --quiet
+                 bundle install --prefer-local --quiet
 
   # As of April 2024/Bundler 2.4, for some reason `bundle install` skips
   # zlib if it's already installed as a system-wide gem, which it often will
   # be because arvados gems pull it in. If this happened, install it in the
   # bundle manually as a workaround.
-  if ! $COMMAND_PREFIX bin/bundle info zlib >/dev/null 2>&1; then
-      local RUBY_VERSION="$($COMMAND_PREFIX ruby -e 'puts RUBY_VERSION')"
+  if ! bin/bundle info zlib >/dev/null 2>&1; then
+      local RUBY_VERSION="$(ruby -e 'puts RUBY_VERSION')"
       run_and_report "Adding zlib to bundle" \
-                     $COMMAND_PREFIX gem install \
+                     gem install \
                      --install-dir="$SHARED_PATH/vendor_bundle/ruby/$RUBY_VERSION" \
                      vendor/cache/zlib-*.gem
   fi
@@ -248,7 +242,7 @@ configure_version() {
       # warn about config errors (deprecated/removed keys from
       # previous version, etc)
       run_and_report "Checking configuration for completeness" \
-                     $COMMAND_PREFIX bin/rake config:check || APPLICATION_READY=0
+                     bin/rake config:check || APPLICATION_READY=0
   else
       APPLICATION_READY=0
   fi
diff --git a/build/run-build-packages-one-target.sh b/build/run-build-packages-one-target.sh
index 5e761fbd24..22d6dc43f4 100755
--- a/build/run-build-packages-one-target.sh
+++ b/build/run-build-packages-one-target.sh
@@ -198,7 +198,7 @@ if [[ -n "$test_packages" ]]; then
 else
   IMAGE="arvados/build:$TARGET"
   if [[ "$COMMAND" != "" ]]; then
-    COMMAND="/usr/local/rvm/bin/rvm-exec default bash /jenkins/$COMMAND --target $TARGET$DEBUG"
+    COMMAND="bash /jenkins/$COMMAND --target $TARGET$DEBUG"
   fi
 fi
 
diff --git a/build/run-build-packages-python-and-ruby.sh b/build/run-build-packages-python-and-ruby.sh
index 599fe7cf96..285bb11d71 100755
--- a/build/run-build-packages-python-and-ruby.sh
+++ b/build/run-build-packages-python-and-ruby.sh
@@ -165,13 +165,6 @@ if [ $RUBY -eq 0 ] && [ $PYTHON -eq 0 ]; then
   exit 0
 fi
 
-if [[ -f /etc/profile.d/rvm.sh ]]; then
-    source /etc/profile.d/rvm.sh
-    GEM="rvm-exec default gem"
-else
-    GEM=gem
-fi
-
 # Make all files world-readable -- jenkins runs with umask 027, and has checked
 # out our git tree here
 chmod o+r "$WORKSPACE" -R
diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh
index ada3bf8b6c..ef1e430a5b 100755
--- a/build/run-build-packages.sh
+++ b/build/run-build-packages.sh
@@ -102,7 +102,7 @@ elif [[ ! -d "$WORKSPACE/build/package-build-dockerfiles/$TARGET" ]]; then
 fi
 
 if [[ "$COMMAND" != "" ]]; then
-  COMMAND="/usr/local/rvm/bin/rvm-exec default bash /jenkins/$COMMAND --target $TARGET"
+  COMMAND="bash /jenkins/$COMMAND --target $TARGET"
 fi
 
 STDOUT_IF_DEBUG=/dev/null
@@ -181,13 +181,6 @@ fi
 debug_echo "$0 is running from $RUN_BUILD_PACKAGES_PATH"
 debug_echo "Workspace is $WORKSPACE"
 
-if [[ -f /etc/profile.d/rvm.sh ]]; then
-    source /etc/profile.d/rvm.sh
-    GEM="rvm-exec default gem"
-else
-    GEM=gem
-fi
-
 # Make all files world-readable -- jenkins runs with umask 027, and has checked
 # out our git tree here
 chmod o+r "$WORKSPACE" -R
@@ -213,7 +206,7 @@ git config --global --add safe.directory /arvados
 # Ruby gems
 debug_echo -e "\nRuby gems\n"
 
-FPM_GEM_PREFIX=$($GEM environment gemdir)
+FPM_GEM_PREFIX=$(gem environment gemdir)
 
 cd "$WORKSPACE/sdk/ruby" || exit 1
 handle_ruby_gem arvados
diff --git a/build/run-library.sh b/build/run-library.sh
index 03d99b1327..8296627be4 100755
--- a/build/run-library.sh
+++ b/build/run-library.sh
@@ -111,7 +111,7 @@ handle_ruby_gem() {
         find -maxdepth 1 -name "${gem_name}-*.gem" -delete
 
         # -q appears to be broken in gem version 2.2.2
-        $GEM build "$gem_name.gemspec" $DASHQ_UNLESS_DEBUG >"$STDOUT_IF_DEBUG" 2>"$STDERR_IF_DEBUG"
+        gem build "$gem_name.gemspec" $DASHQ_UNLESS_DEBUG >"$STDOUT_IF_DEBUG" 2>"$STDERR_IF_DEBUG"
     fi
 }
 
diff --git a/build/run-tests.sh b/build/run-tests.sh
index b8d2081e6e..90dc700b10 100755
--- a/build/run-tests.sh
+++ b/build/run-tests.sh
@@ -192,7 +192,7 @@ sanity_checks() {
         || fatal "Locale '${LANG}' is broken/missing. Try: echo ${LANG} | sudo tee -a /etc/locale.gen && sudo locale-gen"
     echo -n 'ruby: '
     ruby -v \
-        || fatal "No ruby. Install >=2.1.9 (using rbenv, rvm, or source)"
+        || fatal "No ruby. Install >=2.7 from package or source"
     echo -n 'go: '
     go version \
         || fatal "No go binary. See http://golang.org/doc/install"
@@ -466,98 +466,51 @@ interrupt() {
 trap interrupt INT
 
 setup_ruby_environment() {
-    if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
-        source "$HOME/.rvm/scripts/rvm"
-        using_rvm=true
-    elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
-        source "/usr/local/rvm/scripts/rvm"
-        using_rvm=true
-    else
-        using_rvm=false
+    # When our "bundle install"s need to install new gems to
+    # satisfy dependencies, we want them to go where "gem install
+    # --user-install" would put them. (However, if the caller has
+    # already set GEM_HOME, we assume that's where dependencies
+    # should be installed, and we should leave it alone.)
+
+    if [ -z "$GEM_HOME" ]; then
+        user_gempath="$(gem env gempath)"
+        export GEM_HOME="${user_gempath%%:*}"
     fi
+    PATH="$(gem env gemdir)/bin:$PATH"
 
-    if [[ "$using_rvm" == true ]]; then
-        # If rvm is in use, we can't just put separate "dependencies"
-        # and "gems-under-test" paths to GEM_PATH: passenger resets
-        # the environment to the "current gemset", which would lose
-        # our GEM_PATH and prevent our test suites from running ruby
-        # programs (for example, the Workbench test suite could not
-        # boot an API server or run arv). Instead, we have to make an
-        # rvm gemset and use it for everything.
-
-        [[ `type rvm | head -n1` == "rvm is a function" ]] \
-            || fatal 'rvm check'
-
-        # Put rvm's favorite path back in first place (overriding
-        # virtualenv, which just put itself there). Ignore rvm's
-        # complaint about not being in first place already.
-        rvm use @default 2>/dev/null
-
-        # Create (if needed) and switch to an @arvados-tests-* gemset,
-        # salting the gemset name so it doesn't interfere with
-        # concurrent builds in other workspaces. Leave the choice of
-        # ruby to the caller.
-        gemset="arvados-tests-$(echo -n "${WORKSPACE}" | md5sum | head -c16)"
-        rvm use "@${gemset}" --create \
-            || fatal 'rvm gemset setup'
-
-        rvm env
-        (bundle version | grep -q 2.2.19) || gem install --no-document bundler -v 2.2.19
-        bundle="$(which bundle)"
-        echo "$bundle"
-        "$bundle" version | grep 2.2.19 || fatal 'install bundler'
-    else
-        # When our "bundle install"s need to install new gems to
-        # satisfy dependencies, we want them to go where "gem install
-        # --user-install" would put them. (However, if the caller has
-        # already set GEM_HOME, we assume that's where dependencies
-        # should be installed, and we should leave it alone.)
-
-        if [ -z "$GEM_HOME" ]; then
-            user_gempath="$(gem env gempath)"
-            export GEM_HOME="${user_gempath%%:*}"
-        fi
-        PATH="$(gem env gemdir)/bin:$PATH"
-
-        # When we build and install our own gems, we install them in our
-        # $GEMHOME tmpdir, and we want them to be at the front of GEM_PATH and
-        # PATH so integration tests prefer them over other versions that
-        # happen to be installed in $user_gempath, system dirs, etc.
+    # When we build and install our own gems, we install them in our
+    # $GEMHOME tmpdir, and we want them to be at the front of GEM_PATH and
+    # PATH so integration tests prefer them over other versions that
+    # happen to be installed in $user_gempath, system dirs, etc.
 
-        tmpdir_gem_home="$(env - PATH="$PATH" HOME="$GEMHOME" gem env gempath | cut -f1 -d:)"
-        PATH="$tmpdir_gem_home/bin:$PATH"
-        export GEM_PATH="$tmpdir_gem_home:$(gem env gempath)"
+    tmpdir_gem_home="$(env - PATH="$PATH" HOME="$GEMHOME" gem env gempath | cut -f1 -d:)"
+    PATH="$tmpdir_gem_home/bin:$PATH"
+    export GEM_PATH="$tmpdir_gem_home:$(gem env gempath)"
 
-        echo "Will install dependencies to $(gem env gemdir)"
-        echo "Will install bundler and arvados gems to $tmpdir_gem_home"
-        echo "Gem search path is GEM_PATH=$GEM_PATH"
-        bundle="bundle"
-        (
-            export HOME=$GEMHOME
-            versions=(2.2.19)
-            for v in ${versions[@]}; do
-                if ! gem list --installed --version "${v}" bundler >/dev/null; then
-                    gem install --no-document --user $(for v in ${versions[@]}; do echo bundler:${v}; done)
-                    break
-                fi
-            done
-            "$bundle" version | tee /dev/stderr | grep -q 'version 2'
-        ) || fatal 'install bundler'
+    echo "Will install dependencies to $(gem env gemdir)"
+    echo "Will install bundler and arvados gems to $tmpdir_gem_home"
+    echo "Gem search path is GEM_PATH=$GEM_PATH"
+    (
+        export HOME=$GEMHOME
+        versions=(2.2.19)
+        for v in ${versions[@]}; do
+            if ! gem list --installed --version "${v}" bundler >/dev/null; then
+                gem install --no-document --user $(for v in ${versions[@]}; do echo bundler:${v}; done)
+                break
+            fi
+        done
+        "$bundle" version | tee /dev/stderr | grep -q 'version 2'
+    ) || fatal 'install bundler'
 	if test -d /var/lib/arvados-arvbox/ ; then
 	    # Inside arvbox, use bundler-installed binstubs.  The
 	    # system bundler and rail's own bin/bundle refuse to work.
 	    # I don't know why.
 	    bundle=binstubs/bundle
 	fi
-    fi
 }
 
 with_test_gemset() {
-    if [[ "$using_rvm" == true ]]; then
-        "$@"
-    else
-        GEM_HOME="$tmpdir_gem_home" GEM_PATH="$tmpdir_gem_home" "$@"
-    fi
+    GEM_HOME="$tmpdir_gem_home" GEM_PATH="$tmpdir_gem_home" "$@"
 }
 
 gem_uninstall_if_exists() {
@@ -622,8 +575,6 @@ initialize() {
 
     unset http_proxy https_proxy no_proxy
 
-    # Note: this must be the last time we change PATH, otherwise rvm will
-    # whine a lot.
     setup_ruby_environment
 
     echo "PATH is $PATH"
@@ -873,11 +824,11 @@ bundle_install_trylocal() {
     (
         set -e
         echo "(Running bundle install --local. 'could not find package' messages are OK.)"
-        if ! "$bundle" install --local --no-deployment; then
+        if ! bundle install --local --no-deployment; then
             echo "(Running bundle install again, without --local.)"
-            "$bundle" install --no-deployment
+            bundle install --no-deployment
         fi
-        "$bundle" package
+        bundle package
     )
 }
 
@@ -995,7 +946,7 @@ install_services/workbench2() {
 test_doc() {
     local arvados_api_host=pirca.arvadosapi.com && \
         env -C "$WORKSPACE/doc" \
-        "$bundle" exec rake linkchecker \
+        bundle exec rake linkchecker \
         arvados_api_host="$arvados_api_host" \
         arvados_workbench_host="https://workbench.$arvados_api_host" \
         baseurl="file://$WORKSPACE/doc/.site/" \
@@ -1029,12 +980,12 @@ test_arvados_version.py() {
 test_services/api() {
     rm -f "$WORKSPACE/services/api/git-commit.version"
     cd "$WORKSPACE/services/api" \
-        && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} "$bundle" exec rake test TESTOPTS=\'-v -d\' ${testargs[services/api]}
+        && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake test TESTOPTS=\'-v -d\' ${testargs[services/api]}
 }
 
 test_sdk/ruby() {
     cd "$WORKSPACE/sdk/ruby" \
-        && "$bundle" exec rake test TESTOPTS=-v ${testargs[sdk/ruby]}
+        && bundle exec rake test TESTOPTS=-v ${testargs[sdk/ruby]}
 }
 
 test_sdk/ruby-google-api-client() {
@@ -1052,7 +1003,7 @@ test_sdk/R() {
 test_sdk/cli() {
     cd "$WORKSPACE/sdk/cli" \
         && mkdir -p /tmp/keep \
-        && KEEP_LOCAL_STORE=/tmp/keep "$bundle" exec rake test TESTOPTS=-v ${testargs[sdk/cli]}
+        && KEEP_LOCAL_STORE=/tmp/keep bundle exec rake test TESTOPTS=-v ${testargs[sdk/cli]}
 }
 
 test_sdk/java-v2() {
@@ -1061,7 +1012,7 @@ test_sdk/java-v2() {
 
 test_services/login-sync() {
     cd "$WORKSPACE/services/login-sync" \
-        && "$bundle" exec rake test TESTOPTS=-v ${testargs[services/login-sync]}
+        && bundle exec rake test TESTOPTS=-v ${testargs[services/login-sync]}
 }
 
 test_services/workbench2_units() {
diff --git a/doc/_includes/_install_ruby_and_bundler.liquid b/doc/_includes/_install_ruby_and_bundler.liquid
index 5d5bc9e9d7..4381d9fedf 100644
--- a/doc/_includes/_install_ruby_and_bundler.liquid
+++ b/doc/_includes/_install_ruby_and_bundler.liquid
@@ -6,14 +6,7 @@ SPDX-License-Identifier: CC-BY-SA-3.0
 
 Ruby 2.7 or newer is required.
 
-* "Option 1: Install from packages":#packages
-* "Option 2: Install with RVM":#rvm
-
-h2(#packages). Option 1: Install from packages
-
-h3. Alma/CentOS/Red Hat/Rocky
-
-Version 7 of these distributions does not provide a new enough Ruby version.  Use "RVM":#rvm to install Ruby 2.7 or newer.
+h2. Alma/CentOS/Red Hat/Rocky
 
 Version 8 of these distributions provides Ruby 2.7. You can install it by running:
 
@@ -22,63 +15,10 @@ Version 8 of these distributions provides Ruby 2.7. You can install it by runnin
 # <span class="userinput">dnf install --enablerepo=devel ruby ruby-devel</span></code></pre>
 </notextile>
 
-h3. Debian and Ubuntu
-
-Debian 10 (buster) and Ubuntu 18.04 (bionic) ship with Ruby 2.5, which is too old for Arvados. Use "RVM":#rvm to install Ruby 2.7 or newer.
+h2. Debian and Ubuntu
 
 Debian 11 (bullseye) and Ubuntu 20.04 (focal) and later ship with Ruby 2.7 or newer, which is sufficient for Arvados.
 
 <notextile>
 <pre><code># <span class="userinput">apt-get --no-install-recommends install ruby ruby-dev</span></code></pre>
 </notextile>
-
-h2(#rvm). Option 2: Install with RVM
-
-{% include 'notebox_begin_warning' %}
-We do not recommend using RVM unless the Ruby version provided by your OS distribution is older than 2.7.
-{% include 'notebox_end' %}
-
-h3. Install gpg and curl
-
-h4. CentOS/Red Hat 7
-
-<pre>
-yum install gpg curl which findutils procps
-</pre>
-
-{% comment %}
-To build ruby 3.2.2 on CentOS 7, add: "yum --enablerepo=powertools install libyaml-devel"
-{% endcomment %}
-
-h4. Alma/CentOS/Red Hat/Rocky 8+
-
-<pre>
-dnf install gpg curl which findutils procps
-</pre>
-
-h4. Debian and Ubuntu
-
-<pre>
-apt-get --no-install-recommends install gpg curl ca-certificates dirmngr procps
-</pre>
-
-h3. Install RVM, Ruby and Bundler
-
-<notextile>
-<pre><code><span class="userinput">gpg --keyserver pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
-\curl -sSL https://get.rvm.io | bash -s stable --ruby=2.7.7
-</span></code></pre></notextile>
-
-This command installs the Ruby 2.7.7 release, as well as the @gem@ and @bundle@ commands.
-
-To use Ruby installed from RVM, load it in an open shell like this:
-
-<notextile>
-<pre><code><span class="userinput">source /usr/local/rvm/scripts/rvm
-</span></code></pre></notextile>
-
-Alternately you can use @rvm-exec@ (the first parameter is the ruby version to use, or "default"), for example:
-
-<notextile>
-<pre><code><span class="userinput">rvm-exec default ruby -v
-</span></code></pre></notextile>
diff --git a/doc/admin/config-urls.html.textile.liquid b/doc/admin/config-urls.html.textile.liquid
index 7c998061fe..9158dd6b78 100644
--- a/doc/admin/config-urls.html.textile.liquid
+++ b/doc/admin/config-urls.html.textile.liquid
@@ -176,10 +176,6 @@ server {
   passenger_enabled on;
   passenger_preload_bundler on;
 
-  # If you are using RVM, uncomment the line below.
-  # If you're using system ruby, leave it commented out.
-  #passenger_ruby /usr/local/rvm/wrappers/default/ruby;
-
   # This value effectively limits the size of API objects users can
   # create, especially collections.  If you change this, you should
   # also ensure the following settings match it:
diff --git a/doc/install/install-api-server.html.textile.liquid b/doc/install/install-api-server.html.textile.liquid
index 8e4f347d49..95cfca8e6d 100644
--- a/doc/install/install-api-server.html.textile.liquid
+++ b/doc/install/install-api-server.html.textile.liquid
@@ -180,10 +180,6 @@ server {
   passenger_enabled on;
   passenger_preload_bundler on;
 
-  # <span class="userinput">If you are using RVM, uncomment the line below.</span>
-  # <span class="userinput">If you're using system ruby, leave it commented out.</span>
-  #passenger_ruby /usr/local/rvm/wrappers/default/ruby;
-
   # This value effectively limits the size of API objects users can
   # create, especially collections.  If you change this, you should
   # also ensure the following settings match it:

commit c5e28c9012ff802ee35c43cbf3e2b5127850f96c
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Apr 19 10:05:45 2024 -0400

    21700: Better isolate Bundler from the build source
    
    This helps ensure that when we build the RailsAPI package with Bundler,
    we don't accidentally pick up settings or files from the developer's
    machine. This shouldn't matter when we build packages on Jenkins but
    this makes it easier for developers to test package builds on their own
    systems.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/run-build-packages-one-target.sh b/build/run-build-packages-one-target.sh
index 37fe705241..5e761fbd24 100755
--- a/build/run-build-packages-one-target.sh
+++ b/build/run-build-packages-one-target.sh
@@ -267,7 +267,8 @@ mkdir -p "$WORKSPACE/services/api/vendor/cache-$TARGET"
 docker_volume_args=(
     -v "$JENKINS_DIR:/jenkins"
     -v "$WORKSPACE:/arvados"
-    -v /arvados/services/api/vendor/bundle
+    --tmpfs /arvados/services/api/.bundle:rw,noexec,nosuid,size=1m
+    --tmpfs /arvados/services/api/vendor:rw,exec,nosuid,size=1g
     -v "$WORKSPACE/services/api/vendor/cache-$TARGET:/arvados/services/api/vendor/cache"
 )
 

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list