首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将端口php55升级到php56 -与不存在的帮助器冲突

将端口php55升级到php56 -与不存在的帮助器冲突
EN

Stack Overflow用户
提问于 2016-12-27 07:59:28
回答 2查看 239关注 0票数 0

我有一个freebsd系统,我通常在该系统上使用portmaster管理端口。由于php55在2016年7月停产,我使用portmaster -o /usr/ports/lang/php56 php5-5.5.24将php55升级到php56。就像一个护身符。

后来在更新端口时(portmaster -a),我发现像archivers/php55-bz2这样的PHP助手仍然存在。无法安装较新的版本(例如archivers/php56-bz2),因为它们与旧版本冲突,而旧版本无法删除,因为相应的目录不再存在。

如何强制删除旧的php55帮助程序,以便安装新的php56版本?

EN

回答 2

Stack Overflow用户

发布于 2016-12-27 19:07:12

通过pkg_delete删除旧端口不起作用("package not installed"),使用选项-f仅删除DB条目,这仍然不允许安装新的软件包。

我终于成功地用pkg_deinstall卸载了。在使用portmaster成功安装之前,使用make deinstall卸载了安装了一半的新程序包。

票数 0
EN

Stack Overflow用户

发布于 2016-12-27 20:47:15

要从PHP5.5迁移到5.6,您必须手动将portmaster -o应用于所有php55-*包。因此,从理论上讲,这样的命令可能会起作用:

代码语言:javascript
复制
awk \
    -vPATTERN="55" \
    -vREPLACEMENT="56" \
    'BEGIN { while (("pkg query -x %o \"/(mod_)?php" PATTERN "(-|$)\"" | getline name) > 0) { oldname = name; sub(PATTERN, REPLACEMENT, name); print "portmaster -o " name " " oldname } }' | sh

但这在实践中可能并不那么容易:

如果您要从5.X升级到7.X,则需要首先删除某些软件包(如pecl-intl或php56-mysql)

  • pecl-*软件包,可能也需要重新构建(?,如果它们是兼容的-仍然与PHP5和7之间的ABI中断相关)

这就是为什么一些用户喜欢在重新安装新版本之前卸载所有旧的php包(pkg delete -R php55\*)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41337427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档