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?

corev
sumber

Jawaban:

88

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

sudo apt-get purge 'php*'
RobinJ
sumber
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

Bento
sumber
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.

Marco Ceppi
sumber
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
Leena Patel
sumber
*** 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>
krantboy
sumber
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
Just In Time Berlake
sumber
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

AmirHossein
sumber
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.