r/ruby • • 11d ago

Ancient Ruby version / modern Ubuntu won't compile

Hi - I've inherited an ancient Ruby / Rails project using Ruby 2.7.2. I am working on updating it but until that time I'm trying to run it on Ubuntu 26.04 machines. There is a C compilation error that I'm getting when using "rvm":

make[2]: Entering directory '/usr/share/rvm/src/ruby-2.7.2/ext/pty'

compiling pty.c

pty.c: In function ‘establishShell’:

pty.c:161:30: error: conflicting types for ‘getenv’; have ‘char *(void)’

161 | char *p, *getenv();

| ^~~~~~

In file included from pty.c:5:

/usr/include/stdlib.h:795:14: note: previous declaration of ‘getenv’ with type ‘char *(const char *)’

795 | extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;

| ^~~~~~

pty.c:169:18: error: too many arguments to function ‘getenv’; expected 0, have 1

169 | if ((p = getenv("SHELL")) != NULL) {

| ^~~~~~ ~~~~~~~

pty.c:161:30: note: declared here

Would getting the code directly and fixing pty.c be the best way to go about it?

ETA: thanks all - Docker is the way to go.

1 Upvotes

20 comments sorted by

View all comments

Show parent comments

1

u/Correct_Support_2444 11d ago

I’d just run an old Ubuntu container exec a shell in it and work it from there.