จะลบ PHP อย่างสมบูรณ์ได้อย่างไร


57

ฉันต้องทำความสะอาดเซิร์ฟเวอร์ของฉันจากแพ็คเกจ PHP 5.3 (มีมากมาย) เพื่อให้สามารถรวบรวม PHP 5.2 ได้ วิธีที่ง่ายที่สุด / ปลอดภัยที่สุดในการกำจัดพวกเขาทั้งหมดคืออะไร?

คำตอบ:


86

สิ่งนี้ควรลบแพ็คเกจใด ๆ ที่มีชื่อขึ้นต้นด้วยphpและสิ่งใด ๆ ที่เกี่ยวข้อง

sudo apt-get purge 'php*'

โอเคขอบคุณทั้งคู่ ฉันแค่เลือกคำตอบของคุณเพราะมาร์โกดูเหมือนจะไม่ได้มีน้ำใจ :)
corev

เอาล่ะความคิดใด ๆ เกี่ยวกับวิธีที่ดีที่สุดในการติดตั้ง PHP 5.2 ตอนนี้?
corev

6
คำสั่งที่แน่นอนนี้เพิ่งลบแพ็คเกจทั้งหมดออกจากระบบของฉัน ฉันไม่แนะนำให้ใครใช้มันเลย
Caballero

13
php*จะได้รับมันเป็น regex และแพคเกจที่มีphชื่อในนั้นจะถูกลบออก
muru

4
ฉันเป็นคนเดียวที่คิดว่านี่ไม่ใช่ความคิดที่ปลอดภัยหรือไม่
Daan

67

ผมไม่sudo apt-get purge php*แนะนำให้ใช้

มันน่ากลัวมาก! โชคดีที่ฉันไม่ได้พิมพ์-yตัวเลือกเพราะมันเลือกแพคเกจประมาณร้อยโดยไม่มีphpชื่อ

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

มันทำงานอย่างไร:

ครั้งแรก , dpkg -l | grep php| awk '{print $2}' |tr "\n" " "รายการแพคเกจที่มีการสร้างขึ้นโดยใช้ชุดของคำสั่งนี้:

คำแนะนำ:คุณสามารถเรียกใช้ส่วนนี้ของคำสั่งในเทอร์มินัลของคุณเพื่อดูแพ็คเกจที่จะถูกลบ คุณควรได้รับ: libapache2-mod-php5 php5 php5-cli php5-common php5-json

ในที่สุดเมื่อคุณรันคำสั่งแบบเต็มรายการแพ็กเกจนี้จะถูกส่งผ่านไปยัง sudo apt-get purge ลบแพ็คเกจทั้งหมด

คำแนะนำ:ถ้ารู้สึกปลอดภัยกว่าคุณคุณสามารถแยกมันออกจากกันได้อย่างง่ายดายและคัดลอก + วางรายการแพคเกจเพื่อลบดังนี้:sudo apt-get purge libapache2-mod-php5 php5 php5-cli php5-common php5-json


3
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
Dark Star1

1
ดูเหมือนว่าคุณกำลังแนะนำไวยากรณ์เดียวที่ไม่ดีเพราะกว้างเกินไป แต่คุณต้องการอธิบายสิ่งที่คำสั่งของคุณทำหรือไม่ดังนั้นผู้คนอาจสามารถตัดสินได้ว่าเหมาะสมก่อนเรียกใช้หรือไม่
Vince

2
ถ้าaptitudeไม่ได้ติดตั้งหรือไม่สามารถติดตั้งบน Ubuntu ได้จะapt-get cacheค้นหาได้อย่างไร
Vicky Dev

17

คุณอาจต้องการกำจัดแพ็คเกจ php * ทั้งหมดจากระบบของคุณ สิ่งที่มี wild-card ควรใช้งานได้

sudo apt-get purge php.*

คุณอาจจะสนใจในวิธีย้อนกลับไปเป็น PHP 5.2สำหรับที่จะไปต่อไป


5
php*จะได้รับมันเป็น regex และแพคเกจที่มีphชื่อในนั้นจะถูกลบออก
muru

3

ก่อนอื่นคุณต้องลบ Apache และการพึ่งพาทั้งหมดด้วย:

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

แล้ว:

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

หากคุณมีปัญหาใด ๆ กับ phpMyAdmin ลองป้อนสิ่งนี้ในเทอร์มินัล:

dpkg-reconfigure phpmyadmin

*** หมายเหตุสำหรับผู้ที่คัดลอกโดยไม่ต้องอ่านอย่างระมัดระวังนี่จะเป็นการลบ apache ซึ่งไม่ใช่สิ่งที่ 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

ในกรณีของคุณคุณสามารถค้นหาแพ็คเกจทั้งหมด:

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

แล้วล้างพวกเขา:

sudo apt-get purge <list of packages found>

aptitudeไม่ได้ติดตั้งบนระบบของฉัน (16.04)
kleinfreund

หากคุณต้องการติดตั้งความสามารถคุณสามารถทำได้โดยพิมพ์sudo apt-get install aptitude
Just In Time Berlake

2

นอกเหนือจากการล้างข้อมูลที่กล่าวถึงในคำตอบอื่น ๆ หากคุณต้องการแน่ใจว่าทุกอย่างถูกลบไปแล้วคุณน่าจะต้องการเรียกใช้

cd /
sudo find -name "php"

ซึ่งจะแสดงไฟล์ / โฟลเดอร์ที่มีชื่อ php ในนั้น จากนั้นคุณจะต้องการตรวจสอบแต่ละพา ธ ของไฟล์เหล่านี้เช่น:

cd /usr/local/include/php
ls

และลบทิ้งตามความเหมาะสม ระวังอย่าลบสิ่งที่มีความสำคัญต่อกระบวนการอื่นที่คุณต้องใช้งานต่อไปยกเว้นว่าคุณต้องการติดตั้งซ้ำ

ในการลบไดเรกทอรีหรือไฟล์เราใช้rmความคิดเห็นกับการ-rfตั้งค่าสถานะเพื่อให้ตัวอย่างข้างต้นเราจะพิมพ์:

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

1

regex ที่คนสองคนกล่าวว่าไม่ถูกต้อง
แทนที่จะใช้php.*หรือphp*หนึ่งควรใช้^php*

นั่นเป็นคำตอบที่ถูกต้อง
ดังนั้นคุณจะใช้:sudo apt-get purge "^php*"

แม้ว่าฉันจะไม่แนะนำให้ใช้วิธีนี้ทำให้มันเป็นไปโดยอัตโนมัติอย่างสูงและฉันขอแนะนำให้คุณใช้sudo apt list --installed | grep phpเพื่อรับรายการแพ็คเกจและใช้ชื่อแพ็คเกจเหล่านี้ที่คุณได้รับจากคำสั่งด้านบนในคำสั่งนี้:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO


สิ่งนี้ไม่ได้ลบ libapache2-mod-php เป็นต้น
Patrick B.

@PatrickB ดังนั้นคุณต้องใช้ทั้งสอง^php*และphp*
AmirHossein

แต่php.*จะครอบคลุมกรณีที่phpปรากฏที่จุดเริ่มต้นของชื่อแพคเกจ ไม่มีเหตุผลที่จะใช้ทั้งสอง^php*และphp.*มันควรจะเป็น^php.*; apt-get ดูเหมือนจะรู้ว่าphp*เป็น glob ไม่ใช่ regex แต่เมื่อคุณเพิ่ม^ตัวอักษรมันอาจจะไม่เป็น glob ดังนั้นคุณจะได้รับทุกแพ็คเกจที่เริ่มต้นด้วย "ph"
Patrick B.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.