如何彻底删除 php 库?

如何彻底删除 php 库?

我使用 zsh。当我尝试升级系统时,会弹出一些与 php 相关的软件包,我想删除它们

$ sudo apt-get upgrade              
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  fonts-opensymbol kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools
  libkcmutils4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5
  libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkfile4 libkhtml5
  libkidletime4 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4
  libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkprintutils4
  libkpty4 libkrosscore4 libktexteditor4 libnepomuk4 libnepomukquery4a
  libnepomukutils4 libplasma3 libsolid4 libssl1.0.0 libssl1.0.0:i386
  libthreadweaver4 openssl php-pear php5-cli php5-common php5-curl php5-fpm
  php5-gd php5-intl php5-mysql php5-pspell php5-readline php5-recode php5-snmp
  php5-sqlite php5-tidy php5-xmlrpc php5-xsl
54 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 18.4 MB/20.0 MB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 

我尝试过的:

 sudo apt-get remove php
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package php

▶ sudo apt-get remove php*
zsh: no matches found: php*

sudo apt-get remove php *
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'dropbox' is not installed, so not removed
E: Unable to locate package php
E: Unable to locate package avlfolder
E: Unable to locate package boot-scripts
E: Unable to locate package Calibre Library
E: Unable to locate package Desktop
E: Unable to locate package Documents
E: Unable to locate package Downloads
E: Unable to locate package Dungeons and Dragons Online
E: Unable to locate package Games
E: Unable to locate package java ide
E: Unable to locate package jdownloader
E: Unable to locate package lello
E: Unable to locate package liberam
E: Unable to locate package Music
E: Unable to locate package netbeans-8.0
E: Couldn't find any package by regex 'netbeans-8.0'
E: Unable to locate package netbeans-8.0.desktop
E: Couldn't find any package by regex 'netbeans-8.0.desktop'
E: Unable to locate package Pictures
E: Unable to locate package PlayOnLinux's virtual drives
E: Unable to locate package projects
E: Unable to locate package Public
E: Unable to locate package qtprojects
E: Unable to locate package Savage2
E: Unable to locate package sketchbook
E: Unable to locate package Templates
E: Unable to locate package text.txt
E: Couldn't find any package by regex 'text.txt'
E: Unable to locate package themes
E: Unable to locate package tor-browser-linux64-3.6.1_en-US.tar.xz
E: Couldn't find any package by regex 'tor-browser-linux64-3.6.1_en-US.tar.xz'
E: Unable to locate package Videos
E: Unable to locate package VirtualBox VMs
E: Unable to locate package workspace
E: Unable to locate package xal

我尝试了同样的方法,php5purge没有任何变化。autoremove也没有用

更新

由于我至今还没有答案,所以我跑了

sudo apt-get remove --purge php-pear php5-cli php5-common php5-curl php5-fpmphp5-gd php5-intl php5-mysql php5-pspell php5-readline php5-recode php5-snmpphp5-sqlite php5-tidy php5-xmlrpc php5-xsl
[sudo] password for elie: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package php5-fpmphp5-gd
E: Unable to locate package php5-snmpphp5-sqlite

我一直在寻找更好的解决方案,无论如何我不明白如何安装它们php5-fpmphp5-gdphp5-snmpphp5-sqlite如果未安装它们,是否需要升级。系统如何检测到它们需要升级,但在我尝试删除它们时却没有检测到它们?

答案1

与 bash 不同,zsh 具有不同的 glob/通配符/扩展系统,因此其工作方式不同,php*可能无法按预期工作。因此,您可以
使用 代替:sudo apt-get remove php*

  • 引用:

    sudo apt-get remove "php*"
    
  • 猛击它:

    bash -c "sudo apt-get remove php*"
    

注意:虽然这也是一个坏主意(如前所述sudo apt-get remove php *返回当前工作目录中文件和文件夹的名称(可能是你的主目录)因为*- 但这也意味着如果终端当前工作目录中有任何以 开头的文件php,您在使用 请求内容时可能会遇到问题php*,因为它可能在扩展中包含这些文件名。

另一个 NB php5-fpmphp5-gd并且php5-snmpphp5-sqlite可能是更新的一部分,因为一些正在更新的软件包需要这些软件包作为新的依赖项。你说的php5-fpmphp5-gd和,可能是,,,...php5-snmpphp5-sqlitephp5-fpmphp5-gdphp5-snmpphp5-sqlite(查看您提供的输出,这是因为这些点出现了换行符)你也许应该运行:

sudo apt-get remove --purge php-pear php5-cli php5-common php5-curl php5-fpm php5-gd php5-intl php5-mysql php5-pspell php5-readline php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

答案2

资质是 apt-get 的替代品,它可以轻松使用类似正则表达式的模式匹配多个包名称。

例如,列出所有已安装的包名称包含术语“php”的包:

aptitude search ~iphp

编辑:当使用 zsh shell 时,引用该参数以使其不会在波浪号上中断:

sudo aptitude search "~iphp"

或者卸载它们:

sudo aptitude remove ~iphp

或者

sudo aptitude purge ~iphp

咨询此引用了解有关 aptitude 搜索语法的更多信息。

注意:aptitude 比 apt-get 更强大,因此更容易破坏您的系统。在确认继续之前,请务必检查它计划删除、安装或降级哪些软件包。例如,有时为了满足您卸载软件包的请求,aptitude 需要卸载一堆依赖于它的其他软件包。

如果你想知道是什么原因导致 php 包首先被安装,你可以通过搜索包的反向依赖关系来做一些侦查工作:哪些包取决于软件包。默认情况下会安装推荐的依赖项,但可以覆盖此设置并安装不带“推荐”依赖项的软件包,或者在不删除原始软件包的情况下删除一些“推荐”依赖项。

列出当前安装的依赖于 php5-fpm 的软件包:

aptitude why php5-fpm

这在大多数情况下应该有效,但由于各种原因,有时系统无法判断是什么原因导致包自动安装 - 也许它曾经是某个东西的依赖项,但升级后不再被依赖,等等。

如果您command not found在尝试使用 aptitude 时出现此错误,则需要将其安装到您的系统上,如下所示:

sudo apt-get install aptitude

注意:过去,人们常常警告人们不要交替使用 apt-get 和 aptitude 来实际修改系统,因为它们无法跟踪彼此自动安装了哪些软件包。这不再是一个问题(至少从 3 年前开始),它们都使用相同的方式记录自动安装了哪些软件包。

编辑:修复了 aptitude why 命令

答案3

您可以使用 purge、autoremove 和 remove。我使用 autoremove 作为示例。

$ sudo apt-get autoremove 'php*'

你也可以使用 aptitude

$ sudo aptitude remove 'php*'

检查已安装的软件包

$ sudo apt-cache policy 'php*'

如果所有这些都是 none,那么所有的 php 应用程序都没有安装

如果有已安装的软件包,您可以通过以下方式删除它

$ sudo apt-get autoremove 'packagename'

注意:清除和删除不一样。purge删除包及其配置和remove仅删除包。

相关内容