无法找到可执行文件为jekyll的gem jekyll(>= 0.a)(Gem :: GemNotFoundException)。

6

我正在尝试使用GitHub和Jekyll制作我的个人网站,遵循官方网站上的说明。

当我到达以下部分时:

jekyll new --skip-bundle

我收到了:

can't find gem jekyll (>= 0.a) with executable jekyll (Gem::GemNotFoundException)

我尝试了几种方法,例如在 这里 提到的方法,并使用 sudo 命令运行。再次运行 jekyll new --skip-bundle 命令。

在按照 这里 的说明安装后,终端响应如下:

Fetching bundler-2.4.5.gem
Successfully installed bundler-2.4.5
Parsing documentation for bundler-2.4.5
Installing ri documentation for bundler-2.4.5
Done installing documentation for bundler after 0 seconds
1 gem installed

当我再次运行jekyll new --skip-bundle时,这里是终端的响应:

Traceback (most recent call last):
    2: from /usr/local/bin/jekyll:22:in `<main>'
    1: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:262:in `bin_path'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem jekyll (>= 0.a) with executable jekyll (Gem::GemNotFoundException)

如果您能帮我解决这个问题,我将不胜感激。

我使用的是macOS操作系统。

更新:

我运行了bundle add jekyll,但是收到了以下消息:

Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3

无法找到Gemfile文件
然后我运行gem update --system 3.2.3
Updating rubygems-update
Fetching rubygems-update-3.2.3.gem
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
    

下一步我运行了sudo gem update --system 3.2.3,然后收到了以下信息:
Updating rubygems-update
Fetching rubygems-update-3.2.3.gem
Successfully installed rubygems-update-3.2.3
Parsing documentation for rubygems-update-3.2.3
Installing ri documentation for rubygems-update-3.2.3
Installing darkfish documentation for rubygems-update-3.2.3
Done installing documentation for rubygems-update after 78 seconds
Parsing documentation for rubygems-update-3.2.3
Done installing documentation for rubygems-update after 0 seconds
Installing RubyGems 3.2.3
ERROR:  While executing gem ... (Errno::EROFS)
    Read-only file system @ rb_sysopen - /usr/share/man/man1/bundle-platform.1

所以我仍然无法添加jekyll....

系统信息:

Ruby:ruby 2.6.3p62(2019-04-16修订版67580)[universal.x86_64-darwin19] Gem:3.2.3 Bundler:版本2.4.6 Homebrew: Homebrew 3.6.20

Homebrew/homebrew-core (git revision fc36a19edf4; last commit 2023-02-04)
Homebrew/homebrew-cask (git revision 4c5d3e2391; last commit 2023-02-04)

CPU:Darwin Kernel Version 19.6.0:Mon Aug 31 22:12:52 PDT 2020;root:xnu-6153.141.2~1/RELEASE_X86_64

更新2: 我应该在我的gem文件所在的目录下运行这些命令吗?

我运行了gem environment,这是我收到的信息。我应该在哪个目录下运行这些命令?

RubyGems Environment:
  - RUBYGEMS VERSION: 3.2.3
  - RUBY VERSION: 2.6.3 (2019-04-16 patchlevel 62) [universal.x86_64-darwin19]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/shirinvafaei/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /usr/bin
  - SPEC CACHE DIRECTORY: /Users/shirinvafaei/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
  - RUBYGEMS PLATFORMS:
     - ruby
     - universal-darwin-19
  - GEM PATHS:
     - /Library/Ruby/Gems/2.6.0
     - /Users/shirinvafaei/.gem/ruby/2.6.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/shirinvafaei/.rbenv/shims
     - /Users/shirinvafaei/.rbenv/bin
     - /usr/local/Cellar/ruby/2.4.1_1/bin
     - /usr/local/bin
     - /Users/shirinvafaei/opt/anaconda3/bin
     - /Users/shirinvafaei/opt/anaconda3/condabin
     - /Library/Frameworks/Python.framework/Versions/2.7/bin
     - /Library/Frameworks/Python.framework/Versions/3.8/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /opt/X11/bin

