我尝试使用此方法将 Fedora 22 升级到 Fedora 23指导 然而事情失败了,我似乎仍在 Fedora 22 上。但是系统认为它正在运行 Fedora24
$ cat /etc/*-release
Fedora release 24 (Rawhide)
NAME=Fedora
VERSION="24 (Workstation Edition)"
ID=fedora
VERSION_ID=24
PRETTY_NAME="Fedora 24 (Workstation Edition)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:24"
HOME_URL="https://fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=Rawhide
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=Rawhide
PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy
VARIANT="Workstation Edition"
VARIANT_ID=workstation
Fedora release 24 (Rawhide)
Fedora release 24 (Rawhide)
dnf 不起作用,因为它在存储库中搜索 Fedora 24。
我怎样才能解决这个问题。
答案1
尝试这个:
- 对于每个文件
/etc/*-release
,将版本值设置为 23。 - 禁用 fedora-rawhide 存储库(修改
/etc/yum.repo.d/fedora-rawhide.repo
by 设置enable=0
) - 在终端中,执行
dnf distro-sync
- 如果在此步骤中包抛出错误并且除非包装内含F24名称上的值,执行
dnf remove <entier package name>
. - 重做
dnf distro-sync
此解决方案应该会产生有效的 Fedora 23 安装。
答案2
您提到的指南有点复杂,并且在一页上包含许多不必要的附加信息,这使得整个主题显得非常复杂,而实际上在大多数情况下 2 个简单的命令就足够了。此外,显然你必须遵循 2 个链接(警告消息中的“方法”告诉你不要使用 dnf,然后是“专用页面”)才能到达实际解释如何使用系统升级插件的页面 - 这是准备升级的官方方式。
具体来说,问题中链接的这个wiki页面解释了如何直接使用 yum/dnf 进行升级,即不建议,这不是官方方式。 “不推荐”通常意味着“它可能会破坏某些东西”。至少,页面顶部有一个黄色警告通知,基本上告诉用户不要执行该页面上描述的操作,除非他们知道自己在做什么。 Fedora 有官方的升级方式。很久以前,它曾经是PreUpgrade,从Fedora 18开始是FedUp,从升级到Fedora 23开始,它现在是dnf插件“system-upgrade”。需要明确的是,这是一个dnf插件,不仅仅是dnf本身。
由于不清楚使用了哪些命令,因此这将是一个非常通用的答案。
至于原来的问题,答案已经被接受,但根据作者的评论,出现了错误。首先,做不是手动更改配置文件中的版本号,除非有充分的理由。你可能会打破更多。
听起来您确实升级到了 rawhide 而不是 23,在这种情况下您将需要尝试降级。所以我可以建议:
# dnf system-upgrade --releasever=23 --setopt=deltarpm=false distro-sync
# dnf system-upgrade reboot
不要忘记系统升级调用插件的参数!
什么不是去做
不要更改配置文件中的版本号并运行 dnf。如果幸运的话,您只是错误地修改了其他程序所依赖的文件;如果你不幸的话,你可能会破坏未来的更新/升级,特别是在更改存储库文件时。也不要从文件$releasever
中删除变量/etc/yum.repos.d/*.repo
,这些变量很重要。如果您执行此操作后忘记在 6 个月内再次更改它们以进行下一次升级,则该升级可能会中断或严重失败。
如果您已经更改了配置文件(遵循不好的建议,您可以在互联网上找到很多这样的建议),请首先使用您在更改之前创建的每个文件的备份副本来恢复您的更改。
如何从 Fedora 22 升级到 Fedora 23(官方)
由于 FedUp 已被弃用,并且现在在内部使用 systemd 来升级系统,因此有一个新命令来准备和开始升级 - “dnf system-upgrade ...”。但出于兼容性原因,fedup 命令仍然有效。
再次强调,升级是由dnf启动的插入被称为系统升级,不是 dnf 本身。所以你至少必须先安装这个插件的当前版本:
准备:
- 安装/更新“系统升级”插件:
dnf install dnf-plugin-system-upgrade
在某些情况下,它可能会抱怨依赖问题,您可能必须添加--best
/--allowerasing
:dnf install --best dnf-plugin-system-upgrade
- 你应该在准备升级之前更新您的系统。无论如何,它通常都可以工作,但是除非您更新,否则不能保证升级可以工作,因此:
dnf upgrade
然后准备并开始升级,这基本上是一个两步过程:
# dnf system-upgrade download --releasever=23
或# fedup --network 23
(重定向到dnf system-upgrade
)# dnf system-upgrade reboot
最后一条命令将重新启动系统进入升级模式。与 FedUp 不同的是,FedUp 创建了一个必须在启动时选择的新 Grub 启动项“系统升级”,系统将执行定期关机、正常启动,然后在加载图形桌面之前启动升级过程。如果一切顺利,您的新 Fedora 23 将随后启动。
dnf Python 回溯错误
目前,有报告称 dnf 中断存在问题,每个 dnf 调用都会显示回溯。这应该通过正常更新系统来解决,但如果没有 dnf,这是不可能的,因此必须使用解决方法。错误消息(对于任何 dnf 调用)将如下所示:
Traceback (most recent call last):
File "/bin/dnf", line 36, in <module>
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 51: ordinal not in range(128)
解决方法是在每个 dnf 调用前面加上LANG=C
,例如执行完整更新:
# LANG=C dnf -y upgrade
dnf系统升级重启循环
在某些情况下,系统升级无法启动,但不是只启动一次然后重新启动回到系统,而是会陷入重新启动循环,从而导致无法使用系统。这种情况似乎经常发生,甚至在自述文件,所以我想我也应该在这里提到它。如何打破升级重启循环:
- 启动后,在 Grub 启动菜单中,点击e编辑启动参数。在文本区域中,向下滚动到以 开头的行
linux
,点击End将光标移动到行尾并追加(在空格之后)rd.break
。然后点击F10启动进入紧急模式,你会得到一个shell。 - 您将必须删除一个文件,因此您必须以读写方式重新挂载根文件系统,因为它是以只读方式挂载的:
# mount -o remount,rw /sysroot
- 删除系统升级链接:
# rm /sysroot/system-update
- 重新启动(命令
reboot
或Ctrl++ ),系统应该正常启动。您可能想通过运行来清除升级文件。AltDeldnf system-upgrade clean
答案3
好的,那么这就是要做的事情(在超级用户模式下):
- rm 所有 /etc/yum.repo.d/*.rpmnew
- 对于所有 /etc/yum.repo.d/*.repo:手动将 替换
$releasever
为 23。 - 转到步骤 3。