Вопрос или проблема
Мне нужно очистить мой сервер от пакетов PHP 5.3 (их много), чтобы иметь возможность скомпилировать PHP 5.2. Какой самый простой и безопасный способ избавиться от всех них?
Этот метод не рекомендуется использовать без тщательной проверки. Читайте комментарии ниже.
Это должно полностью удалить любой пакет с именем, начинающимся на php
, и все, что с ним связано.
sudo apt-get purge 'php*'
НЕ НАЖИМАЙТЕ y
ДАЖЕ ПОКА НЕ УБЕДИТЕСЬ, что в списке удаляемых пакетов нет других пакетов (кроме связанных с пакетами php), таких как:
php-common* python-openssl* php-curl* ... и множество пакетов
Если такие есть, введите n
, скопируйте список (& уберите нерелевантные пакеты) и удалите их вручную:
sudo apt-get purge php-common* php-curl* ... и множество пакетов
Я не рекомендую запускать 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
Вы, вероятно, захотите удалить все пакеты php* со своей системы. Что-то с подстановочным знаком должно сработать.
sudo apt-get purge php.*
Вас может заинтересовать Как откатиться к PHP 5.2, чтобы знать, куда идти дальше.
Сначала вам нужно удалить 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 <список найденных пакетов>
В дополнение к любым очищениям, упомянутым в других ответах, если вы хотите быть совершенно уверены, что все удалено, вам, вероятно, захочется запустить
cd /
sudo find -name "php"
Что покажет вам файлы/папки с именем php в них. Затем вам нужно будет проверить каждый из этих путей, т.е.:
cd /usr/local/include/php
ls
И удалить их, если это необходимо. Будьте осторожны, чтобы не удалить ничего, что критически важно для другого процесса, который вам нужно продолжать, если вы не хотите потом переустанавливать и его.
Чтобы удалить директорию или файл, мы используем команду rm
с флагом -rf
, так что, учитывая приведенный выше пример, мы вводим:
sudo rm -rf /usr/local/include/php
Регулярное выражение, которое назвали двое людей, неверно.
Вместо использования php.*
или php*
следует использовать ^php*
Это правильный ответ.
Таким образом, вы использовали бы: sudo apt-get purge "^php*"
Хотя я не рекомендую использовать этот метод, потому что он сильно автоматизирован, и я рекомендую вам использовать sudo apt list --installed | grep php
, чтобы получить список пакетов и использовать эти имена пакетов, которые вы получили из предыдущей команды:
sudo apt-get purge PACKAGENAME_ONE PACKAGENAME_TWO
apt list --installed 2>/dev/null | awk -F "https://askubuntu.com/" '{print $1}' | grep '^php' | xargs -r sudo apt purge;
sudo rm -rfv /etc/php/5.3;
Объяснение
apt list --installed 2>/dev/null
– список установленных пакетов с версиями и другой информацией;
apt list --installed 2>/dev/null | awk -F "https://askubuntu.com/" '{print $1}'
– список только имен установленных пакетов;
apt list --installed 2>/dev/null | awk -F "https://askubuntu.com/" '{print $1}' | grep '^php'
– список только имен установленных пакетов, начинающихся на php
;
apt list --installed | awk -F "https://askubuntu.com/" '{print $1}' | grep '^php' | xargs -r sudo apt purge
– передает список имен установленных пакетов, начинающихся на php, как аргументы для команды sudo apt purge
;
sudo rm -rfv /etc/php/5.3
– удалить все конфигурационные файлы для php5.3
;
Если необходимо
sudo rm -rfv /etc/php/5*
– удалить все конфигурационные файлы всех версий php5
(php5.3
, php5.4
, php5.5
и т.д.);
sudo rm -rfv /etc/php
– удалить все конфигурационные файлы всех версий php
(php5
, php7
и т.д.);
Я использую sudo apt remove php8.0*
Это удаляет php и все связанные пакеты – для данной версии – и понижает систему до любой другой существующей, установленной (старой) версии php.
Сначала я запускаю sudo apt list --installed | grep php
, чтобы показать все установленные версии PHP, затем я удаляю указанную конкретную версию PHP (8.1) со всеми связанными зависимостями (расширениями), запустив sudo apt-get purge 'php8.1*'
используйте команду
sudo apt-get purge php.*
и затем используйте
sudo apt autoremove
Ответ или решение
Для полного удаления PHP с вашего сервера, особенно если у вас установлены пакеты версии 5.3, вам потребуется выполнить несколько последовательных шагов. Важно помнить, что удаление пакетов может повлиять на другие приложения и службы, поэтому рекомендуется тщательно проверить каждый этап процесса. Ниже приведена пошаговая инструкция по безопасному удалению PHP:
1. Оценка установленных пакетов
Перед тем как приступать к удалению, мы можем получить список всех установленных пакетов, связанных с PHP. Используйте следующую команду:
apt list --installed | grep php
Это даст вам представление о том, какие именно пакеты установлены, и позволит избежать случайного удаления необходимых компонентов системы.
2. Удаление пакетов PHP
Для полнофункционального удаления пакетов PHP можно использовать команду:
sudo apt-get purge 'php*'
Однако, будьте осторожны! Более безопасный и предпочтительный способ — выполнить команды для получения списка и удаления пакетов поэтапно:
- Сначала соберите список пакетов, связанных с PHP:
dpkg -l | grep php | awk '{print $2}' | tr "\n" " "
-
Просмотрите полученный список. Если в нем присутствуют пакеты, не имеющие отношения к PHP, вы можете удалить только те пакеты, которые действительно хотите избавиться.
-
Удалите пакеты, используя команду:
sudo apt-get purge <пакеты-php>
3. Очистка конфигурационных файлов
Послепурга, может остаться несколько конфигурационных файлов. Чтобы их удалить, используйте:
sudo rm -rf /etc/php*
Эта команда удалит все конфигурационные файлы PHP, включая 5.3 и любые другие версии.
4. Удаление зависимостей
После удаления основного пакета PHP, полезно очистить систему от ненужных зависимостей:
sudo apt autoremove
5. Поиск и удаление оставшихся файлов
В некоторых случаях файлы могут остаться в файлах и каталогах, не относящихся к пакетам управления пакетами. Чтобы найти их, используйте:
sudo find / -name "*php*"
Проверьте найденные пути и удалите не нужные директории или файлы с помощью:
sudo rm -rf /путь/к/каталогу или файлу
6. Заключение
Удаление PHP или его пакетов может повлиять на работу приложений, ожидающих его наличия. Убедитесь, что у вас есть резервные копии и проверенный план восстановления в случае возникновения проблем.
Кроме того, если вы дополнительно хотите перевести систему на другую версию PHP, например PHP 5.2, обратитесь к документации или руководствам по установке этой версии.
Следуя данной инструкции, вы сможете эффективно и безопасно удалить PHP с вашего сервера.