puma gem - 无法构建 gem 原生扩展
Posted
技术标签:
【中文标题】puma gem - 无法构建 gem 原生扩展【英文标题】:puma gem - Failed to build gem native extension 【发布时间】:2015-07-20 12:17:06 【问题描述】:安装 puma gem 时出现以下错误
$ 宝石安装美洲狮 获取:puma-2.11.2.gem (100%) 构建原生扩展。这可能需要一段时间... 错误:安装 puma 时出错: 错误:无法构建 gem 原生扩展。 红宝石 extconf.rb 检查 -lcrypto 中的 BIO_read()... 否 检查 -llibeay32 中的 BIO_read() ... 否 *** extconf.rb 失败 ***【问题讨论】:
【参考方案1】:试试下面的
gem install puma -- --with-cppflags=-I/usr/local/opt/openssl/include
bundle install
您还可以指定 gem 版本,如下所示:
gem install puma -v '2.11.3' -- --with-cppflags=-I/usr/local/opt/openssl/include
【讨论】:
我在 El Capitian OSX 10.11.2 上。当我第一次做gem install puma
- 它给了我ERROR: Failed to build gem native extension
。然后我尝试了你的发送命令(使用 puma 版本“2.9.1”),它似乎没有错误! (耶!)。请你能解释一下这个命令是什么意思吗? (我现在很好奇为什么这个命令可以解决问题)。谢谢你的帮助!!!
在 El Capitan 上为我工作,但不知道为什么。
安装我需要的特殊版本的彪马
在 El Capitan 上,运行 gem install puma -v '2.11.2' -- --with-opt-dir=/usr/local/opt/openssl
。这对我来说很好。
gem install puma -v '3.6.0' -- --with-opt-dir=/usr/local/opt/openssl
在 seirra 工作【参考方案2】:
我使用的是 OS X 10.12.4,@mahi 添加的评论对我有用:
gem install puma -v '3.6.0' -- --with-opt-dir=/usr/local/opt/openssl
【讨论】:
@Ameen 什么不起作用?您是否遇到与上述相同的错误或不同的错误?另请注意,这是针对 OS X 10.12.4 而不是 Ubuntu。 openssl 库很有可能在 Ubuntu 的其他地方。 为 OSX 10.12.6 (Sierra) 工作,bundle install
现在成功了。
天哪,这正是我所需要的。在 macOS 10.14.3 上工作【参考方案3】:
libssl1.0-dev 安装对我有帮助。试试
apt-get install libssl1.0-dev
然后
gem install puma
【讨论】:
或apt install libssl-dev
以获得更通用的开发版本。
这是适用于 Ubuntu/Linux 开发人员的有效解决方案
适用于 Ubuntu 18.04。谢谢@Victor
是的,这适用于 Ubuntu 18.04,非常感谢
这帮助我在使用 Ubuntu 18.04 的 Windows Linux 子系统上解决了这个错误【参考方案4】:
不是我的回答,而是 this 帮助我在 macos (big sur) 上安装 puma,因为在构建 puma 时出现警告。
我使用的命令是这样的:
gem install puma -- --with-cflags="-Wno-error=implicit-function-declaration"
【讨论】:
这就是解决方案。在这里找到它:***.com/a/63201544/4843137【参考方案5】:你试过了吗
DISABLE_SSL=true gem install puma
如果您有特定版本的要求,请指定版本:
DISABLE_SSL=true gem install puma -v version_number
【讨论】:
如果我们在谈论开发环境,那是最简单的解决方案!【参考方案6】:我在 OSx El Capitan 上遇到了类似的问题。为了解决我必须做的问题:
brew install openssl
brew link --force openssl
【讨论】:
这可能会触发警告并且不起作用Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
【参考方案7】:
可能是打开的 ssl 错误
gem install puma -v 2.11.2 -- --with-opt-dir=/usr/local/opt/openssl
【讨论】:
【参考方案8】:我在 Mac OS X 10.10 下遇到了类似的错误。
mkmf.log
中的详细信息表明这是由于:
同意 Xcode/ios 许可证需要管理员权限,请 通过 sudo 以 root 身份重新运行。
这是由于安装了新版本的 Xcode 造成的。 通过接受 Apple 的 Xcode 许可,这很容易解决:
sudo xcodebuild -license
希望这可能对将来的某人有所帮助;-)
【讨论】:
【参考方案9】:使用捆绑器和自制软件时:
$ bundle config build.puma --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
我从Lloeki 复制并改编了这个答案:https://***.com/a/31516586/704499
【讨论】:
这对我来说是救命稻草!在带有 Puma 4.0.1 的 Mac OS 10.14.5 上出现此问题。谢谢!【参考方案10】:gem 正在寻找 ssl 库。所以我们必须提供包含 ssl 库的库的路径
例如/usr/share/openssl
在我的例子中,ssl 库“libcrypto”在 /usr/local/lib 中。所以让我们将 /usr/local 传递给它(不包括 lib 字)。
用于 gem 安装
gem install puma -- --with-opt-dir=/usr/local
用于捆绑安装
捆绑配置 build.puma --with-opt-dir=/usr/local 捆绑安装注意名称 build.puma。其中 puma 是 gem 的名称。
build config 命令将以下内容添加到 ~/.bundle/config
--- BUNDLE_BUILD__PUMA:“--with-opt-dir=/usr/local”【讨论】:
【参考方案11】:我必须事先这样做:sudo apt-get install libgmp3-dev
【讨论】:
我尝试了sudo apt-get install libssl-dev
,然后安装了gem install puma -v '3.1.0'
,但没有成功。然后我sudo apt-get install libgmp3-dev
然后安装了它工作的gem。谢谢@matsko【参考方案12】:
运行brew info openssl
并按照那里的说明进行操作。不要尝试--force
将最新的 openssl 链接到 OSX 默认安装的那个。 (0.9.8)
具体来说,它会要求您将 Openssl 的 Homebrew 版本(截至目前应该是 1.0.2)添加到您的 $PATH 中。echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
注意:确保从 bash_profile 中删除所有 export PATH
行,因为上面的这一行会将其导出,以便您将 $PATH 变量的其余部分附加到末尾。要查看 bash 配置文件,请使用 vi ~/.bash_profile
这解决了安装需要编译的 ruby gem 的问题。 (这里是彪马)
【讨论】:
【参考方案13】:安装这些包。
apt-get install openssl ruby-openssl libssl-dev
【讨论】:
以上是关于puma gem - 无法构建 gem 原生扩展的主要内容,如果未能解决你的问题,请参考以下文章
Gem::Ext::BuildError: 错误: 无法构建 gem 原生扩展。 - 塔林杜
Gem::Installer::ExtensionBuildError: 错误: 无法构建 gem 原生扩展 - Aptana
在 OSX 上安装 rmagick gem 时出错 - 错误:无法构建 gem 原生扩展