Como instalar o php5-memcached no Debian 7 com o PHP 5.5?

3

Minhas tentativas de instalar o módulo Memcached do PHP 5 na minha VM do VirtualBox do Debian 7 falharam:

root@testvm:~# apt-get install php5-memcached
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 php5-memcached : Depends: libmemcached11 but it is not installable
E: Unable to correct problems, you have held broken packages.

Eu também não consegui instalá-lo no Gerenciador de Pacotes Synaptic.

Eu acho que o problema pode estar nas informações de fontes ausentes em /etc/apt/sources.list .

ATUALIZAÇÃO:

/etc/apt/sources.list

# deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 NETINST Binary-1 20130615-23:04]/ wheezy main

# deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 NETINST Binary-1 20130615-23:04]/ wheezy main

deb http://ftp.de.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free

# nginx
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

# PHP 5.5
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

ATUALIZAÇÃO:

Eu tentei instalar a dependência ausente manualmente, mas ela também não funciona:

root@devvm:~# apt-get install libmemcached11
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package libmemcached11 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libmemcached11' has no installation candidate

ATUALIZAÇÃO:

root@devvm:~# apt-cache depends php5-memcached libmemcached10
php5-memcached
  Depends: libc6
  Depends: <libmemcached11>
  Depends: zlib1g
  Depends: <phpapi-20121212>
    libapache2-mod-php5filter
    libapache2-mod-php5
    libphp5-embed
    php5-cgi
    php5-cli
    php5-fpm
  Depends: php5-common
 |PreDepends: dpkg
  PreDepends: <dpkg-maintscript-helper>
libmemcached10
  Depends: libc6
  Depends: libgcc1
  Depends: libstdc++6
  PreDepends: multiarch-support
  Conflicts: <libmemcached2>
  Conflicts: <libmemcached3>
  Conflicts: <libmemcached6>
  Conflicts: <libmemcached9>
    
por automatix 21.07.2013 / 18:10

5 respostas

0

Eu tenho instalado. De alguma forma ...

Eu tentei instalar libmemcached11 . Como a instalação com apt-get não funcionou, eu instalei a partir da fonte:

root@devvm:~# wget http://ftp.de.debian.org/debian/pool/main/libm/libmemcached/libmemcached11_1.0.17-2_amd64.deb
...
2013-07-23 22:07:02 (713 KB/s) - 'libmemcached11_1.0.17-2_amd64.deb' saved [112238/112238]

root@devvm:~# dpkg --install libmemcached11_1.0.17-2_amd64.deb 
Selecting previously unselected package libmemcached11:amd64.
(Reading database ... 149070 files and directories currently installed.)
Unpacking libmemcached11:amd64 (from libmemcached11_1.0.17-2_amd64.deb) ...
dpkg: dependency problems prevent configuration of libmemcached11:amd64:
 libmemcached11:amd64 depends on libc6 (>= 2.16); however:
  Version of libc6:amd64 on system is 2.13-38.

