Bagaimana cara menghapus PHP sepenuhnya?


58

Saya perlu membersihkan server saya dari paket PHP 5.3 (ada banyak dari mereka) agar dapat mengkompilasi PHP 5.2. Apa metode termudah / teraman untuk menyingkirkan semuanya?

Jawaban:


88

Ini harus sepenuhnya menghapus paket apa pun dengan nama yang dimulai phpdan apa pun yang terkait dengannya.

sudo apt-get purge 'php*'

Oke terima kasih kalian berdua. Saya baru saja memilih jawaban Anda karena Marco sepertinya tidak kekurangan Karma :)
corev

Baiklah, ada ide tentang cara terbaik untuk menginstal PHP 5.2 sekarang?
corev

6
Perintah yang tepat ini hanya menghapus SEMUA paket dari sistem saya. Saya tidak menyarankan siapa pun untuk menggunakannya.
Caballero

13
php*akan membuatnya diperlakukan sebagai regex, dan paket dengan phnamanya akan dihapus.
muru

4
Apakah saya satu-satunya yang berpikir ini bukan ide yang aman?
Daan

67

Saya tidak merekomendasikan berlari sudo apt-get purge php*.

Itu menakutkan! Untungnya, saya tidak mengetik -yopsi, karena memilih sekitar ratusan paket tanpa phpnama mereka.

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

Bagaimana itu bekerja:

Pertama , daftar paket yang dihasilkan menggunakan seri ini perintah: dpkg -l | grep php| awk '{print $2}' |tr "\n" " ".

Petunjuk: Anda dapat menjalankan bagian perintah ini di terminal Anda untuk melihat paket apa yang akan dihapus. Anda harus mendapatkan sesuatu seperti: libapache2-mod-php5 php5 php5-cli php5-common php5-json

Akhirnya , ketika Anda menjalankan perintah penuh, daftar paket ini akan diteruskan ke sudo apt-get purge, menghapus semua paket.

Petunjuk: Jika terasa lebih aman bagi Anda, Anda dapat dengan mudah menjalankannya secara terpisah, dan menyalin + menempel daftar paket yang ingin dihapus seperti:sudo apt-get purge libapache2-mod-php5 php5 php5-cli php5-common php5-json


3
Ini seharusnya jawaban yang diterima
Dark Star1

1
Kedengarannya Anda menyarankan satu sintaks buruk karena terlalu lebar tetapi apakah Anda keberatan menjelaskan apa yang dilakukan perintah Anda, sehingga orang mungkin dapat menilai apakah itu tepat sebelum menjalankannya?
Vince

2
Bagaimana jika aptitudetidak diinstal atau tidak dapat diinstal pada Ubuntu, bagaimana dengan apt-get cachepencarian?
Vicky Dev

17

Anda mungkin ingin membersihkan semua paket php * dari sistem Anda. Sesuatu dengan wildcard seharusnya berfungsi

sudo apt-get purge php.*

Anda mungkin tertarik dengan Cara mengembalikan ke PHP 5.2 untuk tujuan selanjutnya.


5
php*akan membuatnya diperlakukan sebagai regex, dan paket dengan phnamanya akan dihapus.
muru

3

Pertama, Anda harus menghapus Apache dan semua dependensinya dengan:

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

lalu:

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

Jika Anda memiliki masalah dengan phpMyAdmin, coba masukkan ini ke Terminal:

dpkg-reconfigure phpmyadmin

*** Catatan untuk mereka yang menyalin-menempel tanpa membaca dengan seksama, ini juga akan menghapus apache, yang bukan yang diminta 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

Dalam kasus Anda, Anda dapat mencari semua paket:

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

dan kemudian bersihkan mereka:

sudo apt-get purge <list of packages found>

aptitudetidak diinstal pada sistem saya (16.04)
kleinfreund

Jika Anda ingin memasang aptitude, Anda dapat melakukannya dengan mengetiksudo apt-get install aptitude
Just In Time Berlake

2

Selain pembersihan yang disebutkan dalam jawaban lain, jika Anda ingin sepenuhnya yakin semuanya dihapus, Anda cenderung ingin menjalankan

cd /
sudo find -name "php"

Yang akan menampilkan file / folder dengan nama php di dalamnya. Anda kemudian akan ingin memeriksa setiap jalur file ini, yaitu:

cd /usr/local/include/php
ls

Dan hapus sesuai keinginan. Berhati-hatilah untuk tidak menghapus apa pun yang penting untuk proses lain yang perlu Anda jalankan, kecuali Anda ingin menginstalnya kembali.

Untuk menghapus direktori, atau file, kami menggunakan rmkomentar dengan -rfflag, jadi dengan memberikan contoh di atas, kami akan mengetik:

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

1

Regex yang dikatakan kedua orang itu salah.
Alih-alih menggunakan php.*atau php*Seseorang harus menggunakan^php*

Itulah jawaban yang tepat.
Jadi, Anda akan menggunakan:sudo apt-get purge "^php*"

Meskipun saya tidak merekomendasikan menggunakan metode ini karena ini sangat otomatis dan saya mendorong Anda untuk menggunakan sudo apt list --installed | grep phpuntuk mendapatkan daftar paket dan menggunakan nama paket ini yang Anda dapatkan dari perintah di atas dalam perintah ini:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO


Sebagai contoh, ini tidak menghapus libapache2-mod-php.
Patrick B.

@ PatrickB. Jadi, Anda harus menggunakan keduanya ^php*danphp*
AmirHossein

Tetapi php.*juga akan mencakup kasus-kasus di mana phpmuncul di awal nama paket. Tidak ada alasan untuk menggunakan keduanya ^php*dan php.*juga, seharusnya ^php.*; apt-get sepertinya tahu itu php*adalah bola, bukan sebuah regex, tetapi ketika Anda menambahkan ^karakter itu tidak mungkin menjadi bola, jadi Anda akan mendapatkan setiap paket yang dimulai dengan "ph."
Patrick B.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.