4.3.寻找所需的应用程序

FreeBSD 的可用应用程序列表一直在增加。有很多方法可以找到要安装的软件:

# pkg search subversion
git-subversion-1.9.2
java-subversion-1.8.8_2
p5-subversion-1.8.8_2
py27-hgsubversion-1.6
py27-subversion-1.8.8_2
ruby-subversion-1.8.8_2
subversion-1.8.8_2
subversion-book-4515
subversion-static-1.8.8_2
subversion16-1.6.23_4
subversion17-1.7.16_2

软件包名称包括版本号,如果是基于 python 的 port,则包括软件包所使用的 python 版本的版本号。一些 port 也有多个版本。例如 Subversion 有不同的版本,以及不同的编译选项。在这种情况下,此例指 Subversion 的静态链接版本。在指出要安装哪个软件包时,最好是通过 port 来源来指定应用程序,也就是在 ports 中的路径。用 pkg search 加上 -o 来列出每个软件包的来源:

# pkg search -o subversion
devel/git-subversion
java/java-subversion
devel/p5-subversion
devel/py-hgsubversion
devel/py-subversion
devel/ruby-subversion
devel/subversion16
devel/subversion17
devel/subversion
devel/subversion-book
devel/subversion-static

在安装了 ports-mgmt/pkgopen in new windowports-mgmt/pkg-developen in new window 之后,pkg search 也支持通过 shell glob、正则表达式、完全匹配、通过介绍或版本库数据库中的任何其他字段进行搜索。请参阅 pkg-search(8)open in new window 了解更多细节。

  • 如果已经安装了 ports,有几种方法可以查询本地版本的 ports。要想知道某个 port 在哪个类别中,请输入whereis file,其中 file 是要安装的程序:
# whereis lsof
lsof: /usr/ports/sysutils/lsof

另外,也可以使用 echo(1)open in new window 语句:

# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof

请注意,这也将显示任何与下载到 /usr/ports/distfiles 目录中的匹配文件。

  • 另一种寻找软件的方法是使用 ports 的内置搜索机制。要使用这个搜索功能,请 cd 到 /usr/ports,然后运行 make search name=program-name,其中 program-name 是软件的名字。例如,要搜索 lsof
# cd /usr/ports
# make search name=lsof
Port:   lsof-4.88.d,8
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))
Maint:  [email protected]
Index:  sysutils
B-deps:
R-deps:

技巧

内置的搜索机制依赖索引信息文件。如果有消息表明需要 INDEX,运行 make fetchindex 来下载当前的索引文件。有了 INDEX 的存在,make search 就能执行所要求的搜索。

“Path:”一行指出在哪里可以找到该 port。

要想收到精简的信息,请使用 quicksearch 功能:

# cd /usr/ports
# make quicksearch name=lsof
Port:   lsof-4.88.d,8
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))

要进行更深入的搜索,可以使用 make search key=stringmake quicksearch key=string,其中 string 是要搜索的一些文本。这些文本可以是注释、介绍或依赖关系,以便在程序名称不详的情况下找到与特定主题有关的 ports。

在使用 searchquicksearch 时,搜索字符串是不区分大小写的。搜索“LSOF”“lsof”将产生相同的结果。

Loading...