安装 unf_ext (0.0.7.4) 时发生错误,Bundler 无法继续。

18

我的最终目标是在Ubuntu 14.04 Docker容器中使这个工作起来:https://github.com/byalextran/autoluv

当我运行时

m1@9bdc67007b49:~/autoluv$ bundle install --deployment

它说:

Fetching unf_ext 0.0.7.4
Installing unf_ext 0.0.7.4 with native extensions
Errno::EACCES: Permission denied @ rb_sysopen - /home/m1/autoluv/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/.document
An error occurred while installing unf_ext (0.0.7.4), and Bundler cannot continue.
Make sure that `gem install unf_ext -v '0.0.7.4' --source 'https://rubygems.org/'` succeeds before bundling.

但当我运行时

sudo gem install unf_ext -v '0.0.7.4' --source 'https://rubygems.org/'

unf_ext-0.0.7.4能够成功安装吗?

Building native extensions.  This could take a while...                                                                             
Successfully installed unf_ext-0.0.7.4                                                                                              
1 gem installed                                                                                                                     
Installing ri documentation for unf_ext-0.0.7.4...                                                                                  
Installing RDoc documentation for unf_ext-0.0.7.4...

我无法想出下一步应该怎么做。我已经尝试安装ruby-dev和gcc,但是它们都没有帮助推进这个问题 :(

非常感谢任何形式的帮助!

7个回答

12

我曾经遇到过同样的问题,原因是我没有安装Bundler运行所需的全部依赖项

尝试执行以下操作:

sudo apt-get install build-essential

然后再次运行

gem install bundler

最后

bundler

5
如果您是一个遇到此错误的苹果开发者,可能与您选择的Xcode命令行工具相关。 只需使用您当前正在使用的Xcode的路径运行以下命令。
sudo xcode-select --switch /Applications/Xcode.app 

这个回答帮了我,但是我想知道它是做什么的?它会切换终端使用Xcode的命令行工具吗? - Shawn Frank
是的,你只需要指定Xcode版本中想要使用/设置为默认的命令行工具。 - ysnzlcn

2

使用 sudo 和不使用有所不同。您可以在此处了解有关此命令的更多信息:https://kb.iu.edu/d/amyi

Errno :: EACCES通常发生在bunder无法访问所需文件夹或其不存在时。

尝试在没有sudo的情况下执行gem install unf_ext -v'0.0.7.4' --source 'https://rubygems.org/'


1
这一直给我文件权限错误:ERROR: While executing gem ... (Gem :: FilePermissionError):您没有写入 /var/lib/gems/1.9.1 目录的权限。我正在按照此答案中的说明操作,但就像打地鼠一样。我已经遇到了这个错误:“Operation not permitted - /var/lib/gems/1.9.1/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/trie/char_stream.hh”,但即使在 chown 和 chmod 之后,也没有任何进展。 - Michael
我按照这里的说明进行操作:https://gorails.com/setup/ubuntu/14.04---我应该使用sudo rbenv install 2.5.3和sudo rbenv global 2.5.3吗? - Michael
@Michael,不要使用sudo命令运行rbenv install 2.5.3rbenv global 2.5.3,如果你想在开发过程中使用bundle命令而不需要sudo - Bohdan Sviripa
我有信心我完全按照那个指南操作了。我会更好地记录我的过程并更新原始问题(评论无法适当格式化)。到目前为止,非常感谢你的一切! - Michael

1

我在Fedora上遇到了同样的问题。

我只需要安装gcc-c++软件包即可解决。


0

在使用 Xcode 13 和 BigSur 的情况下,我使用了以下命令解决了这个问题:

softwareupdate --install a

sudo   port upgrade outdated 

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install wget

brew install build-essentials

bundler install

0

我在我的ChromeOS Linux容器中解决了Debian 10 buster上的这个错误,方法是安装rbenv:sudo aptitude install rbenvsudo apt install rbenv

Aptitude软件包管理器似乎比默认的apt更擅长解决依赖关系,并且可以更轻松地安装更新的软件包,因此我认为值得一提。


0

您需要使用最新版本的Ruby。

如果您正在使用MacOS,系统自带的Ruby版本已经过时。您无法更新系统自带的Ruby版本,但是您可以安装另一个版本的Ruby,并使用rbenv Ruby版本管理工具将其设置为默认全局版本。

最后,您可以安装任何您喜欢的Ruby软件包。


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