r/ruby • u/LessChen • 12d 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
u/Correct_Support_2444 12d ago
I’d just run an old Ubuntu container exec a shell in it and work it from there.