這篇是我搬運自己以前在 GitHub Pages 上 2020 年 7 月的文章。
背景故事是發生在我需要使用 Ruby 環境架設 Jekyll 生成的網站,但在 Ubuntu 作業系統中處理時不太順利,因此產生了這一則筆記。
首先必須講,盡量不要用 sudo apt-get install ruby
這個指令安裝。有在 Ruby 社群的應該曾被建議過不要使用套件管理工具來安裝,原因是這個會安裝一個穩定但是老舊的版本(好像是2.3.?)。而我是為了 Jekyll 而安裝,那時它就有跑出錯誤訊息說 Ruby 需要 2.4.0 的版本。所以導致我整個砍掉重練……
(可惜錯誤訊息被我洗掉了,不然可以給往後的我留作紀念)
既然不用套件管理工具,那該拿什麼來安裝?根據網路上大神們的說法:「若系統或套件管理員提供的 Ruby 版本過時的話,可以使用第三方的安裝工具來安裝。」因為我玩這個系統還不夠久,一知半解的狀態下直接選擇 RVM,這個有內建版本控制。
安裝 RVM
官網是這麼寫的:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
\curl -sSL https://get.rvm.io | bash -s stable --rails
不過我當時誤打誤撞找到 RVM package for Ubuntu
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt-get update
sudo apt-get install rvm
更改終端機視窗
不太確定這個的用意,先記錄。
echo 'source "/etc/profile.d/rvm.sh"' >> ~/.bashrc
重啟系統
這裡超級重要,當時看教學只有文字,就下意識跳過這個步驟,連 reboot 關鍵字都沒看到。
關於原因,文件是這樣說的:
scripts that needs to be reloaded, you’re now member of rvm group
總而言之就像有的東西更新完了會要求重新啟動那樣,這個也是類似的概念。我當時忽略的結果,就是不管怎麼輸入 rvm install ruby
,它總是會出現錯誤訊息:
There has been an error fetching the ruby interpreter. Halting the installation.
有趣的是,好像蠻多人和我一樣直接忽略這個步驟XD 喔對了,這個筆記不是即時記錄,有些事情發生順序有點搞混了。 看草稿有記錄到這個錯誤訊息:
rvm command not found
用了以下的方式解決:
(if using login-shell)
echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile
(if using non-login shell)
echo "source $HOME/.rvm/scripts/rvm" >> ~/.bashrc
這兩個問題不太確定誰先誰後,那時還真是一片混亂= =”
安裝Ruby
被前面問題搞得差不多了,開始安裝Ruby。
rvm install ruby
終於正常了,有夠感動。
安裝 Jekyll
先前提過我這次的目的其實是為了 Jekyll。
sudo apt-get install ruby-full build-essential zlib1g-dev
設置一個 gem
安裝目錄,並配置環境變數:
(說是要避免以 root 身份安裝Gems,這裡先記錄,之後看。)
echo ‘# Install Ruby Gems to ~/gems’ >> ~/.bashrc
echo ‘export GEM_HOME=“$HOME/gems”’ >> ~/.bashrc
echo ‘export PATH=“$HOME/gems/bin:$PATH”’ >> ~/.bashrc
source ~/.bashrc
最後就是 Jekyll 了:
gem install jekyll bundler
參考
- 為你自己學 Ruby on Rails
- 安裝 Ruby
- ubuntu_rvm issue
- stackoverflow-rvm command not found
- Ubuntu 18.04 安裝 Jekyll
- RVM package for Ubuntu
後記
我比較驚訝的是原以為在 Ubuntu 上安裝會很順利,但接連幾個錯誤反而讓整個流程比在 Window 上操作還要耗時。那時光是忙著尋找解決方式,有很多小細節似乎沒記錄到 T-T