Ubuntu18.04用ppa:ondrej/php装php7.3-fpm后apt升级如何避免装apache2
解决方案
方法1:标记不需要的包为禁止安装状态
通过apt-mark的hold参数可以让apt在升级时跳过对应包的安装/升级:
- 执行以下命令标记apache2-bin和php8.0核心包为hold状态:
sudo apt-mark hold apache2-bin php8.0-common
标记php8.0-common后,所有php8.0相关的子包都会因为核心依赖无法安装而被自动跳过。
方法2:升级时禁用推荐/建议包安装
默认apt会自动安装软件的推荐依赖包,apache2-bin通常就是作为PHP包的推荐依赖被带入的,升级时添加参数跳过即可:
- 执行带过滤参数的升级命令:
sudo apt upgrade --no-install-recommends --no-install-suggests
方法3:固定PHP7.3版本防止跨版本升级
如果只需要维护PHP7.3的安全更新,不需要升级到更高PHP版本,可以直接锁定所有已安装的PHP7.3相关包的版本:
- 先列出所有已安装的PHP7.3包:
dpkg -l | grep php7.3 | awk '{print $2}'
- 批量标记所有PHP7.3包为hold状态:
sudo apt-mark hold $(dpkg -l | grep php7.3 | awk '{print $2}')
- 后续只需要针对PHP7.3做升级即可,不会触发跨版本升级:
sudo apt install --only-upgrade php7.3*
如果后续需要安装php8.0或者更新apache相关组件,执行sudo apt-mark unhold 对应包名取消hold状态即可正常操作。
问题成因说明
ondrej/php PPA会持续迭代更新不同PHP版本的安装包,其维护的PHP元包依赖默认会指向最新的稳定PHP版本,同时部分PHP扩展包的推荐依赖包含apache2-bin,系统默认开启推荐包安装的情况下,执行全局升级就会触发安装你不需要的这两个软件包。
内容的提问来源于stack exchange,提问作者pythonimus
相关产品推荐
相关产品推荐

