0

我有一个用 perl 编写的脚本,它收集有关通过端口安装的软件包的信息。不幸的是,似乎没有一种功能性、简单的方法来确定端口的版本。当然,你可以使用这个:

pkg_version -v

这将向您显示所有包、与其状态相关的符号(需要更新、成功移植等)以及它的版本。

由于这是在脚本中,我真的不想这样做:

my $blah = "pkg_version -v | grep -vE '(up-to-date|succeeds)'|awk '{print \$1}'";
# Then make a var and run it through with backticks.

这会给我一个所有包的列表,让我把它变成一个数组,然后用它做一些魔法。我想做的是这只是弄清楚包的版本是什么,而提供了包的名称。

同样,我可以使用管道、awk 等来执行此操作,但如果可以避免,我不想这样做。

请让我知道你们能想出什么,因为我发现这很难找到相关信息。

PS这里有一些信息:

FreeBSD 版本:9.1 Arch:x64 Perl 版本:5.14.2 (amd64-freebsd-thread-multi)

如果有人可以为端口添加标签,那就太好了,因为它还不存在。

4

1 回答 1

0

/var/db/pkg您可以直接使用opendir/检查包数据库readdir

于 2013-06-24T07:17:07.910 回答