我最近从 ubuntu 18.04 升级到了 22.04,这也升级了我的 zfs 版本...除了这个包,zfs-dracut
它“被保留了下来”。
从输出中可以看出apt policy zfs-dracut
,问题是不是这是一个分阶段的升级。
generic@motorbrot:/media/generic$ sudo apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
alsa-ucm-conf firmware-sof-signed ubuntu-advantage-tools zfs-dracut
# [more irrelevant stuff here]
generic@motorbrot:~$ sudo apt policy zfs-dracut
zfs-dracut:
Installed: 0.8.4-1
Candidate: 2.1.4-0ubuntu0.1
Version table:
2.1.4-0ubuntu0.1 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages
2.1.2-1ubuntu3 500
500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
*** 0.8.4-1 100
100 /var/lib/dpkg/status
我的zfs版本目前是:
generic@motorbrot:~$ zfs --version
zfs-2.1.4-0ubuntu0.1
zfs-kmod-2.1.4-0ubuntu0.1
尽管 askubuntu 上有很多问题询问为什么“软件包被扣留”,但答案往往如下:
- 这是分阶段更新。请稍等。不过
这会显示在输出中。apt policy
- 只需安装它(,,,,
apt install --upgrade-only zfs-dracut
... )这些都 没有什么区别。apt install zfs-dracut
apt full-upgrade
apt-get --with-new-pkgs upgrade
- 该包裹是标记被阻止了。
在我的情况下没有,sudo apt-mark showhold zfs-dracut
没有输出。 - 只需清除并重新安装即可。
我可以这样做,但我担心它可能因为一个好的理由而被阻止,而清除它会破坏某些东西。特别是因为我在 root 上运行 zfs。
为什么这个包裹被扣留了吗?
(并且如何我自己能解决这个问题吗?)
跟进评论:以下是我在执行上述某些操作时发生的情况,但这些操作不起作用。这些摘录是最新的,因此也包含其他软件包。其他软件包均按phased
进行apt policy
。
generic@motorbrot:/media/generic$ sudo apt list --upgradeable
[sudo] password for generic:
Listing... Done
alsa-ucm-conf/jammy-updates,jammy-updates 1.2.6.3-1ubuntu1.4 all [upgradable from: 1.2.6.3-1ubuntu1.3]
libnvpair3linux/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
libuutil3linux/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
libzfs4linux/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
libzpool5linux/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
python3-pyzfs/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
ubuntu-advantage-tools/jammy-updates 27.13.5~22.04.1 amd64 [upgradable from: 27.13.3~22.04.1]
zfs-dkms/jammy-updates,jammy-updates 2.1.5-1ubuntu6~22.04.1 all [upgradable from: 2.1.4-0ubuntu0.1]
zfs-dracut/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 0.8.4-1]
zfs-initramfs/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
zfs-test/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
zfs-zed/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
zfsutils-linux/jammy-updates 2.1.5-1ubuntu6~22.04.1 amd64 [upgradable from: 2.1.4-0ubuntu0.1]
generic@motorbrot:/media/generic$ sudo apt full-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
alsa-ucm-conf libnvpair3linux libuutil3linux libzfs4linux libzpool5linux python3-pyzfs
ubuntu-advantage-tools zfs-dkms zfs-dracut zfs-initramfs zfs-test zfs-zed zfsutils-linux
0 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
警告:答案建议运行apt install zfs-dracut dracut zfsutils-linux
。在我的情况下,卸载了zfs-initramfs
,发出警告,然后安装 失败zfs-dracut
,因为我的好奇心比健康更重要,所以我重新启动了,现在被困在一个不知道 zfs 的 initramfs 上。我从实时棒上修复了这个问题,但无论如何这不是一个好结果。
对于任何处于相同情况的人:我基本上遵循了本指南:从实时 USB 棒启动,导入但不挂载您的 zfs 池,挂载启动时仍可使用的快照zfs mount -t zfs tank/your_dataset@something /mnt/rescue
,绑定挂载所有需要的内容(尤其是启动和 efi 分区),chroot 进入并运行update-initramfs -u -k all
(或至少是显示的最新内核版本ls -la /lib/modules
)。
这些建议的修复可能是有用的(或有害的),但本质上未能回答我的问题:为什么zfs-dracut 被阻止了吗?
边注对于有同样问题的人来说:实际使固定是完全卸载zfs-dracut
并重新安装zfs-initramfs
,然后再次运行update-initramfs -u -k all
。
但这与问题无关。
答案1
我怀疑这是因为您使用的是apt upgrade
and 而不是apt dist-upgrade
或apt full-upgrade
。upgrade
如果需要安装其他软件包以满足依赖关系,则不会安装软件包。而dist-upgrade
和full-upgrade
会这样做。
zfs-dracut
需要dracut
和zfsutils-linux
(顺便说一下,这可能已经在您删除的“#[更多不相关的东西在这里]”部分中提到过)。
因此,要么 要么sudo apt install zfs-dracut dracut zfsutils-linux
都sudo apt dist-upgrade
可能帮助你摆脱困境。