从DotDeb拉php5并忽略其他包

我安装了Debian squeeze,这是我的/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 

我想要做的是设置一个引脚,这样我就可以只安装dotdeb的php5软件包,并忽略来自这个软件库的其他所有东西。 我试过这个:

 # 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 

但没有运气。 也许我不太清楚钉住是如何工作的。

UPDATE

运行apt-get -s upgrade给了我:

 # 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. 

另外,我只注意到运行apt-get -s install php5给了我:

 # 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 

所以这可能是没有安装软件包的原因。 如果确实是这个问题,我怎么能一次钉多个包? 或者我应该手动每个包装?

整个这一点是有phpreadline支持,所以我可以使用php交互模式与php -a 。 我发现了一篇关于如何在Debian上设置Dotdeb apt版本库的好post,并使用了这个命令:

 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/^[^>]*>\([^_]*\)_.*$/\1/' | command tr "\n" " ") 

要获取所有php5相关的软件包并更新/etc/apt/preferences看起来像这样:

 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 

现在apt-get会安装所有需要的软件包:

 # 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]) 

您不能固定和/或安装php5软件包。 除了安装其他软件包的“meta”软件包外,PHP还有许多不同的模块需要安装。

如果你想以这种方式固定事情,你需要(至less)针对PHP本身, libapache2-mod-php5 (或filter版本)或php5-cgiphp5-fpm ,以及php5-common软件包。 任何你想要的PHP模块都需要从这个版本库固定和安装,这些插件所依赖的库与Debian stable版本不一样。