检查 FreeBSD 上是否安装了端口

Check if a port is installed on FreeBSD

如何检查一个端口是否已经安装在 FreeBSD 上?

这将在 shell 脚本中用于配置。即如果端口已经安装跳过安装,否则调用 make 命令

在 FreeBSD 10+ 下,您可以使用 "pkg"。好的参考是:https://wiki.freebsd.org/PkgPrimer

如果安装了您的端口,将导致:

# pkg info apache-jmeter
apache-jmeter-3.0.r2
Name           : apache-jmeter
Version        : 3.0.r2
Installed on   : Thu May  5 18:58:45 2016 MSK
Origin         : www/jmeter
Architecture   : freebsd:10:x86:64
...

否则:

# pkg info jmeter
pkg: No package(s) matching jmeter

You should never use "pkg delete"/"pkg remove" on software that you have installed via the ports, but rather "make deinstall" from inside the ports tree. Doing "pkg install" downloads a precompiled package to your system and installs it. Doing "pkg info " will *not tell you if it was installed from ports.

恐怕引用的陈述不正确。

一个'port'只是一个还没有被编译和安装的'package'。 安装的 ports 实际上是包,可以像任何其他包一样对待,无论它是通过 pkg(8) 下载预编译和安装还是从 ports 树本地编译然后安装。一旦软件是 'installed'.

,术语 'port' 和 'package' 就是同义词

pkg delete/remove <portname> 可以而且应该使用并且可能更可取,因为它会提示还卸载不再需要的依赖项。 make deinstall 在特定端口的目录中只会卸载该端口而不会卸载其他任何东西。

pkg info pkg info <portname> 是正确答案。