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。
# cd /software/
# tar xvzf sqlite-autoconf-3310100.tar.gz
# cd sqlite-autoconf-3310100
# ./configure --prefix=/usr/local
# make && make install