![我如何知道哪些端口是我自己编译的,哪些是从预编译的二进制包安装的?](https://linux22.com/image/73375/%E6%88%91%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E5%93%AA%E4%BA%9B%E7%AB%AF%E5%8F%A3%E6%98%AF%E6%88%91%E8%87%AA%E5%B7%B1%E7%BC%96%E8%AF%91%E7%9A%84%EF%BC%8C%E5%93%AA%E4%BA%9B%E6%98%AF%E4%BB%8E%E9%A2%84%E7%BC%96%E8%AF%91%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%8C%85%E5%AE%89%E8%A3%85%E7%9A%84%EF%BC%9F.png)
我有两个 FreeBSD 10.2-RELEASE 系统,我正在尝试将第二个系统设置为与第一个系统几乎相同。我不想使用 ZFS 快照来完成此任务;我只想选择、安装和编译相同的软件版本。
在安装第一个系统期间,我知道我使用该pkg
工具安装了一些二进制端口,并且还从层次结构make install clean
中的源代码编译了一些包/usr/ports/
。
现在,当我pkg info
在第一个系统上运行时,它会显示这两种类型。我想知道是否有任何方法可以区分哪些是从源代码编译的,而无需回顾我的 shell 历史记录。
我发现我可以pkg query -e '%a = 0' %o
找到非自动安装包,那么它们一定是我选择的包,但我仍然不能完全分辨出哪些是我从源代码编译的。
非常感谢。
答案1
您可以使用存储库 ( %R
)。第一次尝试:
pkg query "%R %o" | grep unknown
当然你可以用awk
( awk '/unknown/ {print $2}'
) 或 来过滤sed
。