让我们进行对比
sudo port install [port_name]
和
sudo port -f install [port_name]
在这种情况下,标志-f
究竟做了什么?为什么我们每次安装新端口时都不使用-f
标志?
答案 0 :(得分:1)
安装时,强制标志用于强制激活,以防您正在安装的端口提供的文件已存在于您的系统上。如果没有强制标志,MacPorts将中止安装并警告您;使用该标志,MacPorts将重命名现有文件(附加.mp_ $ timestamp)。
如果您之前已卸载某个版本的MacPorts但未清除其提供的所有文件,或者使用MacPorts构建的第三方安装程序已将文件安装到/opt/local
(这是错误的,但是有时仍会发生。)
因为覆盖不是安全行为,所以它不是默认行为。这也是您不应该始终指定-f
。
答案 1 :(得分:0)
标志-f
是强制安装/安装。如果存在阻止安装/卸载macport的依赖项,则可以使用-f标志强制安装/卸载,但这不是安装/卸载的理想方式。
查看http://www.eclipse.org/jetty/documentation/current/startup.html
中的解释sudo port uninstall libcomerr
---> Unable to uninstall libcomerr @1.42.9_0, the following ports depend on it:
---> kerberos5 @1.11.3_0
---> subversion @1.8.9_0
---> subversion-perlbindings-5.16 @1.8.9_0
Error: port uninstall failed: Please uninstall the ports that depend on libcomerr first.
在卸载端口本身之前,您可以递归卸载依赖于给定端口的所有端口以解决此问题。为此,请使用--follow-dependents
标记。
$ sudo port uninstall --follow-dependents libcomerr
您还可以使用-f(强制)标志覆盖此安全检查。 因为这显然会打破家属,所以你不应该这样做 除非你知道你在做什么。
$ sudo port -f uninstall libcomerr
虽然这是卸载的一个示例,但您可以看到-f标志的工作原理。