【发布时间】:2020-10-26 18:03:50
【问题描述】:
这听起来可能很愚蠢,但我奇怪的配置似乎在尝试un安装php7.2-fpm 时强制 Apache2 安装! (我使用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]
显然,我想要的最后 件事是再次安装 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没有安装,虽然我相信它已经安装过一次(几年前)——我从未使用/配置过它,但 也许它是预先安装的-已安装,我不知道,我只是在这里推测)- 尽管apt 说它不再安装,可能有一些旧文件'混淆'apt删除包时...
不过,我找不到这个非常奇怪的依赖项,也找不到如何解决它(我尝试了这么多选项......)
我没有试图允许apt 继续安装 Apache 2,并立即对包 apache2 发出 delete/purge 请求。也许这将修复存储库依赖关系...
像往常一样,我提前感谢您回答我关于 apt 的初学者问题!
注意:我显然已经在谷歌上搜索了一个解决方案,并在 SO 上进行了大量搜索。虽然我发现了很多关于安装/删除各种 PHP 版本的示例,主要是使用 Apache,有时也使用 nginx,但我还没有遇到针对我的具体情况的解决方案。 apt 是否有命令行选项可以在删除一个包时忽略某些依赖项?
【问题讨论】:
标签: php ubuntu apache2 php-7.2 fpm