macOS Monterey 无法安装低版本Ruby gem sqlite3 - v'1.3.13’

macOS Monterey 无法安装低版本Ruby gem sqlite3 - v'1.3.13’
请帮忙看一下如何解决?

Terminal的错误提示如下:

gem install sqlite3 -v'1.3.13'
Building native extensions. This could take a while...
ERROR:  Error installing sqlite3:
    ERROR: Failed to build gem native extension.

    current directory: /Users/wangjiachang/.rvm/gems/ruby-3.0.6/gems/sqlite3-1.3.13/ext/sqlite3
/Users/wangjiachang/.rvm/rubies/ruby-3.0.6/bin/ruby -I /Users/wangjiachang/.rvm/rubies/ruby-3.0.6/lib/ruby/3.0.0 -r ./siteconf20230723-14754-69maqv.rb extconf.rb
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for rb_integer_pack()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_backup_init()... yes
checking for sqlite3_column_database_name()... yes
checking for sqlite3_enable_load_extension()... yes
checking for sqlite3_load_extension()... yes
checking for sqlite3_open_v2()... yes
checking for sqlite3_prepare_v2()... yes
checking for sqlite3_int64 in sqlite3.h... yes
checking for sqlite3_uint64 in sqlite3.h... yes
creating Makefile

current directory: /Users/wangjiachang/.rvm/gems/ruby-3.0.6/gems/sqlite3-1.3.13/ext/sqlite3
make DESTDIR\= clean

**current directory: /Users/wangjiachang/.rvm/gems/ruby-3.0.6/gems/sqlite3-1.3.13/ext/sqlite3
make DESTDIR\=
compiling backup.c
compiling database.c
database.c:60:3: error: implicit declaration of function 'rb_check_safe_obj' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  rb_check_safe_obj(file);
  ^
database.c:60:3: note: did you mean 'rb_check_safe_str'?
/Users/wangjiachang/.rvm/rubies/ruby-3.0.6/include/ruby-3.0.0/ruby/internal/core/rstring.h:97:6: note: 'rb_check_safe_str' declared here
void rb_check_safe_str(VALUE);
     ^
1 error generated.
make: *** [database.o] Error 1

make failed, exit code 2******

Gem files will remain installed in /Users/wangjiachang/.rvm/gems/ruby-3.0.6/gems/sqlite3-1.3.13 for inspection.
Results logged to /Users/wangjiachang/.rvm/gems/ruby-3.0.6/extensions/x86_64-darwin-21/3.0.0/sqlite3-1.3.13/gem_make.out

如果你在 macOS Monterey 上安装低版本的 Ruby gem sqlite3(例如 v1.3.13)时遇到问题,可能是由于系统变动或依赖冲突导致的。下面是一些可能的解决方案:

更新 Ruby 版本:确保你的 Ruby 版本是最新的。你可以使用 rvm(Ruby Version Manager)或 rbenv 这样的工具来管理 Ruby 版本,并使用最新版本进行尝试。

更新 gem:运行以下命令更新 gem 工具到最新版本:

gem update --system
清理 gem:运行以下命令清理已安装的 gem,并重新安装所需版本的 sqlite3:

gem cleanup
安装 sqlite3 特定版本:尝试安装较新的 sqlite3 版本,而不是强制安装过低版本。使用以下命令安装较新版本的 sqlite3:

gem install sqlite3 -v '1.4.2'
如果你非常需要特定版本的 sqlite3,你可以尝试使用 -- 符号来设置 bundle 版本的指定路径:

bundle config build.sqlite3 --with-sqlite3-lib=/path/to/sqlite3/lib --with-sqlite3-include=/path/to/sqlite3/include
请根据你的系统上 sqlite3 的实际路径进行相应调整。

检查依赖项:确保你的系统上已安装 sqlite3 的相关依赖项。你可以使用 Homebrew 进行安装或更新:

brew update
brew install sqlite3
如果已经安装了 sqlite3,尝试重新安装它:

brew reinstall sqlite3
完成后,再次尝试安装所需版本的 sqlite3 gem。

  • 这篇博客: ruby与ruby on rails环境部署中的 2.安装Sqlite3 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • # cd /software/
    # tar xvzf sqlite-autoconf-3310100.tar.gz 
    # cd sqlite-autoconf-3310100
    # ./configure --prefix=/usr/local
    # make && make install