无法安装libv8 3.11.8.17 gem.我已经环顾四周,发现它不支持Windows.虽然我还在寻找解决方法吗?
Installing libv8 (3.11.8.17)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-
3.11.8.17/ext/libv8/builder.rb:49:in `setup_python!': libv8 requires python 2 to b
e installed in order to build, but it is currently not available (RuntimeError)
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-
3.11.8.17/ext/libv8/builder.rb:35:in `block in build_libv8!'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-
3.11.8.17/ext/libv8/builder.rb:34:in `chdir'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-
3.11.8.17/ext/libv8/builder.rb:34:in `build_libv8!'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8- …Run Code Online (Sandbox Code Playgroud) 我正在使用 M1 Macbook Pro 并想为 rails webapp 安装 therubyracer 和 libv8。但由于下面描述的错误,我无法这样做。互联网上有几种解决方案,但没有一个对我有用。
操作系统:macOS Big Sur v11.1.
如果有人可以帮助我,那将非常有帮助。
日志:
? ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [-darwin20]
? bundle -v
Bundler version 1.17.3
? brew -v
Homebrew 2.7.5
Homebrew/homebrew-core (git revision e04a30; last commit 2021-01-20)
Homebrew/homebrew-cask (git revision d128de; last commit 2021-01-20)
? uname -a
Darwin Vaibhavs-MacBook-Pro.local 20.2.0 Darwin Kernel Version 20.2.0: Wed Dec 2 20:40:21 PST 2020; root:xnu-7195.60.75~1/RELEASE_ARM64_T8101 arm64
? brew search v8
==> Formulae
v8 ? v8@3.15 …Run Code Online (Sandbox Code Playgroud) 我正在开发 Rails 5->6 更新。当我运行时bundle update,我们到达 mini_racer,它需要 libv8-node。当 Bundler 尝试获取 libv8-node v. 15.14.0.1 时,它会尝试安装<our local mirror path>/gems/gems-repos/gems/libv8-node-15.14.0.1-x86_64-linux-musl.gem,但这是不正确的(这是 Debian VM),并且服务器响应错误。gem install libv8-node工作得很好。
ruby-libv8-node 页面表明 Bundler 选择错误的平台存在一个已知问题。追寻这个兔子洞,似乎已经提出了解决方案,但尚未发布任何内容。
与此同时,是否有解决方法可以强制 Bundler 使用正确的平台?这是 Bundler 2.2.28 和 Ruby 2.6.6。
我正在使用Ruby 2.2.2运行El Capitan(全新安装)和Rails 4.2.1应用程序.我最初遇到了安装libv8的问题,不得不强制安装brew install v8和gem install libv8(version),并将systemv8作为标志.Bundle工作正常并安装所有gem依赖项.
但是当我去加载rails s或bundle exec thin start启动我的应用服务器时,我收到以下错误.
dyld: lazy symbol binding failed: Symbol not found: __ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1_
Referenced from: /Users/shakycode/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/therubyracer-0.12.2/v8/init.bundle
Expected in: flat namespace
dyld: Symbol not found: __ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1_
Referenced from: /Users/shakycode/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/therubyracer-0.12.2/v8/init.bundle
Expected in: flat namespace
Run Code Online (Sandbox Code Playgroud)
我正在谷歌搜索和寻找答案,但到目前为止还没有提出太多的工作.我升级到El Capitan的另一台机器没有问题,但这种干净安装对于libv8/v8/therubyracer来说是个问题.
关于如何调试这个的任何想法?我想要编码.
我在 Debian 7 上使用 Thin 作为开发 Web 服务器和 Rails。自从我将 Rails 更新到 4.2.7.1 后,我无法再启动 Thin,并且收到以下错误消息:
Using rack adapter
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted
Run Code Online (Sandbox Code Playgroud)
我的文件夹中有一个libgcc_s.so.1文件/lib/i386-linux-gnu/,但不知何故,thin 似乎无法在那里找到它。
我已经尝试了这个问题的所有答案,但没有帮助。
编辑:我认为问题与libv8gem 有关,这是对我的项目的依赖。5.3.332.38.1 x86-linux当使用 gem 的默认版本时会出现该错误。但如果我将其强制为 version 5.0.71.48.3 x86-linux,错误就会消失。
我想在我的 iMac 上安装“zammad”(请参阅https://docs.zammad.org/en/latest/install/source.html)但失败了。
错误信息如下:
An error occurred while installing libv8 (6.7.288.46.1), and Bundler cannot continue.
Make sure that `gem install libv8 -v '6.7.288.46.1' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
mini_racer was resolved to 0.2.4, which depends on
libv8
Run Code Online (Sandbox Code Playgroud)
我尝试了各种方法都没有成功。我基于自制软件的最后一种方法:
通过自制软件安装v8@3.15(参见https://formulae.brew.sh/formula/v8)
brew install v8@3.15
设置路径和编译器标志
echo 'export PATH="/usr/local/opt/v8@3.15/bin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/v8@3.15/lib"
export CPPFLAGS="-I/usr/local/opt/v8@3.15/include"
通过 gem开始安装
gem install libv8 -v '6.7.288.46.1' -V -- --with-system-v8
安装失败并显示以下错误消息:
Error: …Run Code Online (Sandbox Code Playgroud) 我正在尝试让 Ruby on Rails 在 Apple Silicon (M1) Macbook 上的 Docker 中运行。我遇到的问题是 Javascript 运行时。gem mini_racer 依赖于未正确安装的 libv8。有类似问题的人似乎要么从源代码编译 V8,要么强制 libv8/mini_racer 使用系统版本。另一条路径似乎是改用 NodeJS。
有没有人在 M1 芯片上的 Docker 中启动并运行带有 Javascript 运行时的 RoR?
我有以下几乎用c ++编写的代码片段:
[..]
Handle<Object> jsGlobal;
Handle<Function> jsUpdateFunc;
void setupJs () {
V8::Initialize();
Isolate* isolate = v8::Isolate::New();
Isolate::Scope isolate_scope(isolate);
HandleScope handle_scope(isolate);
Local<Context> context = Context::New(isolate);
Context::Scope context_scope(context);
Local<String> source = String::NewFromUtf8(isolate, "var a = 0; function test() { a++; return a.toString(); }");
Local<Script> script = Script::Compile(source);
script->Run();
jsGlobal = context->Global();
Handle<Value> value = jsGlobal->Get(String::NewFromUtf8(isolate, "test"));
jsUpdateFunc = Handle<Function>::Cast(value);
}
void callJs() {
Handle<Value> args[0];
Handle<Value> js_result = jsUpdateFunc->Call(jsGlobal, 0, args);
js_result->ToString();
String::Utf8Value utf8(js_result);
printf("%s\n", *utf8);
}
[..]
Run Code Online (Sandbox Code Playgroud)
我有函数setupJs()设置v8环境,callJs应该被多次调用(工作时,javascript脚本每次增加一个var).
如果我放
Handle<Value> args[0]; …Run Code Online (Sandbox Code Playgroud) 我们正在使用 Github Actions 进行 CI 设置。当我们尝试安装mini_racer依赖于libv8gem 的 gem时,我们的 Gem 安装操作突然停止工作。但是当操作尝试为这个 gem 安装和构建扩展时,它在那里失败。
以下是配置:
jobs:
spec:
runs-on: ubuntu-latest
services:
postgresql:
image: circleci/postgres:11.5-alpine-ram
ports: ["5432:5432"]
env:
POSTGRES_USER:
POSTGRES_DB:
POSTGRES_PASSWORD:
steps:
- uses: actions/checkout@v1
- name: Bundler/Gems Cache
uses: actions/cache@v2
with:
path: vendor/bundle
key: ${{ runner.os }}-bundle-v1-${{ hashFiles('Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-bundle-v1-
- name: Read nvm version
id: nvmrc
run: echo ::set-output "name=NODEVERSION::$(cat .nvmrc)"
- uses: ruby/setup-ruby@v1
- uses: actions/setup-node@v1
with:
node-version: "${{ steps.nvmrc.outputs.NODEVERSION }}"
- name: …Run Code Online (Sandbox Code Playgroud)