Ubuntu 18.04 使用 glibc 2.28

公司的server用的是 ubuntu 18.04,而它的 glibc 是 2.27 的,這剛好卡在 nodejs 20 最低要求的 2.28。而最近為了使用 AI vibe coding 測試,要使用 opencode 跟 openspec。

而 openspec 就是nodejs 的程式,逼的我不得不研究怎麼硬跑 glibc 2.28。chatgpt 還一直在旁邊潑冷水,說很難,問題很多。最後還不是被我弄出來了,人類終於還是勝過了機器。

本文就是記錄如何在 ubuntu 18.04 下跑 opencode 和 openspec,並自己編譯 glibc-2.28 讓 nodejs 20 可以運行。由於公司的環境是不能上網的,所以要先在外部用 vm 架同樣的環境,確定ok後再搬進去。

安裝系統

  1. 安裝 Ubuntu 18.04
  2. 安裝 openssh-server, 方便用 teraterm 登入: sudo apt-get install openssh-server
  3. 安裝更多套件

新增用戶

如果你也是要搬到自己內網的話,最好是另外新增一個同名的用戶來接續後面的操作,這樣可能比較沒問題。我是這樣做的,所以不確定用不同名是否有問題。

編譯 glibc-2.28

安裝 Opencode

Opencode 的 Github 的 release 內抓最新的 Linux x86_64 版本。

建立 Ollama 設定檔

由於我是要用自己的 Ollama server 來跑 Coder LLM 的,所以要在 ~/.config/opencode/opencode.json 先建立設定檔。設定檔範例如下

然後跑一次 ~/bin/opencode,讓 opencode 先跑一次,它會從網路上抓一些更新,順便測一下自己的 ollama 能不能用。

下載 Nodejs 20

建立 Busybox 的 applets

因為系統很多基本工具都會依賴舊的 glibc 2.27, 會導致Library切換時跑錯版本,會有問題。用busybox static link 的就沒這些顧率。

修改 nodejs 的 linker 和 rpath

造一個 node wrapper

編輯 $HOME/usr/node-v20.20.0-linux-x64/bin/node 如下,並記得將其 +x 可執行。

修改路徑

將 nodejs 路徑加到開機檔內 ~/.bashrc

然後再跑一次 bash, 然 PATH 生效。

安裝 OpenSpec

因為我們是用 hack 的方式硬讓 nodejs 跑起來,在跑安裝套件最後的 scripts 時會有 segement fault。openspec 這邊不跑也沒關係,其它套件就不確定了。

打包還原

將相關檔案都打包,讓另一台機器解開就可以用

把這包拿到舊的機器上解開

.bashrc 路徑

由於我們沒打包 .bashrc,路徑的部份還是要自己再加進去。因為舊機上的 .bashrc 可能已經有改過,原則上就不用覆蓋的方式。

 

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 × 3 = 27