FreeBSD pkg_add:警告:软件包php5-pcre-5.2.6_2需要php5-5.2.8,但已安装php5-pcre-5.2.6_2
问题描述:我试图使用portupgrade命令将PHP版本从5.2.6升级到5.2.8。
但是报错:
*** Error code 1
Stop in /usr/ports/lang/php5.
*** Error code 1Stop in /usr/ports/lang/php5.
*** Error code 1Stop in /usr/ports/lang/php5.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade.42275.0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=php5-pcre-5.2.6_2 UPGRADE_PORT_VER=5.2.6_2 make reinstall
—> Restoring the old version
pkg_add: warning: package ‘php5-pcre-5.2.6_2’ requires ‘php5-5.2.8’, but ‘php5-pcre-5.2.6_2’ is installed
** Fix the installation problem and try again.
[Updating the pkgdb in /var/db/pkg … – 62 packages found (-0 +1) . done] ** Listing the failed packages (-:ignored / *:skipped / !:failed)
! lang/php5 (php5-pcre-5.2.6_2) (install error)
如何解决此问题并升级php5-pcre?
解决方法:这是众所周知的问题,可以很容易地解决。
从php 5.2.7开始,pcre扩展与核心php5软件包一起分发,不再作为独立模块。
请按照以下步骤更新安装:
# pkg_delete -f php5-pcre-5.2.6 # pkgdb -F # portupgrade php5-pcre
如果使用的是portmaster,请执行:
# pkg_delete -f php5-pcre\* # portmaster php5\*
如果使用的是pecl端口,则可能需要对其进行强制更新,请执行:
# portupgrade -f pecl\*
或者
# portmaster pecl\*
如果您有pecl哈希,json和/或zip扩展名,则需要用捆绑的php5替换它们,请输入
# portupgrade -o archivers/php5-zip archivers/pecl-zip # portupgrade -o devel/php5-json devel/pecl-json # portupgrade -o security/php5-hash security/pecl-hash
或者
# portmaster -o archivers/php5-zip archivers/pecl-zip # portmaster -o devel/php5-json devel/pecl-json # portmaster -o security/php5-hash security/pecl-hash
最后,在本地构建您的INDEX,并在php更新提交后尝试构建它,您需要在更新lang/php5之后重新构建它:
# cd /usr/ports # make index