Як повністю видалити PHP?


57

Мені потрібно очистити мій сервер від пакетів PHP 5.3 (їх дуже багато), щоб можна було компілювати PHP 5.2. Який найпростіший / найбезпечніший метод позбутися від них усіх?

Відповіді:


86

Це має повністю видалити будь-який пакунок з іменем, що починається з phpі будь-чим, що пов’язане з ним.

sudo apt-get purge 'php*'

Добре, дякую вам обом. Я щойно обрав вашу відповідь, тому що у Марко, здається, не вистачає Карми :)
corev

Гаразд, які ідеї щодо найкращого способу встановлення PHP 5.2 зараз?
corev

6
Ця точна команда просто витерла ВСІ пакунки з моєї системи. Я не раджу нікому використовувати його ніколи.
Кабалеро

13
php*буде розглядатися як регулярний вираз, і коли-небудь пакет з phйого іменем буде видалений.
муру

4
Я єдиний, хто думає, що це насправді не безпечна ідея?
Даан

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
Здається, що ви пропонуєте один синтаксис - це погано, оскільки занадто широкий, але ви не проти пояснити, що робить ваша команда, щоб люди могли мати можливість судити, чи підходить це перед тим, як запустити його?
Вінс

2
Що робити, якщо aptitudeвін не встановлений або не може бути встановлений на Ubuntu, як щодо apt-get cacheпошуку?
Вікі Дев

17

Ви, ймовірно, захочете очистити всі пакети php * зі своєї системи. Щось із wild-card повинно працювати

sudo apt-get purge php.*

Можливо, вас зацікавить Як відкатати до PHP 5.2, куди йти далі.


5
php*буде розглядатися як регулярний вираз, і коли-небудь пакет з phйого іменем буде видалений.
муру

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, чого не
вимагає

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

Зворотне вираження двох людей сказало невірно.
Замість використання php.*або php*One слід використовувати^php*

Це правильна відповідь.
Отже, ви б використовували:sudo apt-get purge "^php*"

Хоча я не рекомендую використовувати цей метод, це спричиняє його автоматизацію, і я закликаю вас використовувати sudo apt list --installed | grep phpсписок пакетів і використовувати ці назви пакетів, які ви отримали з вищевказаної команди в цій команді:

sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO


Наприклад, це не видаляє libapache2-mod-php.
Патрік Б.

@PatrickB. Отже, ви повинні використовувати і те, ^php*іphp*
AmirHossein

Але php.*також буде охоплюватися випадки, коли phpз'являється на початку назви пакета. Немає ніяких причин використовувати і те, ^php*і php.*теж повинно бути ^php.*; apt-get, здається, знає, що php*це глобус, а не регулярний вираз, але коли ви додасте ^символ, він не може бути глобусом, тому ви отримаєте кожен пакунок, який починається з "ph".
Патрік Б.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.