GitLab 升級出問題該怎麼辦?

自己用的東西,通常會避開龐大、複雜的,傾向於選擇小型、簡單的,所以如果以 Git 應用來說,如果為了特定原因,無法去使用類似 GitHub 之類的公開服務,而需要自己安裝的話,通常會避開類似 GitLab 這種大型應用,而傾向於使用 Gitoiite 之類的小型套件。不過身邊的人總是會有人去用 GitLab 之類的套件,在不懂實際架構細節的情況之下,有時候出問題了還真不知道要從哪邊去找解藥。

這次被問到的情況是這樣,有人用 GitLab 好一陣子了,都沒去維護(更新)過它,有天決定要把 GitLab 所在的 Ubuntu Linux 伺服器上的套件做一下維護(升級),當然也包含 GitLab 本身的套件,結果就碰到升級的程序卡在 GitLab 而無法繼續,於是乎就來問問我這個假 GitLab 達人,看看能不能解決。

問題分析

把出問題的 Ubuntu 升級紀錄拿來檢視之後,發現 GitLab 升級的錯誤訊息如下:

Preparing to unpack .../23-gitlab-ee_16.9.1-ee.0_amd64.deb ...
gitlab preinstall: It seems you are upgrading from 16.1 to 16.9.
gitlab preinstall: It is required to upgrade to the latest 16.7.x version first before proceeding.
gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/index.html#upgrade-paths
dpkg: error processing archive /tmp/apt-dpkg-install-mKcHiw/23-gitlab-ee_16.9.1-ee.0_amd64.deb (--unpack):
new gitlab-ee package pre-installation script subprocess returned error exit status 1

讀起來也相當的直白,意思就是現在系統中使用的 GitLab 版本是 16.1.x ,而想要升級的版本是 16.9.x ,因為這兩個版本之間存在必要轉乘版本,所以就不能直接升級過去,訊息也很貼心的把升級路徑 (upgrade paths) 的文件連結顯示給我們去參考。

從連結的參考文件中,我們也可以知道,16.1.x 要先升級到 16.1.6 ,接著下一站就可以轉乘到 16.3.7 ,然後繼續前往 16.7.6 ,最後就可以前往終點站 16.9.1 囉。

解決方案

GitLab 如果很久都沒有去維護(升級),建議要詳讀下面兩個文件:

注意事項:

  • 升級之前一定要詳讀前往下一站的說明文件,避免翻車。
  • 升級之前一定要做足夠的備份,以免翻車的時候,可以把車子再翻回到軌道上。

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料