每隔一陣子就會需要做一次系統的全面升級,隨著 Fedora 27 在2018/11 停止維護後,這次的升級其實已經延了好一段時間。現在服役中的這版 Fedora 是從 17 一路升到 27,算算也陪著走過了十個佚代。準備邁向第十一囉!記錄一下這次升級的方法和遇到的問題。
從 Fedora 27 開始改用 dnf 做套件管理後,升級的方案也越趨固定了,大致如下: * 更新現有套件 * 安裝 dnf 的系統升級套件(如果原本沒有的話) * 開始升級
更新現有套件
先將現有系統中的所有套件進行更新 使用以下指令
# sudo dnf upgrade --refresh
通常這一步不會發生什麼問題,因為平常也經常在做更新呀!
安裝 dnf 的系統升級套件
如果之前跟我一樣一路升級上來的人,應該之前有裝過了。如果不確定的話也可以再裝一次。指令如下
# sudo dnf install dnf-plugin-system-upgrade
開始升級
在以上都完成後就可以開始進行整個系統升級的環境了。指令如下:
# sudo dnf system-upgrade download --releasever=28
通常比較容易出現問題的都是在這一個步驟,進行升級的過程中,dnf 會先檢查是否有套件衝突或是其他無法升級的問題,一旦發現問題就會將問題顯示出來並且中斷升級。如果沒有發生問題的順利完成這個步驟就完成得差不多了。
最後再下一道重新開機的指令就準備看升級後的結果是否成功了,指令如下:
# sudo dnf system-upgrade reboot
問題記錄
- 在 開始升級 的步驟中,若是看到類似以下的錯誤訊息.
error msg
錯誤:
Problem 1: package ffmpeg-compat-0.6.7-10.fc26.x86_64 requires libx264.so.148()(64bit), but none of the providers can be installed
- x264-libs-0.148-22.20170521gitaaa9aa8.fc27.x86_64 does not belong to a distupgrade repository
- problem with installed package ffmpeg-compat-0.6.7-10.fc26.x86_64
Problem 2: package grive-0.3.0-13.3.x86_64 requires libjson-c.so.2()(64bit), but none of the providers can be installed
- json-c-0.12.1-5.fc27.x86_64 does not belong to a distupgrade repository
- problem with installed package grive-0.3.0-13.3.x86_64
Problem 3: package gstreamer-plugins-ugly-devel-docs-0.10.19-23.fc27.noarch requires gstreamer-plugins-ugly = 0.10.19-23.fc27, but none of the providers can be installed
- gstreamer-plugins-ugly-0.10.19-23.fc27.x86_64 does not belong to a distupgrade repository
- problem with installed package gstreamer-plugins-ugly-devel-docs-0.10.19-23.fc27.noarch
....
....
表示列出來的套件在 Fedora 28 的官倉中找不到對應可供升級的套件,可以把這些套件名稱都先記錄下來,先看看是不是自己必要使用的套件。可以到
RPM Fusion 和
RPM Find 找找看有沒有 Fedora 28 可以用的套件。可以的話先將這些有問題的套件移除,等升級成功後再另行安裝回來。移除套件的指令是
# sudo dnf remove xxxxxxxxx <= xxxxxxx為套件名稱
要特別注意的是有些人會遇到 nss-pem 這個套件卡住,錯誤訊息類似以下
Problem xx: nss-pem-1.0.3-6.fc27.i686 has inferior architecture
- nss-pem-1.0.3-6.fc27.x86_64 does not belong to a distupgrade repository
- problem with installed package nss-pem-1.0.3-6.fc27.i686
有很多必要的套件都需要 nss-pem ,所以並不能直接在此先行移除。在 Red Hat Bugzilla 中
有個 Ticket提到一個神奇的解決方法。在完成升級之前在 Fedora 27 的環境下指定安裝 Fedora 28 的 nss-pem 套件,裝好後再開始升級可以避開這個問題。指令如下:
# sudo dnf install nss-pem-1.0.3-9.fc28 --releasever=28
我也是靠這個方法成功避開這個奇怪的 Bug。安裝好 Fedora 28 的 nss-pem 後,再執行 # sudo dnf system-upgrade reboot 就可以順利升級囉!
祝各位都能成功升級哦!!!!