我总是收到一条通知:Ubuntu 遇到内部错误。检查后发现有一个软件包未完全安装或删除libapache2-mod-wsgi-py3
。
当我跑步时:sudo apt-get upgrade
我得到:
dpkg: error processing package libapache2-mod-wsgi-py3 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
libapache2-mod-wsgi-py3
E: Sub-process /usr/bin/dpkg returned an error code (1)
我尝试使用sudo apt autoremove
。但没有完全删除它 我还做了:sudo dpkg --remove libapache-mod-wsgi-py3
当我尝试删除包时,我得到了这个:
dpkg: warning: ignoring request to remove libapache-mod-wsgi-py3 which isn't installed
但仍然有同样的错误。如何修复?
答案1
步骤 1:停止运行 apache2 服务
卸载之前,请在终端/其他 CLI 中输入此命令:
sudo systemctl stop apache2.service
第 2 步:删除软件包二进制文件、系统范围的配置文件和孤立的依赖项
要完全删除软件包本身及其系统范围的配置文件和软件包所需但不再需要的任何依赖项,请执行:
sudo apt-get purge --auto-remove <packagename>
解释:purge
执行的操作与 相同apt-get remove --purge
;它会删除包本身和相关配置文件。它类似于上面的一个步骤apt-get remove
,只删除二进制文件。--auto-remove
执行的操作与 相同apt-get autoremove
;它会删除孤立的依赖项。
抱歉,我没有在评论中给出具体命令,但使用单独的命令而不是单个命令来执行所有操作是完全没问题的,因为执行的操作是相同的。在您的具体情况下,由于您已经完成了remove --purge
,因此您现在只需使用即可执行自动删除部分sudo apt autoremove
,这应该可以处理 remove --purge 未删除的内容。单次输入方式稍快一些。
或者,如果你想要选择性地删除哪些依赖项,你可以摆脱--auto-remove
标志(执行sudo apt-get purge <packagename>
)并按照我从中找到的步骤进行操作惊人的答案轻松创建一种自定义依赖项卸载程序。以下命令首先列出所有软件包依赖项,然后将该列表导入到各个apt-get remove
命令中,这些命令都会发送到一个 shell 脚本,您可以在文本编辑器中打开该脚本并根据需要进行修改。然后,只要您满意,就可以执行该 shell 脚本。命令是:
apt-cache depends <packagename>|awk '{print "sudo apt-get remove "$NF}' >pg_remove.sh
pg_remove.sh 文件保存到您的主目录中(显然,如果您想将其保存到其他地方,您可以在输出文件名前添加路径)。要运行脚本,请执行bash pg_remove.sh
(如果您的输出文件不在您的主目录中,请修改此命令以包含其位置的路径)。
步骤 3:删除用户配置文件
接下来,您必须手动删除存储在主目录中的用户特定配置文件。这些文件可能位于其自己的目录中,和/或位于 ~/.config、~/.cache、~/.local 中。
首先查找包含软件包名称的文件~/.config
并将其删除。您可以使用ls -a ~/.config
或ls -A ~/.config
查看主页的所有内容,包括隐藏文件/文件夹。如果您使用 Nautilus 执行此操作,请确保已启用查看隐藏文件的选项(View>Show Hidden Files
)。然后使用 rm 或 Nautilus 删除它们。
另外,在您的主文件夹中查找带有软件包名称的目录(或看起来像软件包名称的东西——它可能不完全相同)。它可能默认隐藏,并且可能以“。”开头——如果它存在。我对 apache 了解不多,所以我不确定这个目录是否存在,或者它会是什么样子。无论如何,如果它存在,也请将其删除!
此外,请检查~/.cache
以~/.local/share
该包命名的目录。
步骤 2 和步骤 3 的参考资料:如何才能彻底删除一个包?,彻底删除应用程序的正确方法是什么?,如何彻底删除配置文件
未来可能重新安装
此软件包中可能包含您未来真正需要的库,您可能需要重新安装它。Ubuntu 附带安装了 libapache2-mod-wsgi-py3,这就像一个默认版本,所以我猜它无法与您使用的任何 Python 版本很好地兼容。如果您想了解更多信息,请查看which python
和的输出ps -fA | grep python
...如果与 Python 版本的冲突确实是问题所在,那么这个问题和这个解决如何通过 pip 正确安装 mod-wgsi(pip 安装的包名为 mod_wgsi)。