CentOS Stream 8 to 9 upgrade attempt

2 minute read

事隔四年又再來玩一次手動折騰(中間 8 升 Stream 8 偏 trivial 就沒紀錄了)

這次拿來升級的環境只有一個 CentOS Stream 8 的 lxc,用來架 GitLab

首先要蓋掉 dnf repos,手動抓 el9 的 centos-stream-release, centos-stream-repos, centos-gpg-keys,rpm -U --force 下去

這次很順 dnf makecache dnf upgrade --allowerasing 下去就差不多了

但接下來手動刪 el8 殘留物的時候就撞到了 dnf remove 不會動

Error message 看起來像 rpm 嘗試用 sqlite 這個 backend,但看到現有 repo db 的長相給改成了 bdb_ro (ro 猜是 readonly,看來 rpm 有換過格式)

查了一下確實 rpm 從 Berkeley DB 轉成了 SQLite,用 rpmdb --rebuilddb rebuild db in SQLite 就可以解決

再來 dnf modules 噴了一堆東西被自動搬到 @modulefailsafe 並且底下都炸 platform(el:8) 之類的 dependency 解不開

這個反而單純,因為我沒有在用那些 dnf modules,一次把它 disable 光光就解決了: dnf module disable virt nodejs perl perl-IO-Socket-SSL perl-libwww-perl postgresql python27 python36

再來將 gitlab-ce 轉到 el9 時撞到 package signature 驗證不過,爬了一下該有的 config, key 也都跟原本 el8 的一樣,但在驗 package 時有出現 warning Signature not supported. Hash algorithm SHA1 not available.

查了一下 el9 把 SHA1 預設關了,可以用 update-crypto-policies --set DEFAULT:SHA1 先開回來解決,而 update-crypto-policies rpmfind 找出是在 crypto-policies-scripts

除了這些之外沒遇到多少問題

另外注意到了 DBus implementation 換成了 dbus-broker

看來這次 el8 -> el9 比上次 el7 -> el8 小很多