另一个更新: 我尝试了
rben install 3.0.5

我收到了这个错误信息:

eb322180c6f18a6f74e4b6aa
Installing openssl-1.1.1s...

BUILD FAILED (Mac OS X 10.15.7 using ruby-build 20230202)

Inspect or clean up the working tree at /var/folders/yk/clm8vmf15r9cv4hghy2wm6380000gn/T/ruby-build.20230215141911.2345.jn3ObC
Results logged to /var/folders/yk/clm8vmf15r9cv4hghy2wm6380000gn/T/ruby-build.20230215141911.2345.log

Last 10 log lines:
      _dgram_write in bss_dgram.o
      _fd_write in bss_fd.o
      _fd_puts in bss_fd.o
      _sock_write in bss_sock.o
      _sock_puts in bss_sock.o
     (maybe you meant: _UI_method_get_writer, _RAND_write_file , _PEM_write_bio_PKCS7_stream , _PEM_write_X509_AUX , _PEM_write_PrivateKey , _PEM_write_bio_PrivateKey_traditional , _PEM_write_bio_PrivateKey , _PEM_write_PKCS8_PRIV_KEY_INFO , _PEM_write_bio_PKCS8_PRIV_KEY_INFO , _PEM_write_PKCS8PrivateKey , _PEM_write_bio_PKCS8PrivateKey , _PEM_write_bio , _PEM_X509_INFO_write_bio , _PEM_write_bio_PUBKEY , _PEM_write_DHparams , _PEM_write_EC_PUBKEY , _PEM_write_bio_EC_PUBKEY , _PEM_write_bio_ECPKParameters , _PEM_write_DSA_PUBKEY , _PEM_write_bio_RSA_PUBKEY , _PEM_write_RSAPublicKey , _PEM_write_PKCS7 , _PEM_write_bio_PKCS7 , _PEM_write_X509_CRL , _PEM_write_bio_X509_REQ_NEW , _PEM_write_X509_REQ , _PEM_write_bio_X509 , _PEM_write_PKCS8 , _PEM_write_DHxparams , _PEM_write_DSAparams , _PEM_write_ECPKParameters , _PEM_write_bio_RSAPrivateKey , _UI_method_set_writer , _PEM_write_bio_X509_AUX , _PEM_write_ECPrivateKey , _SMIME_write_CMS , _PEM_write_DSAPrivateKey , _PEM_write_X509 , _PEM_write , _PEM_write_bio_DSAPrivateKey , _PEM_write_bio_X509_CRL , _PEM_write_bio_NETSCAPE_CERT_SEQUENCE , _SMIME_write_PKCS7 , _PEM_ASN1_write , _PEM_ASN1_write_bio , _PEM_write_bio_CMS , _CRYPTO_THREAD_write_lock , _PEM_write_bio_DHxparams , _PEM_write_bio_DSAparams , _PEM_write_RSA_PUBKEY , _TXT_DB_write , _PEM_write_PUBKEY , _BIO_meth_set_write_ex , _BIO_meth_set_write , _BIO_meth_get_write , _PEM_write_bio_DSA_PUBKEY , _BIO_write_ex , _PEM_write_bio_X509_REQ , _PEM_write_bio_Parameters , _PEM_write_bio_ECPrivateKey , _PEM_write_bio_PKCS8 , _PEM_write_X509_REQ_NEW , _PEM_write_bio_DHparams , _BIO_ctrl_get_write_guarantee , _BIO_meth_get_write_ex , _PEM_write_bio_PKCS8PrivateKey_nid , _PEM_write_bio_ASN1_stream , _PEM_write_bio_CMS_stream , _BIO_write , _PEM_write_CMS , _PEM_write_RSAPrivateKey , _PEM_write_NETSCAPE_CERT_SEQUENCE , _PEM_write_PKCS8PrivateKey_nid , _SMIME_write_ASN1 , _PEM_write_bio_RSAPublicKey )
