Puxe o php5 do DotDeb e ignore outros pacotes

2

Eu tenho o Debian squeeze instalado e este é o meu arquivo /etc/apt/sources.list :

# Debian packages for stable
deb http://ftp.lug.ro/debian/ stable main contrib non-free

# Security updates for stable
deb http://security.debian.org/ stable/updates main contrib non-free

# DotDeb - http://www.dotdeb.org/
deb ftp://download.srv.ro/pub/dotdeb/ stable all
deb-src ftp://download.srv.ro/pub/dotdeb stable all

O que estou tentando fazer é configurar um pin para que eu possa instalar apenas o pacote php5 do dotdeb e ignorar todo o restante deste repositório. Eu tentei isso:

# cat /etc/apt/preferences
Package: *
Pin: release o=packages.dotdeb.org
Pin-Priority: 100

Package: php5
Pin: release o=packages.dotdeb.org
Pin-Priority: 900

# apt-cache policy php5
php5:
  Installed: 5.3.3-7+squeeze14
  Candidate: 5.3.17-1~dotdeb.0
  Package pin: 5.3.17-1~dotdeb.0
  Version table:
     5.3.17-1~dotdeb.0 900
        100 ftp://download.srv.ro/pub/dotdeb/ stable/all i386 Packages
 *** 5.3.3-7+squeeze14 900
        500 http://ftp.lug.ro/debian/ stable/main i386 Packages
        500 http://security.debian.org/ stable/updates/main i386 Packages
        100 /var/lib/dpkg/status

mas sem sorte. Talvez eu não entenda muito bem como a fixação funciona.

UPDATE

A execução de apt-get -s upgrade me dá:

# apt-get -s upgrade
<-- output clipped -->
The following packages have been kept back:
  php5
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Além disso, observei que executar apt-get -s install php5 me dá:

# apt-get -s install php5
<-- output clipped -->
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 php5 : Depends: libapache2-mod-php5 (>= 5.3.17-1~dotdeb.0) but 5.3.3-7+squeeze14 is to be installed or
                 libapache2-mod-php5filter (>= 5.3.17-1~dotdeb.0) but it is not going to be installed or
                 php5-cgi (>= 5.3.17-1~dotdeb.0) but 5.3.3-7+squeeze14 is to be installed or
                 php5-fpm (>= 5.3.17-1~dotdeb.0) but it is not going to be installed
        Depends: php5-common (>= 5.3.17-1~dotdeb.0) but 5.3.3-7+squeeze14 is to be installed
E: Broken packages

Portanto, esta pode ser a razão pela qual o pacote não está instalado. Se de fato esse é o problema, como posso fixar vários pacotes de uma só vez? Ou devo alfinetar manualmente cada pacote?

    
por s3v3n 04.10.2012 / 01:30

2 respostas

3

O objetivo disso era ter php com readline support, então eu posso usar php interractive mode com php -a . Eu encontrei um post legal sobre como configurar o repositório apt do Dotdeb no Debian e usou este comando:

PACKAGES=$(command wget "http://packages.dotdeb.org/dists/squeeze/php5/binary-$(command dpkg --print-architecture)" \
--quiet --output-document=- \
| command grep "href=" | command grep -v "h1" | command grep -v "\.\./" \
| command sed -e 's/^[^>]*>\([^_]*\)_.*$//' | command tr "\n" " ")

Para obter todos os pacotes relacionados com php5 e atualizar /etc/apt/preferences para ficar assim:

Package: *
Pin: release o=packages.dotdeb.org
Pin-Priority: 100

Package: libapache2-mod-php5 libapache2-mod-php5filter php-pear php5-cgi php5-cli php5-common php5-curl php5-dbg php5-dev php5-enchant php5-fpm php5-gd php5-gmp php5-imap php5-interbase php5-intl php5-ldap php5-mcrypt php5-mysql php5-odbc php5-pgsql php5-pspell php5-recode php5-snmp php5-sqlite php5-sybase php5-tidy php5-xmlrpc php5-xsl php5
Pin: release o=packages.dotdeb.org
Pin-Priority: 900

E agora o apt-get instalará todos os pacotes necessários:

# apt-get -s install php5
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libapache2-mod-php5 php5-cli php5-common php5-curl
Suggested packages:
  php-pear
The following packages will be upgraded:
  libapache2-mod-php5 php5 php5-cli php5-common php5-curl
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst php5-cli [5.3.3-7+squeeze14] (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386]) []
Inst php5-curl [5.3.3-7+squeeze14] (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386]) []
Inst libapache2-mod-php5 [5.3.3-7+squeeze14] (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386]) []
Inst php5-common [5.3.3-7+squeeze14] (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386])
Inst php5 [5.3.3-7+squeeze14] (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [all])
Conf php5-common (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386])
Conf php5-cli (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386])
Conf libapache2-mod-php5 (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386])
Conf php5-curl (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [i386])
Conf php5 (5.3.17-1~dotdeb.0 packages.dotdeb.org:stable [all])
    
por 04.10.2012 / 02:07
1

Você não pode fixar e / ou instalar somente o pacote php5 . Além de ser um pacote "meta" que instala outros pacotes, o PHP possui vários módulos diferentes que também precisam ser instalados.

Se você quiser definir as coisas dessa maneira, será necessário fixar (no mínimo) libapache2-mod-php5 (ou a versão do filtro) ou php5-cgi ou php5-fpm para o próprio PHP e o php5-common pacote. Quaisquer módulos PHP que você queira também precisarão ser fixados e instalados a partir deste repositório, assim como quaisquer bibliotecas nas quais esses plugins dependam e que não sejam da mesma versão do Debian estável.

    
por 04.10.2012 / 02:05