跳至主要内容

2 篇文章 含有標籤「libv8-node」

檢視所有標籤

· 閱讀時間約 3 分鐘
junminhong(jasper)

問題

今天遇到一個很神奇的問題, 如往常一樣執行

bundle install

# 如果想知道更詳細的bundle安裝細節可以多加--verbose
bundle install --verbose

發現, 有三個 gem 一直無法正常安裝

  • debase
  • ruby-debug-ide
  • libv8-node

排查問題

於是排查了一下 log, 可以找到以下幾個關鍵字, 蠻明顯可以看出 complier 這塊可能出點問題, 那因為筆者是使用 macOS , 所以可以很快地聯想到應該是 xcode command line tool

note: expanded from macro 'rb_intern'
__extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
^
15 warnings and 2 errors generated.
make: *** [debase_internals.o] Error 1

make failed, exit code 2

於是乎呢, 我就先重新安裝一下 xcode command line tool 看能不能解決這個問題, 如何重新安裝可以參考這篇的步驟

但是事情並沒有想像中的這麼簡單...

那要怎麼解決呢?

到這邊各位可以稍微思考一下, 在透過 bundler 安裝這些 gem 的時候, 做了哪些事情, 這邊可以透過 bundle install 觀察一下有哪些負載很重的 process, 細心的各位其實可以看到 clang 這個東西此時會佔用蠻大量的CPU使用率

那也就是說可以把問題點收斂到這個區塊上, 首先可以先檢查自己電腦裡面的 clang version

clang -v

# get clang information
# 如果沒有透過Homebrew額外安裝llvm, 這邊應該會顯示的是xcode command line tool本身帶的
Homebrew clang version xx.x.x
Target: arm64-apple-darwin23.3.0 <= 會根據 macOS 不同
Thread model: posix
InstalledDir: xxx <= 安裝的位置

從取得的資訊裡面來看會發現我是使用 Homebrew 額外安裝的 llvm, 於是乎我就先 llvm 降版再重做一次 bundle install, 就發現 竟 然 正 常 了...

結語

其實在排查這個問題的時候, 就已經想到是不是前幾天有針對系統的一些東西有做個升級導致, 但排查到後的結果沒想到竟然是 llvm 在搞鬼, 原先更新完的版本是17, 降成16發現還是不行, 果斷繼續往下降就好了...

奉勸各位, 就算容易踩坑, 但新版還是要追起來😆, 沒事真的不要亂升級😭

· 閱讀時間約 4 分鐘
junminhong(jasper)

前言

最近在進行rails專案bundle install的時候, 發現有一個gem始終裝不起來。

這邊記錄一下排查思路以及解決方式

進入排查程序

當在做bundle install的時候遇到了這個錯誤訊息 mini-racer-bundle-error

於是乎呢!我就直接使用google大法把這段錯誤訊息貼上查詢, 不外乎就會得到一些解答

這邊列舉幾個issue有在討論這件事情

從幾個討論串中得知了幾種做法

第一種做法

主要是透過自行安裝v8並在bundle的時候指定使用剛剛安裝好的v8

# 透過homebrew安裝v8
brew install v8
# 然後指定bundle config
bundle config build.libv8 --with-system-v8

bundle install

第二種做法

# 新增一個bundle lock 為ruby環境
bundle lock --add-platform ruby

以上做法都無法解決我的問題, 但由於呢始終沒有頭緒, 所以我只好重新安裝ruby

這邊我來介紹一下怎麼透過rbenv管理ruby

安裝好用的ruby管理器rbenv

# 透過brew安裝
brew install rbenv
# 安裝指定ruby版本
rbenv install 2.7.4
# 記得安裝一個新的ruby版本一定要執行這個指令
rbenv rehash

這樣就完成的ruby的安裝

繼續排查之路

當我重新安裝好ruby並重新bundle install的時候又發現還是出現一樣的問題

實在是走投無路的我只好乖乖的把bundle error log拿出來看看, 找看看有沒有什麼蛛絲馬跡

結果!似乎讓我找到了點東西

# 這邊有發現幾行的錯誤訊息, 看起來似乎跟macos自身帶的commandLineTools有關
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.

Node.js configure: Found Python 3.9.13...
WARNING: --openssl-no-asm will result in binaries that do not take advantage
of modern CPU cryptographic instructions and will therefore be slower.
Please refer to BUILDING.md
WARNING: warnings were emitted in the configure phase

當我看到了這個錯誤訊息後, 我就去試著找了一下macos本身的commandLineTools相關的資訊

接著我就試著重裝一下xcode commandLineTools, 果真就可以正常安裝了

macos xcode commandLineTools 怎麼重新安裝

xcode-select -print-path
# 你會找到你的xcode commandLineTools裝在哪裡
# /Library/Developer/CommandLineTools

# 移除xcode commandLineTools
sudo rm -r /Library/Developer/CommandLineTools

# 重新安裝xcode commandLineTools
xcode-select --install

# Switch Xcode's path
sudo xcode-select -switch /Library/Developer/CommandLineTools

# Reset Xcode's path
sudo xcode-select --reset