如何在不安装 Apache 2 的情况下卸载 php7.2-fpm(在 LEMP 机器上)

How to UNinstall php7.2-fpm WITHOUT installing Apache 2 (on a LEMP machine)

这听起来可能很愚蠢,但我的奇怪配置似乎 强制 一个 Apache2 安装 试图 un安装php7.2-fpm! (我使用 nginx,我最不想在服务器上看到的是 Apache 安装...)

场景如下:我被 Ubuntu 16.04.6 LTS 安装卡住了(抱歉,我无法控制它,我只能维护它,使用 apt 安装无论我想要什么,但 将 Ubuntu 升级到现代版本。

多年来,正如预期的那样,Ubuntu 16.04 已被许多包维护者丢弃,尤其是来自官方 Ubuntu 存储库的维护者;因此,我别无选择,只能添加 lots 个替代存储库。

此外,随着时间的推移,我一直在升级 PHP。第一件事是几年前下降 5.6。然后是 7.0 退役的时候了,最终 7.1 也退役了。与此同时,我已经安装了 7.2、7.3 和 7.4 版本,因为该服务器上托管的每个站点(顺便说一句,没有那么多)都经过严格测试,以确保它继续在 [=86 的最新版本上工作=].

现在,所有 个站点我在 PHP 7.4 上有 运行,除了两个,它们仍然需要 PHP 7.3 ,直到底层应用软件与 7.4 兼容(我敢肯定,这将在几周或几个月内发生)。我可以安全地删除 PHP 7.2,因为它不再被使用了。

唉,它似乎并没有被完全删除——尽管它 not 在启动时启动,也没有从任何地方调用它。但是,如果我尝试删除它,我会得到以下信息:

# apt remove php7.2-fpm
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.2 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom
The following packages will be REMOVED
  php7.2-fpm
The following NEW packages will be installed
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.2 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0
0 to upgrade, 10 to newly install, 1 to remove and 16 not to upgrade.
1 not fully installed or removed.
Need to get 2,879 kB of archives.
After this operation, 6,192 kB of additional disk space will be used.
Do you want to continue? [Y/n]

显然,最后 我想要的是再次安装 Apache 2。另外,我相信这是我第一次看到 apt 希望 安装 某些东西,当我请求 删除 一个包时!

这是我从 apt show 得到的:

# apt show php7.2-fpm
Package: php7.2-fpm
Version: 7.2.31-1+ubuntu16.04.1+deb.sury.org+1
Priority: optional
Section: php
Source: php7.2
Maintainer: Debian PHP Maintainers <team+pkg-php@tracker.debian.org>
Installed-Size: 4,960 kB
Provides: php-fpm, phpapi-20170718
Depends: libmagic1, libpcre3 (>= 2:8.41), mime-support, php7.2-cli, php7.2-common (= 7.2.31-1+ubuntu16.04.1+deb.sury.org+1), php7.2-json, php7.2-opcache, procps, systemd | systemd-tmpfiles, tzdata, ucf, init-system-helpers (>= 1.18~), libapparmor1 (>= 2.7.0~beta1+bzr1772), libargon2-0 (>= 0~20160406~), libc6 (>= 2.15), libsodium23 (>= 1.0.14), libssl1.1 (>= 1.1.0), libsystemd0, libxml2 (>= 2.8.0), zlib1g (>= 1:1.1.4)
Suggests: php-pear
Download-Size: 1,394 kB
APT-Manual-Installed: yes
APT-Sources: http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 Packages
Description: server-side, HTML-embedded scripting language (FPM-CGI binary)
 This package provides the Fast Process Manager interpreter that runs
 as a daemon and receives Fast/CGI requests.  Note that MOST Apache users
 probably want the libapache2-mod-php7.2 package.
 .
 The following extensions are built in: Core date filter hash libxml openssl
 pcre Reflection session sodium SPL standard zlib.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.

请注意,Apache 2 安装,虽然我相信它已经安装过一次(几年前)——我从来没有 used/configured 它,但是 也许它是预装的,我不知道,我只是在这里推测)——尽管apt说它不再安装了,可能 是一些旧文件,在删除包时 'confuse' apt...

不过,我找不到这个非常奇怪的依赖项,也找不到如何修复它(我尝试了很多选项...)

没有试图让apt继续安装Apache 2,并立即在包[=22=上发出delete/purge请求].也许这将修复存储库依赖性...

像往常一样,我提前感谢您在 apt!

周围接受我的初学者问题

注意:我显然已经在 Google 上搜索了一个解决方案,并且在 SO 上进行了大量搜索。虽然我发现了很多关于 installing/removing 各种 PHP 版本的例子,主要是 Apache,有时也有 nginx,但我还没有找到适合我的具体情况的解决方案。 apt 删除 包时是否有命令行选项忽略某些依赖项?

如果直接安装php7.2,Apache就安装好了。请试试这个

apt-get purge apache2
apt-get autoremove
apt-get install php7.2-cli php7.2-fpm

好吧,纯属偶然,当我试图再次解决这个问题时,我偶然发现了以下解释:https://www.digitalocean.com/community/questions/trying-to-uninstall-phpmyadmin-dpkg-error-while-cleaning-up

虽然这与我自己的 php7.2-fpm 问题没有直接关系,但我注意到一个非常重要的事情:末尾的星号!

所以我基本上做到了:

apt-get remove php7.2*

并且,为了更好的衡量,

apt-get purge php7.2*

(令人惊讶的是,还有一些额外的包没有被删除...)

而且,因为它不会伤害...

apt-get autoremove(返回没有任何东西可以删除)

此外,令我惊讶的是,我仍然 发现了一些来自 php7.1 的旧软件包可用!! (我以同样的方式删除了它们)。而且,可悲的是,因为我有一个如此古老的基础 Ubuntu 系统,我需要 php7.0 中的一些文件才能使 Roundcube 正常工作(对我的服务器的整体运行至关重要),但我的下一个清理任务是弄清楚如何在不打扰的情况下摆脱它 Roundcube...