我有一个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版本?
发布于 2016-12-27 19:07:12
通过pkg_delete删除旧端口不起作用("package not installed"),使用选项-f仅删除DB条目,这仍然不允许安装新的软件包。
我终于成功地用pkg_deinstall卸载了。在使用portmaster成功安装之前,使用make deinstall卸载了安装了一半的新程序包。
发布于 2016-12-27 20:47:15
要从PHP5.5迁移到5.6,您必须手动将portmaster -o应用于所有php55-*包。因此,从理论上讲,这样的命令可能会起作用:
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)
这就是为什么一些用户喜欢在重新安装新版本之前卸载所有旧的php包(pkg delete -R php55\*)。
https://stackoverflow.com/questions/41337427
复制相似问题