it-roy-ru.com

Невозможно удалить php-memcache с помощью терминала

Я удалил php5 с моего компьютера с помощью команды

Sudo apt-get -y purge php.*

выполнение этой команды покажет мне это сообщение в терминале:

Errors were encountered while processing: php5-memcache php5-memcached

Поэтому я попытался удалить memcache:

Sudo apt-get remove php-memcache

Он показал мне сообщение, что не может найти пакет memcache:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package php-memcache

а затем memcached:

apt-get remove php5-memcached

Это выдает мне информацию об отсутствующих зависимостях в php:

The following packages have unmet dependencies.
php5-memcache : Depends: php5-common (>= 4.3.11) but it is not going to be installed  
      Depends: php-pear (>= 1.4.0~b1) but it is not going to be installed
      Depends: phpapi-20121212
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Бег

apt-get -f install

выдает мне ошибки об удалении memcache, опять же.

Как я правильно понимаю, я сделал ошибку, что я не удалил memcache до того, как я удалил php5? Что я могу сделать сейчас? Нужно ли снова устанавливать php? Когда я пытаюсь установить отсутствующие зависимости, я получаю сообщение о других отсутствующих пакетах. Не должны ли отсутствующие пакеты автоматически добавляться/удаляться при использовании "apt-get"?

Путем поиска в Google я обнаружил, что проблема может заключаться в использовании неправильных репозиториев, которые не подходят для моей системы. Как я могу определить, какие репозитории подходят моей системе для установки/удаления соответствующих пакетов для удаления memcache? спасибо за любую помощь

В мою систему добавлены такие репозитории php: http://ppa.launchpad.net/ondrej/php5/ubunthttp://ppa.launchpad.net/ondrej/php5/ ubunthttp://ppa.launchpad.net/ondrej/php-7.0/ubunthttp://ppa.launchpad.net/ondrej/php-7.0/ubunt

Я попытался удалить memcache с помощью dpkg в соответствии с @oerdnj, но у меня все еще есть некоторые ошибки:

[email protected] ~ $ Sudo dpkg --purge php5-memcache
(Reading database ... 275094 files and directories currently   installed.)
Removing php5-memcache (3.0.8-4build1) ...
/var/lib/dpkg/info/php5-memcache.prerm: 9: /var/lib/dpkg/info/php5-  memcache.prerm: php5dismod: not found
dpkg: error processing package php5-memcache (--purge):
subprocess installed pre-removal script returned error exit status 127
Errors were encountered while processing:
php5-memcache

Я также пробовал решение из потока Как удалить/установить пакет, который не был полностью установлен? , но он показывает те же ошибки:

[email protected] ~ $ Sudo apt-get install --reinstall dpkg
[Sudo] password for tomas: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies.
php5-memcache : Depends: php5-common (>= 4.3.11) but it is not going      to be installed
Depends: php-pear (>= 1.4.0~b1) but it is not going to be installed
             Depends: phpapi-20121212
php5-memcached : Depends: libmemcached10 but it is not going to be installed
              Depends: php5-common (>= 5.2.0) but it is not going to be installed
              Depends: php5-common (< 6.0.0) but it is not going to be installed
              Depends: php-pear (>= 1.4.0~b1) but it is not going to be installed
              Depends: phpapi-20121212
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
1
tomas.teicher

Если ваша система находится в состоянии, когда apt-get в основном непригоден для использования, вы можете попробовать использовать dpkg для удаления уязвимого пакета, в этом случае попробуйте:

Sudo dpkg --purge php5-memcache

dpkg - это низкоуровневый инструмент для манипулирования пакетами, и не так сложно привести все пакеты в согласованное состояние.

Поскольку php5dismod отсутствует в вашей системе, я бы просто рекомендовал удалить файлы /var/lib/dpkg/info/php5-memcache.prerm и /var/lib/dpkg/info/php5-memcache.postrm и очистить /etc/php5/ вручную для отслеживания конфигурации memcache (основной memcache.ini, связанный с 20-memcache.ini, можно найти там).

Примечание: пожалуйста, не пробуйте другие случайные вещи из Интернета, вы можете сломать систему еще больше, если вы не до конца понимаете, что делаете.

1
oerdnj

У меня была эта проблема после обновления до Ubuntu 16.04 от 14.04.

Если вы откроете var/lib/dpkg/info/php5-memcached.prerm, вы увидите это содержимое:

#!/bin/sh

set -e

dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/memcached.ini \
    /etc/php5/mods-available/memcached.ini 2.0.1-3 -- "[email protected]"
rm -f /etc/php5/conf.d/memcached.ini

[ "$1" = "remove" ] && php5dismod memcached

exit 0

Самый простой способ исправить ошибку - просто закомментировать строку php5dismod:

#!/bin/sh

set -e

dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/memcached.ini \
    /etc/php5/mods-available/memcached.ini 2.0.1-3 -- "[email protected]"
rm -f /etc/php5/conf.d/memcached.ini

# !!!!!!!!!!
# Do _not_ do anything with php5dismod
# [ "$1" = "remove" ] && php5dismod memcached
# !!!!!!!!!!

exit 0

После этого вы можете снова запустить Sudo apt-get -f install, и он удалит его без проблем.

0
h2ooooooo