ld: symbol(s) not found for architecture x86_64
clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [libcrypto.dylib] Error 1
make: *** [all] Error 2

你知道我该怎么修复这个问题吗?


也许停止使用系统自带的 Ruby 2.6 - Alex
3个回答

2
这是安装指南后的终端响应。
您正在运行此命令以安装Bundler(可以将其视为gem存储)。在这里,您知道对于jekyll错误代码,它具有相同的问题(找不到运行jekyll的源)。要解决此问题,请安装jekyll。
如果您想从bundler运行jekyll,请尝试此方法(推荐)参考
bundle add jekyll #This will add jekyll to Gemfile (gem dependencies manager)
bundle install #This will check/install the gem from Gemfile
bundle exec jekyll #This will run jekyll from the bundle

如果您不想使用bundle,可以直接安装gem

gem install jekyll
jekyll #this should work and have message related to jekyll

更新1后编辑:(并发布回复以进一步调试)

基本上,如果您可以执行以下操作(上述命令的手动操作)

  1. Gemfile中包含gem "jekyll"
  2. 可以运行bundle install并成功,然后您可以继续进行其他与jekyll相关的操作。

非常感谢您的留言。我尝试了您的指示,但是失败了。我已经更新了我的问题,并进行了第二次尝试。 - Kadaj13
@Kadaj13,你能否澄清一下你系统中的一些版本。1. ruby: ruby -v,2. gem: gem -v,3. bundle: bundle -v,(接下来的内容与此不太相关,但可能值得了解)4. homebrew: brew -v,5. Mac CPU类型:uname -m - Patrick
非常感谢。我已经将信息添加到我的问题中了。您能帮忙检查一下吗? - Kadaj13
你的意思是我应该在有 gem 文件的目录中运行上面的命令吗?我运行了 "gem environment" 命令,并在我的问题中更新了终端的回复。 - Kadaj13
你知道Gemfile吗?它不是gem文件,而是一个与Ruby项目相关的文件。更多信息请参考Gemfile - Patrick

0

Ruby 2.6是2018年版本,已经到达生命周期结束

我会从升级Ruby到3.0或3.1开始(很多gem可能还不兼容3.2)

只读文件系统@ rb_sysopen权限问题也许?检查目录是否为只读或需要root访问。

rbenv是管理Ruby版本的工具。您可以考虑通过rbenv安装Ruby,而不是进行纯系统安装。这样可能也会解决权限问题。


0

我看到你的设置存在几个问题。

  1. 你正在使用一个不再受支持的 Ruby 版本。
  2. 你正在使用系统安装的 Ruby,需要 root 权限来管理。除了安全考虑外,这还会在 gem 维护方面带来更多问题。
  3. 因为你被迫以超级用户身份运行 gem install,我认为 jekyll 二进制文件没有在正确的路径中正确设置。 我认为可能发生的情况是,在使用 sudo 运行时,路径或二进制文件的设置是针对 root 用户而不是你的用户的副作用。

我的建议是安装一个用户空间 Ruby 版本管理器。我喜欢 rbenv ,因为它简单易用,但也有其他选择如 RVM

这意味着:

  1. 安装rbenv(很简单-只需按照它们的README进行操作)。
  2. 安装jekyll支持的最新Ruby版本,例如3.0.5,方法如下:
    rbenv install 3.0.5
    
  3. 运行bundle installgem install jekyll

rbenv 可以在用户空间中设置 Ruby 环境,无需使用 sudo。所有二进制文件都应正确地访问你的路径,你的设置现在应该正常工作。

附言:在安装 rbenv 和所需的 Ruby 版本之后,您可能需要重新启动终端会话。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接