我有一个freebsd系统,我通常使用portmaster管理端口。由于php55在2016年7月被EOL编辑,我用portmaster -o /usr/ports/lang/php56 php5-5.5.24
将php55升级到php56。工作就像一个魅力。
稍后在更新端口(portmaster -a
)时,我发现有archivers/php55-bz2
之类的PHP助手仍然存在。无法安装较新版本(例如archivers/php56-bz2
),因为它们与旧版本冲突,而旧版本无法删除,因为相应的目录不再存在。
如何强制删除旧的php55助手,以便安装新的php56版本?
答案 0 :(得分:0)
通过pkg_delete
删除旧端口不起作用("未安装软件包"),选项-f
仅删除了DB条目,但仍然不允许安装新包装。
我终于使用pkg_deinstall
成功卸载了。在安装portmaster成功之前,已安装了一半已安装的新软件包make deinstall
。
答案 1 :(得分:0)
要从PHP 5.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
但这在实践中可能并不那么容易:
portmaster pecl
?,如果它们兼容 - 仍然与PHP 5和7之间的ABI中断有关)这就是为什么有些用户喜欢在重新安装新版本之前卸载所有旧的php包(pkg delete -R php55\*
)。