Perl FreeBSD软件包版本信息
我有一个用perl编写的脚本,它收集有关通过端口安装的包的信息。不幸的是,似乎没有一种功能简单的方法来确定端口的版本。当然,您可以使用:Perl FreeBSD软件包版本信息,perl,freebsd,Perl,Freebsd,我有一个用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
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等来做这件事,但如果可以避免的话,我不想这样做
请让我知道你们能想出什么,因为我发现很难找到这方面的信息
这里有一些信息:
FreeBSD版本:9.1
拱门:x64
Perl版本:5.14.2(amd64 freebsd多线程)
如果有人可以为端口添加标记,那就太好了,因为它还不存在。您可以直接使用
opendir
/readdir
检查/var/db/pkg
中的包数据库,我假设您是指使用目录名来确定版本,对吗?例如,包“blah”有目录“blah-1.1.1_3”是的,没错。它假设pkg.*
工具已经正确地完成了内务管理,但是如果你允许他们出错,那么你就有了一大堆其他可能的问题。是的,的确如此。这当然是野兽的本性。当然,我需要履行我的职责,写一些奇特的精神检查,以确保这不会失控。谢谢你的帮助。:)在这方面工作了一段时间,我不太确定我是否喜欢这种方法。不幸的是,这有点不可靠,比如说我们有blah-1.2.3.4_1和bleh-1.4.3.2,这需要大量的正则表达式构建,这可能是徒劳的。还有其他可以通过pkg脚本作为参数运行的想法吗?@rubyschai:my($pkg,$ver)=split/-/为什么不是一个简单的问题?