Come rimuovere completamente PHP?


58

Ho bisogno di ripulire il mio server dai pacchetti PHP 5.3 (ce ne sono molti) per poter compilare PHP 5.2. Qual è il metodo più semplice / sicuro per sbarazzarsi di tutti?

Risposte:


88

Questo dovrebbe rimuovere completamente qualsiasi pacchetto con un nome che inizia con phpe qualsiasi cosa ad esso relativa.

sudo apt-get purge 'php*'

OK grazie a entrambi. Ho appena scelto la tua risposta perché a Marco non sembra mancare il Karma :)
corev,

Bene, hai qualche idea sul modo migliore per installare PHP 5.2 adesso?
corev,

6
Questo comando esatto ha appena cancellato TUTTI i pacchetti dal mio sistema. Non consiglio a nessuno di usarlo mai.
Caballero,

13
php*verrà trattato come una regex e ogni pacchetto con phnel suo nome verrà rimosso.
muru,

4
Sono l'unico a pensare che questa non sia davvero un'idea sicura?
Daan,

67

Io non lo consiglio in esecuzione sudo apt-get purge php*.

È stato spaventoso! Fortunatamente, non ho digitato l' -yopzione, perché ha scelto circa centinaia di pacchetti senza phpnel loro nome.

sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

Come funziona:

In primo luogo , un elenco di pacchetti viene generato utilizzando questa serie di comandi: dpkg -l | grep php| awk '{print $2}' |tr "\n" " ".

Suggerimento: è possibile eseguire questa parte del comando nel terminale per vedere quali pacchetti verrebbero rimossi. Dovresti ottenere qualcosa del tipo: libapache2-mod-php5 php5 php5-cli php5-common php5-json

Infine , quando si esegue il comando completo, questo elenco di pacchetti viene passato a sudo apt-get purge, rimuovendo tutti i pacchetti.

Suggerimento: se ti sembra più sicuro, puoi semplicemente eseguirli separatamente e copiare + incollare l'elenco dei pacchetti da rimuovere in questo modo:sudo apt-get purge libapache2-mod-php5 php5 php5-cli php5-common php5-json


3
Questa dovrebbe essere la risposta accettata
Dark Star1

1
Sembra che tu stia suggerendo che una sintassi è cattiva perché troppo ampia, ma ti dispiace spiegare cosa fa il tuo comando, quindi le persone potrebbero essere in grado di giudicare se è appropriato prima di eseguirlo?
Vince

2
Che cosa succede se aptitudenon è installato o non può essere installato su Ubuntu, che ne dici di apt-get cachericerca?
Vicky Dev,

17

Probabilmente vorrai eliminare tutti i pacchetti php * dal tuo sistema. Qualcosa con un jolly dovrebbe funzionare

sudo apt-get purge php.*

Potresti essere interessato a Come tornare a PHP 5.2 per dove andare dopo.


5
php*verrà trattato come una regex e ogni pacchetto con phnel suo nome verrà rimosso.
muru,

3

Innanzitutto, devi rimuovere Apache e tutte le sue dipendenze con:

sudo apt-get purge apache2 php5 libapache2-mod-php5 mysql-server libapache2-mod-auth-mysql php5-mysql phpmyadmin

e poi:

sudo rm -rf /etc/apache2; rm -rf /etc/php5; rm -rf /var/lib/mysql; rm etc/mysql 

In caso di problemi con phpMyAdmin, prova a inserirlo nel Terminale:

dpkg-reconfigure phpmyadmin

*** Nota a coloro che copiano e incollano senza leggere attentamente, questo rimuoverà anche apache, che non è quello che OP ha richiesto
adavea

2
sudo apt-get -y purge libapache2-mod-php5 libapache2-mod-php5filter libexpect-php5 libgv-php5 libow-php5 php5 php5-adodb php5-auth-pam php5-cgi php5-cli php5-common php5-curl php5-dbg php5-enchant php5-exactimage php5-ffmpeg php5-fpm php5-geoip php5-gmp php5-idn php5-imagick php5-imap php5-interbase php5-intl php5-json php5-lasso php5-ldap php5-librdf php5-mapscript php5-memcache php5-memcached php5-mhash php5-midgard2 php5-ming php5-mssql php5-mysql php5-mysqlnd php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-remctl php5-rrd php5-sasl php5-snmp php5-sqlite php5-suhosin php5-svn php5-sybase php5-tidy php5-tokyo-tyrant php5-uuid php5-xcache php5-xdebug php5-xmlrpc php5-xsl

Nel tuo caso, puoi cercare tutti i pacchetti:

sudo aptitude search php5|awk {'print $2'}|grep -v i386|grep -v "^A"|tr "\n"  " "

e quindi eliminarli:

sudo apt-get purge <list of packages found>

aptitudenon è installato sul mio sistema (16.04)
Kleinfreund

Se desideri installare aptitude puoi farlo digitandosudo apt-get install aptitude
Just In Time Berlake il

2

Oltre a qualsiasi eliminazione menzionata nelle altre risposte, se vuoi essere completamente sicuro che tutto sia rimosso, probabilmente vorrai correre

cd /
sudo find -name "php"

Che ti mostrerà file / cartelle con il nome php in essi. Dovrai quindi controllare ciascuno di questi percorsi di file, ad esempio:

cd /usr/local/include/php
ls

E cancellali come è appropriato. Fai attenzione a non eliminare tutto ciò che è critico per un altro processo che devi continuare, a meno che tu non voglia reinstallare anche quello.

Per rimuovere una directory o un file, utilizziamo il rmcommento con il -rfflag, quindi, dato l'esempio sopra, digitare:

sudo rm -rf /usr/local/include/php

1

La regex che le due persone hanno detto non è corretta.
Invece di usare php.*o php*Uno dovrebbe usare^php*

Questa è la risposta giusta.
Quindi useresti:sudo apt-get purge "^php*"

Anche se non consiglio di usare questo metodo perché è altamente automatizzato e ti incoraggio a usare sudo apt list --installed | grep phpper ottenere l'elenco dei pacchetti e usare questi nomi di pacchetti che hai ottenuto dal comando sopra in questo comando:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO


Questo non rimuove libapache2-mod-php, per esempio.
Patrick B.

@PatrickB. Quindi devi usare entrambi ^php*ephp*
AmirHossein,

Ma php.*riguarderà anche i casi in cui phpappare all'inizio del nome del pacchetto. Non c'è motivo di usare entrambi ^php*e php.*inoltre, dovrebbe essere ^php.*; apt-get sembra sapere che php*è un glob, non una regex, ma quando aggiungi il ^personaggio non può essere un glob, quindi otterrai ogni pacchetto che inizia in "ph".
Patrick B.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.