当我尝试安装 Imagemagick 时,Aptitude 删除了一堆模块,如何撤消此操作?

当我尝试安装 Imagemagick 时,Aptitude 删除了一堆模块,如何撤消此操作?

昨天我尝试安装apt-get最初使用的 Imagemagick,结果返回错误。我已经尝试安装 ImageMagick 几个小时了,所以我不耐烦了。 stackoverflow 上的一篇文章说,如果apt-get不起作用,我可以尝试使用aptitude.所以我做了。就在那时,一切开始崩溃。 Aptitude 开始删除一大堆模块。我认为这是这个过程的一部分。所以现在:

  • apache2 没有启动
  • nginx 不运行,我无法运行 plesk
  • 我的邮件服务器不再工作了,因为 plesk 也不再工作

有什么办法可以回滚这个吗?以后有什么办法可以避免这种情况吗?我期望 aptitude 的行为与 apt-get 相同。

答案1

apt-get都是底层命令(Debian 软件包系统)aptitude的便捷前端。dpkg它们(预)处理依赖关系、冲突解决和包下载等内容,然后dpkg使用明确的指令进行调用以安装下载的 *.deb 文件,或者删除包及其依赖关系,或者自动(取消)配置它们,或者执行其他操作...

您可能要求aptitude强制安装某个软件包。它的冲突解决方案启动并强制完全删除冲突的包,破坏其他包。据推测,依赖项解析发现某些依赖项必须安装在特定版本或体系结构中,这些依赖项不能与已安装的依赖项共存。某些事情根本行不通,但是既然您要求强制安装......那么,您得到了您所要求的。

您可以在这里找到有关软件包历史记录和系统状态的有用信息。使用less <log-file>(或zless <compressed-log-file>) 读取这些文件。

  • 您可以在其中/var/log/apt/history.log*看到命令历史记录apt-get以及它为您的请求/命令提出的解决方案。
  • 您可以在其中/var/log/apt/term.log*看到所述请求/命令的输出。
  • 您将在其中/var/log/aptitude*看到一些能力活动。
  • 您可以在其中/var/log/dpkg.log*看到各个软件包状态虎钳发生了什么。

dpkg -l将列出系统上的所有软件包及其状态,包括以前安装的软件包(即“已删除”软件包)的状态。列表标题(或man dpkg)将告诉您第一列中字母的含义。第一封信将告诉您您/apt-get/aptitude 请求的软件包的状态。第二个字母将告诉软件包当前所处的状态。如果有第三个字母R,则该软件包需要重新安装。dpkg -l | grep -v "^ii"将列出相同的软件包,不包括“当前按要求安装的”软件包,这可能有助于缩小“已删除”或“半配置”或“半安装”软件包的范围。如果添加| less到任一命令管道,则可以滚动输出。

您现在要做的是找出哪些软件包已被删除以及原因。 “为什么”部分大概如上所述,并且不能轻易解决。因此,您可能想首先删除/清除您的 imagemagick (执行apt-get remove <the-offending-package>,然后继续apt-get autoremoveapt-get remove <other-packages>删除不再需要的依赖项;--purge如果您还想删除配置文件,请小心附加到任一命令)。

然后您可以重新安装丢失的软件包。或者更确切地说,您想要强制重新安装您感兴趣的主要损坏的软件包,并像往常一样让 apt-get/aptitude 自动安装旧的依赖项。这样,琐碎的 lib* 依赖项就不会被标记为“手动安装”,这将阻止将来在必要时自动删除。

要重新安装软件包:apt-get install <package>,如有必要,可以选择附加--reinstall到显式重新解压软件包。

此外,您还可以查看man apt-getman aptitude了解他们的选择。

祝你好运!

相关内容