ฉันต้องทำความสะอาดเซิร์ฟเวอร์ของฉันจากแพ็คเกจ PHP 5.3 (มีมากมาย) เพื่อให้สามารถรวบรวม PHP 5.2 ได้ วิธีที่ง่ายที่สุด / ปลอดภัยที่สุดในการกำจัดพวกเขาทั้งหมดคืออะไร?
ฉันต้องทำความสะอาดเซิร์ฟเวอร์ของฉันจากแพ็คเกจ PHP 5.3 (มีมากมาย) เพื่อให้สามารถรวบรวม PHP 5.2 ได้ วิธีที่ง่ายที่สุด / ปลอดภัยที่สุดในการกำจัดพวกเขาทั้งหมดคืออะไร?
คำตอบ:
สิ่งนี้ควรลบแพ็คเกจใด ๆ ที่มีชื่อขึ้นต้นด้วยphp
และสิ่งใด ๆ ที่เกี่ยวข้อง
sudo apt-get purge 'php*'
php*
จะได้รับมันเป็น regex และแพคเกจที่มีph
ชื่อในนั้นจะถูกลบออก
ผมไม่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
aptitude
ไม่ได้ติดตั้งหรือไม่สามารถติดตั้งบน Ubuntu ได้จะapt-get cache
ค้นหาได้อย่างไร
คุณอาจต้องการกำจัดแพ็คเกจ php * ทั้งหมดจากระบบของคุณ สิ่งที่มี wild-card ควรใช้งานได้
sudo apt-get purge php.*
คุณอาจจะสนใจในวิธีย้อนกลับไปเป็น PHP 5.2สำหรับที่จะไปต่อไป
php*
จะได้รับมันเป็น regex และแพคเกจที่มีph
ชื่อในนั้นจะถูกลบออก
ก่อนอื่นคุณต้องลบ 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
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)
sudo apt-get install aptitude
นอกเหนือจากการล้างข้อมูลที่กล่าวถึงในคำตอบอื่น ๆ หากคุณต้องการแน่ใจว่าทุกอย่างถูกลบไปแล้วคุณน่าจะต้องการเรียกใช้
cd /
sudo find -name "php"
ซึ่งจะแสดงไฟล์ / โฟลเดอร์ที่มีชื่อ php ในนั้น จากนั้นคุณจะต้องการตรวจสอบแต่ละพา ธ ของไฟล์เหล่านี้เช่น:
cd /usr/local/include/php
ls
และลบทิ้งตามความเหมาะสม ระวังอย่าลบสิ่งที่มีความสำคัญต่อกระบวนการอื่นที่คุณต้องใช้งานต่อไปยกเว้นว่าคุณต้องการติดตั้งซ้ำ
ในการลบไดเรกทอรีหรือไฟล์เราใช้rm
ความคิดเห็นกับการ-rf
ตั้งค่าสถานะเพื่อให้ตัวอย่างข้างต้นเราจะพิมพ์:
sudo rm -rf /usr/local/include/php
regex ที่คนสองคนกล่าวว่าไม่ถูกต้อง
แทนที่จะใช้php.*
หรือphp*
หนึ่งควรใช้^php*
นั่นเป็นคำตอบที่ถูกต้อง
ดังนั้นคุณจะใช้:sudo apt-get purge "^php*"
แม้ว่าฉันจะไม่แนะนำให้ใช้วิธีนี้ทำให้มันเป็นไปโดยอัตโนมัติอย่างสูงและฉันขอแนะนำให้คุณใช้sudo apt list --installed | grep php
เพื่อรับรายการแพ็คเกจและใช้ชื่อแพ็คเกจเหล่านี้ที่คุณได้รับจากคำสั่งด้านบนในคำสั่งนี้:
sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO
^php*
และphp*
php.*
จะครอบคลุมกรณีที่php
ปรากฏที่จุดเริ่มต้นของชื่อแพคเกจ ไม่มีเหตุผลที่จะใช้ทั้งสอง^php*
และphp.*
มันควรจะเป็น^php.*
; apt-get ดูเหมือนจะรู้ว่าphp*
เป็น glob ไม่ใช่ regex แต่เมื่อคุณเพิ่ม^
ตัวอักษรมันอาจจะไม่เป็น glob ดังนั้นคุณจะได้รับทุกแพ็คเกจที่เริ่มต้นด้วย "ph"