¿Cómo eliminar completamente PHP?

58

Necesito limpiar mi servidor de los paquetes PHP 5.3 (hay muchos) para poder compilar PHP 5.2. ¿Cuál es el método más fácil / seguro para deshacerse de todos?

corev
fuente

Respuestas:

88

Esto debería eliminar completamente cualquier paquete con un nombre que comience phpy cualquier cosa relacionada con él.

sudo apt-get purge 'php*'
RobinJ
fuente
OK gracias a los dos. Acabo elegido su respuesta porque Marco no parecen tener falta de Karma :)
corev
Bien, ¿alguna idea sobre la mejor manera de instalar PHP 5.2 ahora?
corev
66
Este comando exacto acaba de borrar TODOS los paquetes de mi sistema. No le aconsejo a nadie que lo use nunca.
Caballero
13
php*lo tratará como una expresión regular, y siempre phse eliminará el paquete con su nombre.
muru
44
¿Soy el único que piensa que esto no es realmente una idea segura?
Daan
67

Yo no recomiendo correr sudo apt-get purge php*.

¡Eso fue espantoso! Afortunadamente, no escribí la -yopción, porque eligió alrededor de cientos de paquetes sin phpsu nombre.

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

Cómo funciona:

En primer lugar , se genera una lista de paquetes usando esta serie de comandos: dpkg -l | grep php| awk '{print $2}' |tr "\n" " ".

Sugerencia: puede ejecutar esta parte del comando en su terminal para ver qué paquetes se eliminarían. Deberías obtener algo como: libapache2-mod-php5 php5 php5-cli php5-common php5-json

Finalmente , cuando ejecuta el comando completo, esta lista de paquetes se pasa a sudo apt-get purge, eliminando todos los paquetes.

Sugerencia: Si se siente más seguro para usted, podría ejecutarlos fácilmente por separado y copiar y pegar la lista de paquetes para eliminar de la siguiente manera:sudo apt-get purge libapache2-mod-php5 php5 php5-cli php5-common php5-json

bento
fuente
3
Esta debería ser la respuesta aceptada
Dark Star1
1
Parece que estás sugiriendo que una sintaxis es mala porque es demasiado amplia, pero ¿te importaría explicar lo que hace tu comando para que las personas puedan juzgar si es apropiado antes de ejecutarlo?
Vince
2
¿Qué pasa si aptitudeno está instalado o no se puede instalar en Ubuntu, qué tal la apt-get cachebúsqueda?
Vicky Dev
17

Probablemente quiera purgar todos los paquetes php * de su sistema. Algo con un comodín debería funcionar

sudo apt-get purge php.*

Tal vez le interese Cómo revertir a PHP 5.2 para saber dónde ir a continuación.

Marco Ceppi
fuente
55
php*lo tratará como una expresión regular, y siempre phse eliminará el paquete con su nombre.
muru
3

Primero, debe eliminar Apache y todas sus dependencias con:

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

y entonces:

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

Si tiene algún problema con phpMyAdmin, intente ingresar esto en la Terminal:

dpkg-reconfigure phpmyadmin
Leena Patel
fuente
*** Nota para aquellos que copian y pegan sin leer detenidamente, esto también eliminará apache, que no es lo que solicitó OP
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

En su caso, puede buscar todos los paquetes:

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

y luego purgarlos:

sudo apt-get purge <list of packages found>
krantboy
fuente
aptitudeno está instalado en mi sistema (16.04)
kleinfreund
Si desea instalar aptitude, puede hacerlo escribiendosudo apt-get install aptitude
Just In Time Berlake
2

Además de las purgas mencionadas en las otras respuestas, si desea estar completamente seguro de que todo se elimina, es probable que desee ejecutar

cd /
sudo find -name "php"

Que le mostrará archivos / carpetas con el nombre php en ellos. Luego, querrá verificar cada una de estas rutas de archivo, es decir:

cd /usr/local/include/php
ls

Y elimínelos según corresponda. Sin embargo, tenga cuidado de no eliminar nada que sea crítico para otro proceso que necesite seguir ejecutando, a menos que desee tener que volver a instalarlo también.

Para eliminar un directorio o archivo, utilizamos el rmcomentario con la -rfbandera, por lo que, dado el ejemplo anterior, tecleamos:

sudo rm -rf /usr/local/include/php
Justo a tiempo berlake
fuente
1

La expresión regular que dijeron las dos personas es incorrecta.
En lugar de usar php.*o php*Uno debería usar^php*

Esa es la respuesta correcta.
Entonces usarías:sudo apt-get purge "^php*"

Aunque no recomiendo usar este método porque es altamente automatizado y le recomiendo que lo use sudo apt list --installed | grep phppara obtener la lista de paquetes y use estos nombres de paquetes que obtuvo del comando anterior en este comando:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO

AmirHossein
fuente
Esto no elimina libapache2-mod-php, por ejemplo.
Patrick B.
@PatrickB. Entonces tienes que usar ambos ^php*yphp*
AmirHossein
Pero php.*también cubrirá casos donde phpaparece al comienzo del nombre del paquete. No hay razón para usar ambos ^php*y php.*, además, debería serlo ^php.*; apt-get parece saber que php*es un glob, no una expresión regular, pero cuando agrega el ^carácter, no puede ser un glob, por lo que obtendrá todos los paquetes que comienzan en "ph".
Patrick B.