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

Gwy*_*lyn 1 php ubuntu apache2 fpm php-7.2

这听起来很蠢,但我奇怪的配置似乎迫使一个Apache2的安装尝试时安装php7.2-fpm!(我使用nginx并且我最不想在我的服务器上看到的是 Apache 安装......)

这是场景:我坚持安装 Ubuntu 16.04.6 LTS(对不起,我无法控制它,我只能维护它,用于apt安装我想要的任何东西,但不能将 Ubuntu 升级到现代版本。

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

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

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

可惜的是,它似乎并没有完全消除-尽管它并没有得到在开机启动,也不是从什么叫。但是,如果我尝试将其删除,则会得到以下信息:

# 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]
Run Code Online (Sandbox Code Playgroud)

显然,最后我想的事情就是重新安装的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.
Run Code Online (Sandbox Code Playgroud)

请注意,安装Apache 2 ,尽管我相信它已经安装过一次(几年前)——我从未使用/配置过它,但也许它是预先安装的,我不知道,我只是在这里推测)——即使apt说它不再安装,也可能有一些旧文件在apt删除软件包时“混淆” ......

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

没有尝试允许apt继续安装 Apache 2,并立即delete/purge对 package发出请求apache2。也许这将修复存储库依赖项...

像往常一样,我提前感谢您回答我的初学者问题apt


注意:我显然已经在谷歌上搜索了一个解决方案,并在 SO 上进行了大量搜索。虽然我发现了很多关于安装/删除各种 PHP 版本的示例,主要是使用 Apache,有时也使用nginx,但我还没有遇到针对我的特定情况的解决方案。删除apt时是否有命令行选项可以忽略某些依赖项?

Gwy*_*lyn 5

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

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

所以我基本上做了:

apt-get remove php7.2*

并且,为了很好的衡量,

apt-get purge php7.2*

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

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

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

此外,令我惊讶的是,我发现了一些php7.1可用的旧包!!(我以同样的方式删除了它们)。而且,可悲的是,因为我有一个如此旧的基本 Ubuntu 系统,我需要一些文件php7.0来获得一个可用的 Roundcube(对我的服务器的整体操作至关重要),但我的下一个清理任务将是弄清楚如何获得在不打扰的情况下摆脱它Roundcube......