From: "xtkoba (Tee KOBAYASHI)" Date: 2022-05-27T04:10:04+00:00 Subject: [ruby-core:108721] [Ruby master Bug#18608] `require': cannot load such file -- ripper (LoadError) after `make distclean` Issue #18608 has been updated by xtkoba (Tee KOBAYASHI). I guess this is because either `bison` is not installed in the build environment or the environment variable `YACC` is not correctly set. Note that `make distclean` among other things removes `ext/ripper/ripper.c` which requires `YACC` (typically `bison`) to re-generate. FWIW, in my environment in-place `make distclean` followed by `./configure && make` results in another build failure due to Bison version mismatch with pre-generated `parse.[ch]`, but I suppose that is a separate issue (a workaround is to `rm -f parse.[ch]`). ---------------------------------------- Bug #18608: `require': cannot load such file -- ripper (LoadError) after `make distclean` https://bugs.ruby-lang.org/issues/18608#change-97773 * Author: brandonrdn (Brandon Riden) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-linux] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- When compiling multiple instances of Ruby (In our case, two separate prefixes), using the following build code causes the 2nd installed Ruby to throw an error on any ruby/irb call. Changing the code to delete the extracted `ruby-3.1.0` folder and re-extract from the tarball fixes this issue, so I believe it's something in the `make distclean` that's causing issues. This was not an issue for ruby 2.6.3 or 2.6.7, just on 3.0+ versions. Build code: ``` # Build Ruby RUN set -e ; \ . /etc/profile.d/ccache.sh ; \ wget -q https://cache.ruby-lang.org/pub/ruby/${RUBY_VERSION%.*}/ruby-${RUBY_VERSION}.tar.gz ; \ tar zxf ruby-${RUBY_VERSION}.tar.gz ; \ rm -f ruby-${RUBY_VERSION}.tar.gz ; \ pushd ruby-${RUBY_VERSION} ; \ type -p gcc ; \ for prefix in /usr/local /opt/vendored_ruby ; do \ ./configure --prefix=$prefix --with-compress-debug-sections=no --disable-install-doc ; \ make ; \ make install ; \ make distclean ; \ done ; \ popd ; \ ccache --show-stats ; \ rm -rf ruby-${RUBY_VERSION} /root/.ccache ``` Error: ``` :85:in `require': cannot load such file -- ripper (LoadError) from :85:in `require' from /opt/vendored_ruby/lib/ruby/3.1.0/irb.rb:12:in `' from :85:in `require' from :85:in `require' from /opt/vendored_ruby/lib/ruby/gems/3.1.0/gems/irb-1.4.1/exe/irb:9:in `' from /opt/vendored_ruby/bin/irb:25:in `load' from /opt/vendored_ruby/bin/irb:25:in `
' [root@cc75157e1b69 /]# /usr/local/bin/irb irb(main):001:0> ``` This error pops up on any reference to ruby or irb, including the base commands. Steps to reproduce: * Compile/make/make install Ruby 3.0+ with the 1st prefix * Run `make distclean` * Compile/make/make install Ruby 3.0+ with the 2nd prefix * run the `irb` and `ruby` commands in both paths. -- https://bugs.ruby-lang.org/ Unsubscribe: