Wie entferne ich PHP vollständig?

57

Ich muss meinen Server von PHP 5.3-Paketen bereinigen (es gibt viele davon), um PHP 5.2 kompilieren zu können. Was ist die einfachste / sicherste Methode, um sie alle loszuwerden?

corev
quelle

Antworten:

86

Dadurch sollten alle Pakete, deren Name mit "" beginnt, phpund alle damit zusammenhängenden Elemente vollständig entfernt werden .

sudo apt-get purge 'php*'
RobinJ
quelle
OK, danke euch beiden. Ich habe gerade deine Antwort gewählt, weil Marco keinen Mangel an Karma zu haben scheint :)
corev
Irgendwelche Ideen, wie Sie PHP 5.2 jetzt am besten installieren können?
Corev
6
Dieser genaue Befehl löschte einfach ALLE Pakete von meinem System. Ich rate niemandem, es jemals zu benutzen.
Caballero
13
php*wird als regulärer Ausdruck behandelt und jedes Paket mit phdem Namen wird entfernt.
muru
4
Bin ich der einzige, der denkt, dass dies keine wirklich sichere Idee ist?
Daan
67

Ich empfehle nicht zu laufen sudo apt-get purge php*.

Das war erschreckend! Glücklicherweise habe ich die -yOption nicht eingegeben, da ungefähr hundert Pakete ohne phpNamen ausgewählt wurden.

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

Wie es funktioniert:

Zunächst wird eine Liste der Pakete erzeugt wird diese Reihe von Befehlen: dpkg -l | grep php| awk '{print $2}' |tr "\n" " ".

Tipp: Sie können diesen Teil des Befehls in Ihrem Terminal ausführen, um zu sehen, welche Pakete entfernt werden. Sie sollten etwas bekommen wie: libapache2-mod-php5 php5 php5-cli php5-common php5-json

Schließlich , wenn Sie den vollständigen Befehl, diese Liste der Pakete ausgeführt wird , um sudo apt-get purge bestanden, alle Pakete zu entfernen.

Tipp: Wenn es für Sie sicherer ist, können Sie es genauso einfach separat ausführen und die Liste der zu entfernenden Pakete wie folgt kopieren und einfügen:sudo apt-get purge libapache2-mod-php5 php5 php5-cli php5-common php5-json

bento
quelle
3
Dies sollte die akzeptierte Antwort sein
Dark Star1
1
Klingt so, als würden Sie vorschlagen, dass eine Syntax schlecht ist, weil sie zu breit ist. Macht es Ihnen jedoch etwas aus, zu erklären, was Ihr Befehl bewirkt, damit die Benutzer möglicherweise beurteilen können, ob dies angemessen ist, bevor sie ihn ausführen?
Vince
2
Was ist, wenn aptitudees auf Ubuntu nicht installiert ist oder nicht installiert werden kann apt-get cache?
Vicky Dev
17

Sie werden wahrscheinlich alle PHP * -Pakete von Ihrem System entfernen wollen. Etwas mit einem Platzhalter sollte funktionieren

sudo apt-get purge php.*

Vielleicht interessiert Sie auch, wie Sie ein Rollback auf PHP 5.2 durchführen, um zu erfahren, wo Sie als Nächstes vorgehen müssen.

Marco Ceppi
quelle
5
php*wird als regulärer Ausdruck behandelt und jedes Paket mit phdem Namen wird entfernt.
Muru
3

Zuerst müssen Sie Apache und all seine Abhängigkeiten entfernen mit:

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

und dann:

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

Wenn Sie Probleme mit phpMyAdmin haben, versuchen Sie Folgendes in das Terminal einzugeben:

dpkg-reconfigure phpmyadmin
Leena Patel
quelle
*** Hinweis für diejenigen, die kopieren und einfügen, ohne sorgfältig zu lesen, dies wird auch Apache entfernen, was nicht das ist, wonach OP gefragt hat
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

In Ihrem Fall könnten Sie nach allen Paketen suchen:

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

und dann lösche sie:

sudo apt-get purge <list of packages found>
Krantboy
quelle
aptitudeist nicht auf meinem System installiert (16.04)
kleinfreund
Wenn Sie aptitude installieren möchten, können Sie dies tun, indem Siesudo apt-get install aptitude
Just In Time Berlake,
2

Zusätzlich zu den in den anderen Antworten erwähnten Löschvorgängen möchten Sie wahrscheinlich ausgeführt werden, wenn Sie absolut sicher sein möchten, dass alles entfernt wurde

cd /
sudo find -name "php"

Welches zeigt Ihnen Dateien / Ordner mit dem Namen PHP in ihnen. Sie werden dann jeden dieser Dateipfade überprüfen wollen, dh:

cd /usr/local/include/php
ls

Und löschen Sie sie nach Bedarf. Achten Sie jedoch darauf, dass Sie nichts löschen, was für einen anderen Prozess wichtig ist, den Sie weiterhin ausführen müssen, es sei denn, Sie möchten dies ebenfalls neu installieren.

Um ein Verzeichnis oder eine Datei zu entfernen, verwenden wir den rmKommentar mit dem -rfFlag. In dem obigen Beispiel würden wir also Folgendes eingeben:

sudo rm -rf /usr/local/include/php
Just In Time Berlake
quelle
1

Die Regex, die die beiden Leute sagten, ist falsch.
Anstelle von php.*oder php*sollte man verwenden^php*

Das ist die richtige Antwort.
Sie würden also Folgendes verwenden:sudo apt-get purge "^php*"

Obwohl ich nicht empfehle, diese Methode zu verwenden, ist sie in hohem Maße automatisiert, und ich empfehle Ihnen, diese Methode zu verwenden sudo apt list --installed | grep php, um die Liste der Pakete abzurufen und die folgenden Paketnamen zu verwenden, die Sie mit dem obigen Befehl in diesem Befehl erhalten haben:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO

AmirHossein
quelle
Dadurch wird beispielsweise libapache2-mod-php nicht entfernt.
Patrick B.
@PatrickB. Sie müssen also beide ^php*undphp*
AmirHossein
Es php.*werden jedoch auch Fälle behandelt, in denen phpam Anfang des Paketnamens angezeigt wird. Es gibt keinen Grund, beides zu verwenden, ^php*und php.*es sollte auch so sein ^php.*. apt-get scheint zu wissen, dass php*es sich um einen Glob handelt, nicht um einen regulären Ausdruck. Wenn Sie jedoch den ^Buchstaben hinzufügen , kann es sich möglicherweise nicht um einen Glob handeln, sodass Sie jedes Paket erhalten, das mit "ph" beginnt.
Patrick B.