倘若有完整的桌面應用需求,則第三方的 RPM Fusion 套件庫經常會成為 Fedora 及 RHEL(和衍生發行版)使用者必要的套件來源。然而若發現套件更新後有些問題,想要回退至先前版本時,一旦上游套件庫未提供舊版套件,就會有 dnf downgrade 指令無法奏效的情形。
最近手邊有主機就發生這樣的事,RHEL 8 系統做例行的軟體更新,將 FFmpeg 套件版本從 4.2.11-1 更新至 4.4.8-1 後,過了幾天發現平常執行的影音串流工作,接收端會出現以往沒有發生的音質問題。由於編寫的腳本指令已經靜靜地用了好幾年,一時之間也想不出來怎麼樣修改能夠消除問題。於是認為必須回退已安裝的套件版本,然而 dnf downgrade 當下並無舊套件可供下載。
上網查了一下,有提到說可以從 koji.rpmfusion.org 網站找尋過去組建的套件版本。該站點目前為因應爬蟲流量的緣故,有簡單的密碼要求,帳密皆為 rpmfusion。在順利進入網站後,就可以循線找尋過去已組建的套件版本,例如 ffmpeg-4.2.11-1.el8。然後將所需的個別套件 ffmpeg、ffmpeg-libs 及 libavdevice 一併下載並放置於同一位置後,再執行以下指令進行安裝即可:
- sudo dnf install ./*.rpm
至於這個 FFmpeg 版本更新後的問題,其實無論是 4.2.x 或者是 4.4.x 都已是較舊的版本,考量到未來一旦設備有異動,勢必也會連帶改用較新的發行版及軟體版本,屆時再重新進行規劃及測試。所以現階段已經運作數年的主機就是求穩定就好,依然會讓系統繼續獲取可用更新,不過已知會影響當前工作運行的版本變化則予以避免,因此將 ffmpeg 等套件先列入到排除清單中,如以下所示寫入到 /etc/dnf/dnf.conf 中:
exclude=ffmpeg*, libavdevice*