Я пытаюсь обновиться с 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
Вам просто нужно сделать то же самое для всех перечисленных вами модулей.
После того, как я отключил все три модуля, я смог без проблем запустить обновление 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», та же ошибка: terminate вызвано после создания экземпляра «libdnf::ModulePackageContainer::EnableMultipleStreamsException» what(): Невозможно включить несколько потоков для модуля «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
команду и дождитесь отображения списка пакетов для установки, выберите «да(ы)», а затем... продолжите установку в обычном режиме. :)
Надеюсь, поможет.