Giu*_*ppe 7 apt dpkg kernel openvz 14.04
为了使一个漫长的故事短,我坚持不想要的,一半的映像文件包,我试图摆脱了一把:
$ dpkg -l |grep linux-im
iF linux-image-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
Run Code Online (Sandbox Code Playgroud)
这些镜像实际上是无用的,因为我的 32 位 14.04 系统位于一个 OpenVZ 容器中,它只负责内核。如您所见,一个更古老的:
$ uname -r
2.6.32-042stab116.2
Run Code Online (Sandbox Code Playgroud)
因此,与关注如何在例行升级后删除旧内核映像的大多数类似问题不同,我在这里尝试做的是完全清除所有这些 3.13 包,这首先不应该存在。
这是我迄今为止尝试的总结。
由于明显的恶性循环,尝试以通常的方式(apt-get,apt,aptitude,没关系)删除/清除包似乎不起作用。
sudo apt-get purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic
Run Code Online (Sandbox Code Playgroud)
从输出中可以看出,实际上没有删除任何内容。另一方面,aptitude设法更进一步:
sudo aptitude purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic
Run Code Online (Sandbox Code Playgroud)
在此过程结束时,*image-3.13*s 以及通常在/boot和 中找到的匹配文件和文件夹都消失了,/lib/modules但image-extra仍报告 s 已安装到一半(即使它们似乎不包含任何文件,经验证dpkg -L... )
此外,依赖关系现在打破,因为在这个阶段重复吹扫导致容易抱怨丢失的文件/文件夹 /boot并在/lib/modules。我试图按照此处的建议将虚拟文件放置在预期的位置,但最后我遇到了原始错误。我认为以下是关键的摘录:
[...]
Removing linux-image-extra-3.13.0-101-generic (3.13.0-101.148) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
update-initramfs: Generating /boot/initrd.img-3.13.0-101-generic
E: /usr/share/initramfs-tools/hooks/fixrtc failed with return 1.
update-initramfs: failed for /boot/initrd.img-3.13.0-101-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-extra-3.13.0-101-generic (--purge):
subprocess installed post-removal script returned error exit status 1
[...]
Run Code Online (Sandbox Code Playgroud)
在尝试失败后,一个所谓的核选项:
sudo dpkg --remove --force-remove-reinstreq package_name
Run Code Online (Sandbox Code Playgroud)
我的想法用完了。
鉴于:
linux-image-3.13.0-XXX-generic成功清除linux-image-extra-3.13.0-XXX-generic为半安装image-extra当前安装的软件包不依赖于这些那么一种可能的方法是从dpkg数据库中强制清除这些悬空条目,如此处建议的那样。
请注意:这是一种黑客行为、低级且有潜在危险的操作。
$ dpkg -L linux-image-extra-3.13.0-XXX-generic)并删除它们/var/lib/dpkg/status,找到并删除描述您希望 dpkg 忘记的包的文本块dpkg以及所有apt相关程序应该恢复正常| 归档时间: |
|
| 查看次数: |
7415 次 |
| 最近记录: |