Comment faire pour supprimer complètement PHP?

58

Je dois nettoyer mon serveur des paquets PHP 5.3 (il y en a beaucoup) pour pouvoir compiler PHP 5.2. Quelle est la méthode la plus facile / la plus sûre pour se débarrasser de tous?

corev
la source

Réponses:

88

Cela devrait supprimer complètement tous les paquets dont le nom commence par phpet tout ce qui y est associé.

sudo apt-get purge 'php*'
RobinJ
la source
OK merci à vous deux. Je viens de choisir votre réponse car Marco ne semble pas manquer de Karma :)
corev
D'accord, des idées sur la meilleure façon d'installer PHP 5.2 maintenant?
Corev
6
Cette commande exacte vient d'effacer TOUS les paquets de mon système. Je ne conseille à personne de l'utiliser jamais.
Caballero
13
php*le traitera comme une regex, et tous les paquets phen son nom seront supprimés.
Muru
4
Suis-je le seul à penser que ce n'est pas vraiment une idée sûre?
Daan
67

Je ne recommande pas de courir sudo apt-get purge php*.

C'était effrayant! Heureusement, je n'ai pas tapé l' -yoption, car elle a choisi une centaine de paquets sans phpleur nom.

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

Comment ça fonctionne:

Tout d' abord , une liste de paquets est générée à l' aide de cette série de commandes: dpkg -l | grep php| awk '{print $2}' |tr "\n" " ".

Astuce: Vous pouvez exécuter cette partie de la commande dans votre terminal pour voir quels paquets seraient supprimés. Vous devriez obtenir quelque chose comme: libapache2-mod-php5 php5 php5-cli php5-common php5-json

Enfin , lorsque vous exécutez la commande complète, cette liste de packages est transmise à sudo apt-get purge, ce qui supprime tous les packages.

Astuce: Si cela vous semble plus sûr, vous pouvez tout aussi facilement les exécuter séparément et copier / coller la liste des paquets à supprimer de la manière suivante:sudo apt-get purge libapache2-mod-php5 php5 php5-cli php5-common php5-json

bento
la source
3
Cela devrait être la réponse acceptée
Dark Star1
1
On dirait que vous suggérez qu'une syntaxe est mauvaise parce que trop large, mais est-ce que cela vous dérange d'expliquer ce que fait votre commande, afin que les gens puissent juger si c'est approprié avant de l'exécuter?
Vince
2
Que faire si aptituden'est pas installé ou ne peut pas être installé sur Ubuntu, qu'en est-il de la apt-get cacherecherche?
Vicky Dev
17

Vous voudrez probablement purger tous les paquets php * de votre système. Quelque chose avec un joker devrait fonctionner

sudo apt-get purge php.*

Vous pouvez être intéressé par Comment rollback à PHP 5.2 pour savoir où aller.

Marco Ceppi
la source
5
php*le traitera comme une regex, et tous les paquets phen son nom seront supprimés.
muru
3

Tout d'abord, vous devez supprimer Apache et toutes ses dépendances avec:

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

puis:

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

Si vous avez des problèmes avec phpMyAdmin, essayez d'entrer ceci dans le terminal:

dpkg-reconfigure phpmyadmin
Leena Patel
la source
*** Remarque pour ceux qui copient-collent sans lire attentivement, cela supprimera également Apache, ce qui n'est pas ce que demande 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

Dans votre cas, vous pouvez rechercher tous les packages:

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

puis les purger:

sudo apt-get purge <list of packages found>
Krantboy
la source
aptituden'est pas installé sur mon système (16.04)
kleinfreund
Si vous souhaitez installer aptitude, vous pouvez le faire en tapantsudo apt-get install aptitude
Just In Time Berlake
2

En plus des purges mentionnées dans les autres réponses, si vous voulez être absolument sûr que tout est supprimé, vous voudrez probablement exécuter

cd /
sudo find -name "php"

Qui va vous montrer des fichiers / dossiers avec le nom php en eux. Vous allez ensuite vouloir vérifier chacun de ces chemins de fichiers, à savoir:

cd /usr/local/include/php
ls

Et supprimez-les comme il convient. Veillez à ne pas supprimer tout élément essentiel à un autre processus que vous devez continuer à exécuter, sauf si vous souhaitez également le réinstaller.

Pour supprimer un répertoire ou un fichier, nous utilisons le rmcommentaire avec l' -rfindicateur. Ainsi, à l'aide de l' exemple ci-dessus, nous tapons:

sudo rm -rf /usr/local/include/php
Juste à temps Berlake
la source
1

La regex que les deux personnes ont dite est incorrecte.
Au lieu d'utiliser php.*ou php*On devrait utiliser^php*

Thats la bonne réponse.
Donc, vous utiliseriez:sudo apt-get purge "^php*"

Bien que je ne recommande pas d'utiliser cette méthode car elle est hautement automatisée, je vous encourage à utiliser cette commande sudo apt list --installed | grep phppour obtenir la liste des paquets et utiliser les noms de paquets que vous avez obtenus à partir de la commande ci-dessus:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO

AmirHossein
la source
Cela ne supprime pas libapache2-mod-php, par exemple.
Patrick B.
@ PatrickB. Donc, vous devez utiliser les deux ^php*etphp*
AmirHossein
Mais php.*couvrira également les cas où phpapparaît au début du nom du paquet. Il n'y a aucune raison d'utiliser les deux ^php*et php.*aussi, cela devrait être ^php.*; apt-get semble savoir que php*c'est un glob, pas une regex, mais lorsque vous ajoutez le ^caractère, il ne peut pas s'agir d'un glob, vous obtiendrez ainsi tous les paquets commençant par "ph".
Patrick B.