我正在嘗試從 Fedora 30 升級到 31,並且我已成功完成以下兩個步驟:
dnf upgrade --refresh
dnf install dnf-plugin-system-upgrade
但是,當我執行下一步時:
dnf system-upgrade download --releasever=31
……我明白了:
Before you continue ensure that your system is fully upgraded by running "dnf --refresh upgrade". Do you want to continue [y/N]: y
Adobe Systems Incorporated 35 kB/s | 2.9 kB 00:00
Fedora Modular 31 - x86_64 23 kB/s | 25 kB 00:01
Fedora Modular 31 - x86_64 - Updates 19 kB/s | 16 kB 00:00
Fedora 31 - x86_64 - Updates 17 kB/s | 18 kB 00:01
Fedora 31 - x86_64 37 kB/s | 25 kB 00:00
google-chrome 18 kB/s | 1.3 kB 00:00
MariaDB 9.7 kB/s | 2.9 kB 00:00
packages-microsoft-com-prod 16 kB/s | 3.0 kB 00:00
PostgreSQL common RPMs for Fedora 31 - x86_64 11 kB/s | 3.0 kB 00:00
PostgreSQL 12 for Fedora 31 - x86_64 3.3 kB/s | 3.8 kB 00:01
RPM Fusion for Fedora 31 - Free - Updates 29 kB/s | 9.1 kB 00:00
RPM Fusion for Fedora 31 - Free 26 kB/s | 9.9 kB 00:00
RPM Fusion for Fedora 31 - Nonfree - Updates 11 kB/s | 9.4 kB 00:00
RPM Fusion for Fedora 31 - Nonfree 21 kB/s | 10 kB 00:00
skype (stable) 6.6 kB/s | 2.9 kB 00:00
teams 4.9 kB/s | 3.0 kB 00:00
Fedora 31 - x86_64 - VirtualBox 247 B/s | 181 B 00:00
Visual Studio Code 19 kB/s | 3.0 kB 00:00
Yarn Repository 25 kB/s | 2.9 kB 00:00
terminate called after throwing an instance of 'libdnf::ModulePackageContainer::EnableMultipleStreamsException'
what(): Cannot enable multiple streams for module 'ant'
Aborted (core dumped)
有什麼辦法可以克服這個問題嗎?歡迎任何和所有的想法。我不介意我是否必須停用/刪除一些額外的軟體包儲存庫,如果這就是需要的...
答案1
停用模組化儲存庫的傻瓜指南
我不確定這到底是什麼來自 dbdemon 的評論意思是:
看來我必須禁用“Fedora Modular”存儲庫。
所以稍微搜尋一下就可以找到這篇文章如何使用 Fedora / RHEL 8 模組化儲存庫。
您可以透過以下方式列出已安裝的模組化儲存庫:
dnf module list --enabled
我得到這個輸出:
Docker CE Stable - x86_64 12 kB/s | 9.8 kB 00:00
...
Fedora Modular 30 - x86_64
Name Stream Profiles Summary
gimp 2.10 [d][e] default [d] GIMP
, devel
ripgrep latest [d][e] default [d] Line oriented search tool using Rust's regex
library
Fedora Modular 30 - x86_64 - Updates
Name Stream Profiles Summary
fd-find rolling [d][e] default [d] Simple, fast and user-friendly alternative to
find
gimp 2.10 [d][e] default [d] GIMP
, devel
ripgrep latest [d][e] default [d] Line oriented search tool using Rust's regex
library
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
注意:最後的位告訴您已經安裝了哪些模組。但我很確定我沒有故意地安裝這些模組化儲存庫,只是碰巧一些開發人員啟用了它們。我剛剛運行sudo dnf install ripgrep
並安裝了模組化存儲庫。
因此,從這個清單中,我將fd-find
、ripgrep
和gimp
作為模組安裝。
然後我可以禁用這些,例如ripgrep
:
sudo dnf module disable ripgrep
您只需對列出的模組執行相同的操作即可。
一旦我禁用了 3 個模組,我就可以毫無問題地運行 Fedora 升級:
sudo dnf system-upgrade download --releasever=31
答案2
根據https://bugzilla.redhat.com/show_bug.cgi?id=1811234,停用有問題的模組是可行的,但您需要記住在升級後重新啟用它們。那裡提到的一個可能更簡單的解決方案是:
sudo dnf module reset '*'
然後在安裝過程中它會說這樣的話:
Enabling module streams:
gimp 2.10
maven 3.5
meson latest
ninja latest
ripgrep latest
我不完全理解它是如何工作的,但是從https://docs.fedoraproject.org/en-US/modularity/using-modules-switching-streams/似乎一個模組最多可以選擇 1 個“流”,並reset
清除該選擇以允許選擇另一個流?
答案3
如果您對“ant”或“maven”等任何模組有問題,並且刪除模組不起作用,請嘗試使用命令重置模組:
“dnf 模組重置”,例如:dnf 模組重置 maven
它對我來說適用於“maven”模組,同樣的錯誤:拋出“libdnf::ModulePackageContainer::EnableMultipleStreamsException”實例後終止調用什麼():無法為模組“maven”啟用多個流
答案4
您需要執行以下步驟:
1)正如@icc97所說,執行dnf module list --enabled
命令並得到如下內容:
Fedora Modular 30 - x86_64 - Updates
Name Stream Profiles Summary
ant 1.10 [d][e] default [d] Java build tool
fish 3 [d][e] default [d] Friendly interactive shell
gimp 2.10 [d][e] default [d], devel GIMP
maven 3.5 [d][e] default [d] Java project management and project comprehension tool
然後運行
sudo dnf module reset gimp ant fish maven
(在reset
這部分之後,您只輸入上面結果中列出的內容)。執行
dnf system-upgrade download --releasever=31
命令並等待顯示要安裝的軟體包列表,然後選擇“y(es)”,然後...正常進行安裝。 :)
希望能幫助你。