![如何在 Ubuntu 上安装 dracut?](https://linux22.com/image/1040489/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E5%AE%89%E8%A3%85%20dracut%EF%BC%9F.png)
我刚刚尝试在全新的 Ubuntu 12.10 服务器上安装 dracut,它是 initramfs-tools 的替代品,以便使用 dracut 的高级功能通过两个绑定接口从 NFS 启动。
不幸的是安装遇到了以下冲突:
root@ubuntu:~# aptitude install dracut
The following NEW packages will be installed:
cryptsetup{a} cryptsetup-bin{a} dmraid{a} dracut{b} kpartx{a} kpartx-boot{a} libcryptsetup4{a} libdevmapper-event1.02.1{a} libdmraid1.0.0.rc16{a} libreadline5{a} lvm2{a} mdadm{a} postfix{a} ssl-cert{a} watershed{a}
0 packages upgraded, 15 newly installed, 0 to remove and 2 not upgraded.
Need to get 3,004 kB of archives. After unpacking 8,428 kB will be used.
The following packages have unmet dependencies:
dracut : Conflicts: initramfs-tools but 0.103ubuntu0.2 is installed.
Conflicts: initramfs-tools:i386 which is a virtual package.
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) dracut [Not Installed]
Accept this solution? [Y/n/q/?]
建议的解决方案“dracut [未安装]”没有帮助。不幸的是,我没有找到有关 Ubuntu 上的 dracut 的太多信息,因此我无法确定它是否应该工作。我在 debian 中发现了以下错误报告,至今仍未解决: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=669342
我快速测试了 dracut 在 Ubuntu 12.04 服务器上的安装,并且安装良好,但我需要它用于 Ubuntu 12.10。
我已经尝试强制 dpkg 忽略冲突,但结果是一样的
aptitude -o Dpkg::Options::="--force-conflicts" install dracut
从源代码安装 dracut 是可行的,但是为了在 initramfs 中包含网络设置,需要 dracut-network 包,我找不到它的源代码,即使它在 Ubuntu 12.10 中可用,它也依赖于 dracut 包……
有人可以帮我安装 dracut 吗,或许还能分享一些关于为什么在 Ubuntu 中使用 dracut 如此困难的内部信息?
答案1
这里的问题是,Aptitude 不建议您删除 initramfs,因为它被视为核心包,而 Aptitude 从不建议删除核心包。
解决这个问题唯一明显的办法就是告诉 Aptitude 删除initramfs-tools
:
aptitude install dracut initramfs-tools-
但是,如果你尝试这个命令,你会发现它会触发其他重要的依赖问题:
The following packages have unmet dependencies:
dmsetup : Depends: initramfs-tools but it is not going to be installed.
console-setup : Depends: initramfs-tools (>= 0.85eubuntu12) but it is not going to be installed.
linux-image-3.5.0-22-generic : Depends: initramfs-tools (>= 0.36ubuntu6) but it is not going to be installed.
linux-image-3.5.0-17-generic : Depends: initramfs-tools (>= 0.36ubuntu6) but it is not going to be installed.
kpartx-boot : Depends: initramfs-tools but it is not going to be installed.
[...]
所有包实际上都应该依赖(这是由和linux-initramfs-tools
提供的虚拟包)。这是一个错误,应该initramfs-tools
dracut
如此报道。
简而言之,唯一的解决方案是修改该软件包的依赖关系。在当前情况下,您无法安装dracut
没有损坏的软件包。(不过,如果您可以接受损坏的软件包,那么您可以试用dpkg --force-all
、删除initramfs-tools
和安装dracut
。)
答案2
感谢安德烈亚·科尔贝里尼问题已被识别并在错误报告中跟踪软件包 dracut 无法安装在 Ubuntu 12.10 上。错误报告中会跟踪潜在问题 依赖于 linux-initramfs-tools. 任何有助于提高对上一个错误报告的认识以便尽快解决问题的帮助都将不胜感激。
我们与 dracut 软件包的 Debian 维护者一起,想出了一种安装 dracut 的变通方法,即消除与 initramfs-tools 的冲突。详细信息可在博客文章中找到安装并配置 dracut 以使用绑定接口通过 VLAN 标记网络从 NFS 根目录启动 Ubuntu 12.10。
简而言之,步骤如下
sudo apt-get build-dep dracut # install build dependencies for dracut
sudo apt-get install dpkg-dev # install dpkg-dev to build dracut .deb package
cd ~ # change to your home folder
git clone git://git.kernel.org/pub/scm/boot/dracut/dracut.git # checkout dracut
cd dracut
sed -i 's/Conflicts: initramfs-tools/Conflicts: /' debian/control # fix conflict
sed -i 's/usr\/etc/etc/g' debian/dracut.install # fix another issue
dpkg-buildpackage -b # build .deb packages
cd ..
dpkg -i dracut*.deb # install dracut and dracut-network