Как полностью удалить PHP?


58

Мне нужно очистить свой сервер от пакетов PHP 5.3 (их много), чтобы можно было скомпилировать PHP 5.2. Какой самый простой / безопасный способ избавиться от них всех?

Ответы:


88

Это должно полностью удалить любой пакет с именем, которое начинается с, 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 * из вашей системы. Что-то с подстановочным знаком должно работать

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, а это не то, о чем просил 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

Если вы хотите установить aptitude, вы можете сделать это, набрав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*следует использовать^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.