我有一个运行 Debian 的虚拟服务器。由于某种原因,如果我使用 sysvinit,它不会启动。我认为问题出在主机操作系统上,因为它是基于 Virtuozzo 的计算机,而不是完全虚拟的。不过,使用 upstart 时它确实会启动。问题是我还在使用 cron-apt,它会在每次更新到达时重新安装 sysvinit。有什么办法让 Debian 默认使用 upstart 吗?或者使用 apt 将其锁定到位?
更新:
我尝试了下面建议的解决方案,它似乎有效。 apt 首选项的正确语法是这样的:
Package: sysvinit
Pin: origin ""
Pin-Priority: -1
答案1
这与现有的问题类似 Debian 上的新贵?
无论版本如何,必须声明的是,upstart
在 Debian 中作为 init 系统运行似乎“需要您自担风险”。话虽如此...
在Debian 威兹(截至 2015 年的旧稳定版),sysvinit
包装上有标记Essential
,这可能就是为什么upstart
不是很“粘”。
可用于限制 的apt
行为的两种机制是apt_preferences
和 dpkg 黑名单。apt_preferences
在以下文件中进行了描述/etc/apt/preferences.d/
;阅读上面链接的手册页。
dpkg 黑名单的描述见nixCraft 博客文章。你可以尝试:
echo "sysvinit hold" | sudo dpkg --set-selections
作为Debian 杰西(截至 2015 年稳定),sysvinit
包是一个过渡包,不再是必需的:
该包依赖于 init,这是拉入默认 init 系统的重要包。从 jessie 开始,这将是 Linux 上的 systemd。它有助于平滑过渡,并提供后备 SysV init 二进制文件,可用于通过 init=/lib/sysvinit/init 内核命令行参数引导系统,以防系统在切换到 systemd 后无法启动。
如果您的系统使用 systemd 成功启动,或者您选择坚持使用 sysvinit-core,则可以安全地删除此软件包。
所以我猜你没有运行 Jessie,但如果你运行了,你可以尝试上面描述的 Wheezy 解决方案。