dpkg: error processing libmemcached11:amd64 (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 libmemcached11:amd64

Com erros, como você vê. Mas agora libmemcached11 foi instalado.

Desde que eu pensei, que a instalação falhou, eu primeiro decidi remover o pacote baixado (quebrado?), mas abortou o processo, para tentar a instalação php5-memcached com ele (talvez funcionasse ... de alguma forma ...):

root@devvm:~# apt-get remove libmemcached11
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
...
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  libmemcached11
0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
1 not fully installed or removed.
After this operation, 261 kB disk space will be freed.
Do you want to continue [Y/n]? n
Abort.

Então eu tentei instalar o php5-memcached novamente - e desta vez com sucesso:

root@devvm:~# apt-get -t stable install php5-memcached
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
...
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libmemcached11
The following NEW packages will be installed:
  libmemcached11 php5-memcached
0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
Need to get 148 kB of archives.
After this operation, 397 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://packages.dotdeb.org/ wheezy/all libmemcached11 amd64 1.0.16-1 [113 kB]
Get:2 http://packages.dotdeb.org/ wheezy-php55/all php5-memcached amd64 5.5.0-1~dotdeb.1 [34.9 kB]
Fetched 148 kB in 0s (328 kB/s)      
Selecting previously unselected package libmemcached11:amd64.
(Reading database ... 149070 files and directories currently installed.)
Unpacking libmemcached11:amd64 (from .../libmemcached11_1.0.16-1_amd64.deb) ...
Selecting previously unselected package php5-memcached.
Unpacking php5-memcached (from .../php5-memcached_5.5.0-1~dotdeb.1_amd64.deb) ...
Processing triggers for php5-fpm ...
[ ok ] Restarting PHP5 FastCGI Process Manager: php5-fpm.
Setting up libmemcached11:amd64 (1.0.16-1) ...
Setting up php5-memcached (5.5.0-1~dotdeb.1) ...

Creating config file /etc/php5/mods-available/memcached.ini with new version
Processing triggers for php5-fpm ...
[ ok ] Restarting PHP5 FastCGI Process Manager: php5-fpm.
    
por 24.07.2013 / 00:09
6

Para resolver o seu problema, basta adicionar o seguinte ao seu sources.list:

# Wheezy
deb http://ftp.hosteurope.de/mirror/packages.dotdeb.org/ wheezy all
deb-src http://ftp.hosteurope.de/mirror/packages.dotdeb.org/ wheezy all

# Wheezy-php55
deb http://ftp.hosteurope.de/mirror/packages.dotdeb.org/ wheezy-php55 all
deb-src http://ftp.hosteurope.de/mirror/packages.dotdeb.org/ wheezy-php55 all

De fato, a dependência ausente (libmemcached11) está presente na distribuição wheezy do repositório dotdeb .

    
por 13.01.2014 / 14:48
2

Tentando com a tag de lançamento

Como você tem repositórios que não são do Debian, vamos especificar o apt-get de onde você quer o pacote. Tente usar:

sudo apt-get -t stable install php5-memcached

Isso consertará seus problemas de dependência, já que instalará php5-memcached e libmemcached10 dos repositórios estáveis.

A maneira de fixar

Como apt-get -t stable considera o dotdeb.org como a versão estável mais recente do pacote, desabilitando o espelho, apt-get update e instalando o pacote ou usando a magia de fixação. Crie o arquivo /etc/apt/preferences.d/aptpinning com este conteúdo:

Package: php5-memcached
Pin: origin "ftp.de.debian.org"
Pin-Priority: 990

Package: php5-memcached
Pin: origin "packages.dotdeb.org"
Pin-Priority: 500

Isso dará prioridade ao pacote de ftp.de.debian.org sobre o packages.dotdeb.org .

Mais uma vez, misturar repos é uma má idéia , já que esse tipo de situação pode (e já) acontecer. A menos que seja algo crítico, você não deve misturar repos que podem causar dependências quebradas.

Talvez você precise do repositório backport

Se o motivo pelo qual você está usando PHP de outra fonte é sobre "segurança", você poderia estar usando melhor os repositórios wheezy-backport. Basta adicionar deb http://YOURMIRROR.debian.org/debian wheezy-backports main ao seu sources.list , executar apt-get update e instalar o pacote usando apt-get -t wheezy-backports install "package" . Se você tentar isso, reverta qualquer alteração usando os outros métodos.

    
por 23.07.2013 / 10:41
1

Certifique-se de ter

deb http://packages.dotdeb.org wheezy all

nas suas fontes! Veja PHP 5.5.6 , para o Debian 7.0 “Wheezy” . Trabalhou para mim.

    
por 17.01.2014 / 19:43
0

A versão de php5-memcached no Debian Wheezy tem uma dependência em libmemcached10 .

Você pode ver que nesta página, link .

Você está tentando instalar php5-memcached e está lhe dizendo que precisa de libmemcached11 . libmemcached11 não está no Debian Wheezy. Também não está, evidentemente, em nenhuma das outras fontes em sua sources.list, portanto, apt não pode encontrá-lo. Isto é porque você está instalando uma versão mais nova que a do Debian Wheezy, e você está instalando a partir de um repositório não-Debian. Eu não sei porque o repositório não tem as dependências corretas.

Estas entradas na sua sources.list estão causando problemas,

# nginx
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

# PHP 5.5
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

Tem a certeza de que precisa deles, porque eles estão a parar de instalar coisas.

A versão do PHP5 no Debian Wheezy é 5.4.4-14 + deb7u2. Se você precisar de algo mais alto do que isso, então sim, você precisará de outros repositórios, mas também precisará garantir que instalará quaisquer dependências ausentes. O Debian tem tudo a ver com fornecer um ambiente de servidor estável, o que significa que ele está executando versões um pouco mais antigas de software. Se você quer coisas novas,

  • Experimente o Debian Test
  • Experimente o Debian Unstable (não, a menos que você queira os riscos)
  • Use o servidor Ubuntu
  • Entenda como os repositórios funcionam e onde obter dependências

Se você remover os outros repositórios agora, eu não tenho certeza do que o Debian pode fazer, ele pode degradar sua versão do PHP na próxima vez que você tentar e fazer qualquer coisa. Eu realmente acho que você precisa questionar porque você está usando Debian Stable.

Você precisa Debian e PHP5.5 ou você só precisa do PHP5.5? Se você só precisa do PHP5.5, então seria melhor usar uma distribuição que já a tenha, ou compilar sua própria (incluindo todas as dependências e todos os outros pacotes que você quer).

Você não pode instalar php5-memcached com sua configuração atual, porque está perdendo uma dependência.

    
por 21.07.2013 / 21:04