Project

General

Profile

Build an Arvados development environment with OpenSSL 11 » History » Version 1

Brett Smith, 08/10/2023 08:54 PM
first version

1 1 Brett Smith
h1. Build an Arvados development environment with OpenSSL 1.1
2
3
h2. Background
4
5
The Arvados 2.x series requires Rails 5.2,
6
which requires Ruby 2.7,
7
which requires OpenSSL 1.1.
8
9
But Ubuntu 22.04+, Debian 12+, and RHEL 9+ all ship with OpenSSL 3. To get Arvados working on these distributions, you need to build OpenSSL 1.1 yourself, then build _a complete Ruby stack_ linked against it, including the @openssl@ and @pg@ gems. This page documents how to do that.
10
11
*This is expert-level stuff.* This page does not walk you through downloading, extracting, and navigating source. If you're not comfortable figuring out those steps yourself, then you probably won't be comfortable working with this stack once it's set up. Consider another development solution like arvbox.
12
13
h2. Environment assumptions
14
15
We're gonna install the whole stack under @/opt/arvados@. You can adjust to taste if you like.
16
17
I have @/var/lib/arvados@ symlinked to @/opt/arvados@ for compatibility with @arvados-server install@.
18
19
I have write permission to @/opt/arvados@, so I can install stuff without @sudo@ or any other elevated permissions.
20
21
I have @/opt/arvados/bin@ near the front of my @$PATH@. *This is important, even if the directory starts empty,* because some of these build steps will install tools here that later build steps need.
22
23
h2. Notes
24
25
I have documented the exact source code I used for all steps, but there should be a little slack in specific versions if needed.
26
27
h2. Build steps
28
29
h3. OpenSSL 1.1
30
31
https://www.openssl.org/source/openssl-1.1.1v.tar.gz
32
33
<pre><code style="sh">./config --prefix=/opt/arvados --openssldir=/opt/arvados/etc/ssl
34
make -j6 test
35
make install</code></pre>
36
37
h3. Ruby 2.7 (including openssl gem)
38
39
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.7.tar.gz
40
41
<pre><code style="sh">LDFLAGS="-Wl,-rpath=/opt/arvados/lib" ./configure --disable-install-static-library --enable-shared --disable-install-doc --prefix=/opt/arvados --with-openssl-dir=/opt/arvados
42
make -j6
43
make install
44
gem install bundler --no-document
45
</code></pre>
46
47
h3. libpq
48
49
https://ftp.postgresql.org/pub/source/v15.4/postgresql-15.4.tar.bz2
50
51
You download the entire PostgreSQL source, configure it, then build and install just libpq and friends. Specific make tasks based on "this SO answer":https://stackoverflow.com/a/46386938.
52
53
<pre><code style="sh">LDFLAGS="-Wl,-rpath=/opt/arvados/lib" ./configure --prefix=/opt/arvados --with-ssl=openssl --with-perl --with-python --with-pam --with-systemd --with-includes=/opt/arvados/include --with-libraries=/opt/arvados/lib
54
make -j6 -C src/backend generated-headers
55
make -j6 -C src/include install
56
make -j6 -C src/interfaces/libpq install
57
make -j6 -C src/bin/pg_config install
58
</code></pre>
59
60
h3. pg gem 1.1.4
61
62
Run these steps in the @arvados/services/api@ directory. @bundle install@ will install all of the API server's dependencies, not just the @pg@ gem, but you were gonna do that sooner or later anyway so might as well now.
63
64
<pre><code style="sh">cd .../arvados/services/api
65
bundle config build.pg --with-opt-dir=/opt/arvados --with-pg-config=/opt/arvados/bin/pg_config
66
bundle install
67
</code></pre>
68
69
h2. Rest of the Arvados install
70
71
From here, you should be able to run @arvados-server install@ as described on "the hacking prerequisites dev environment":/projects/arvados/wiki/Hacking_prerequisites#Install-dev-environment. You can test that everything worked by running the API server tests (e.g., @run-tests.sh@ → @test services/api@).