在決定降級之前,請小心考慮。如果是因為現有包有Bug,請在Bug追蹤系統搜索現有的Bug報告。如果沒有,請花上幾分鐘幫忙把它報告給Arch的Bug追蹤系統或軟體包的項目地址,或者在論壇中警告其他可能遇到類似問題的用戶。
- 降級某個軟體包可能需要降級相應的依賴包.如果依賴包數量巨大,參見Arch Linux Archive#How to restore all packages to a specific date.
- 在修改配置文件和腳本時請小心.只要我們不繞過pacman的安全措施,它將為我們處理這些問題.
- 如果軟體包降級會引進 soname 變更,所有依賴包可能都需要降級或重新編譯.
如何降級軟體包
使用pacman的臨時文件
如果一個新包剛剛被安裝並且沒有刪除pacman cache,你可以在/var/cache/pacman/pkg/
中找到較早版本.
安裝替換現有的版本.pacman會處理依賴包但不會處理依賴庫的版本衝突。如果一個其依賴庫因該包降級需要降級,你需要手動降級這些包。
# pacman -U /var/cache/pacman/pkg/package-old_version.pkg.tar.type
對老的軟體包,type
應該是 xz
,遵循 2020 變更的新軟體包,type
應該是 zst
。
當成功降級該包以後,請暫時將其加入pacman.conf
的IgnorePkg section,直到您的問題被解決。
降級內核
新內核出問題時,可以通過使用 pacman 緩存降級內核。在/var/cache/pacman/pkg
尋找舊版安裝包。必須降級的有linux包, linux-headers包和任何內核模塊。舉例來說:
# pacman -U linux-4.15.8-1-x86_64.pkg.tar.xz linux-headers-4.15.8-1-x86_64.pkg.tar.xz virtualbox-host-modules-arch-5.2.8-4-x86_64.pkg.tar.xz
退出並重啟。
如果您在升級內核後無法啟動,您可以通過使用 live CD 來降級內核。方法類似Arch Linux的安裝進程。啟動後在/mnt
掛載你的根目錄文件系統,別忘了掛載其他分區如/boot
或/var
等等。(例子 mount /dev/sdc3 /mnt/boot
)。然後chroot進入系統。
Arch Linux Archive
Arch Linux Archive是official repositories的日更快照。
ALA能被用來降級包或者還原整個系統到過去版本。
手動編譯
如果找不到編譯好的軟體包,就需要自己找到 PKGBUILD 並通過 makepkg 編譯。
官方軟體倉庫中的 PKGBUILD 可以通過 ABS 獲取並修改軟體版本。或者訪問軟體包頁面搜索你需要的降級的軟體包,然後點 "查看修改" 連結,選擇「查看日誌「。找到需要的版本並通過 Tree 視圖下載 .tar.gz
快照。
參閱 Arch Build System#Checkout an older version of a package.
老的 AUR 軟體包可以從 AUR 軟體包 git 倉庫提出舊版本。如果是 2015 AUR3 之前的 PKGBUILD,請參閱 Arch User Repository#Git repositories for AUR3 packages.
自動化
downgrade — 基於Bash使用本地緩存和Arch Rollback Machine。詳見downgrade(8)。