aboutsummaryrefslogtreecommitdiff
path: root/posts/Building_rbenv_on_OpenBSD_7.5.md
blob: 90f5479a3e87e2e98fea099d8a5f9ee12530cc0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Building rbenv on OpenBSD 7.5

2024-06-02

I use Ruby (specifically with Jekyll) for a lot of my clubs/projects while using my personal laptop ([X220 ThinkPad](/posts/x220/)) which is runs OpenBSD. Since I recently upgraded to OpenBSD 7.5 I thought it could be helpful for others if I shared my process of building and using `rbenv` to install different Ruby versions.

## Before We Build

First, be sure to install the required packages in order to build from source, and then clone the core `rbenv` repo:

    pkg_add git gcc gmake libffi libyaml openssl
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv

## Building `rbenv`

Add `rbenv` to your PATH and initialize it (place this inside your `.bashrc` or `.zshrc` etc):

    export PATH="$HOME/.rbenv/bin:$PATH"
    export PATH="$HOME/.rbenv/shims:$PATH"
    export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local"
    eval "$(rbenv init -)"

Then reload your shell (zsh in this example): 

    source ~/.zshrc

Next we will need to install `ruby-build` as a `rbenv` plugin. Clone the ruby-build repository into the rbenv plugins directory:

    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

## Installing Ruby and Setting Our Version

Now use `rbenv` to install the desired version of Ruby (we will get an older version for this example):

    rbenv install 3.3.0

If you run into issues, you may need to specify your openssl directory:

    RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local" rbenv install 3.3.0

If you're on a slower machine (like mine) this might take a little bit. Just grab a coffee or a snack while you wait!

Then navigate to your project of choice and set the `local` Ruby version:

    rbenv local 3.3.0

That's it! If you'd prefer to set this version of Ruby for all projects going forward, simply replace `local` with `global`.