6.9. 搜索软件包

Debian 纳入的软件愈来愈多,出现自相矛盾的现象:Debian 的工具可以处理大部分的工作,但很难在众多的软件包中找到适合的工具。没有适当的方式搜索 (或找到) 正确的工具始终是个问题。幸运的是,此问题已经几乎全部解决了。

最琐碎的搜索可能是找到正确的软件包名称。若 apt show *软件包名称* 送回结果,表示该软件包存在。不幸的是,必须知道或猜对软件包名称,却几乎是不可能的.

秘诀 软件包命名惯例

部分类型的软件包遵循惯例命多;只要知道该惯例就能够猜到正确的软件包名称。例如,Perl 模块,惯例是称呼为 XML::Handler::Composer 上游的软件包名就是 libxml-handler-composer-perl。从 Python 启用 gconf 系统的程序库就是软件包 python-gconf。不幸的是即使软件包管理者努力选择上游开发者的惯例,仍无法猜中所有软件包的通俗惯例。

搜索纯文本的软件包名称,虽然有限但成功率较高。还可以搜索软件包说明的内容:除了搜索软件包名称、键词之外,还可搜索其说明。apt-cacheaxi-cache 是此等搜索的工具;例如,apt-cache search video 将找出名称或说明内有键词 “video” 的软件包。

更复杂的搜索,需要更有力的工具,如 aptitude 是其中之一。aptitude 可搜索软件包元数据字段的内容。例如,以下的范例搜索含有 kino 字样的软件包名称,其说明包括 video 与维护者名字为 paul

  1. $ aptitude search kino~dvideo~mpaul
  2. p kino - Non-linear editor for Digital Video data
  3. $ aptitude show kino
  4. Package: kino
  5. State: not installed
  6. Version: 1.3.4-2.1+b1
  7. Priority: extra
  8. Section: video
  9. Maintainer: Paul Brossier <piem@debian.org>
  10. Architecture: amd64
  11. Uncompressed Size: 8,472 k
  12. Depends: libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libavc1394-0 (>=
  13. 0.5.3), libavcodec56 (>= 6:11~beta1) | libavcodec-extra-56 (>=
  14. 6:11~beta1), libavformat56 (>= 6:11~beta1), libavutil54 (>=
  15. 6:11~beta1), libc6 (>= 2.14), libcairo2 (>= 1.2.4), libdv4,
  16. libfontconfig1 (>= 2.11), libfreetype6 (>= 2.2.1), libgcc1 (>=
  17. 1:4.1.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglade2-0 (>= 1:2.6.4-2~),
  18. libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.24.0), libice6 (>=
  19. 1:1.0.0), libiec61883-0 (>= 1.2.0), libpango-1.0-0 (>= 1.14.0),
  20. libpangocairo-1.0-0 (>= 1.14.0), libpangoft2-1.0-0 (>= 1.14.0),
  21. libquicktime2 (>= 2:1.2.2), libraw1394-11, libsamplerate0 (>= 0.1.7),
  22. libsm6, libstdc++6 (>= 4.9), libswscale3 (>= 6:11~beta1), libx11-6,
  23. libxext6, libxml2 (>= 2.7.4), libxv1, zlib1g (>= 1:1.1.4)
  24. Recommends: ffmpeg, curl
  25. Suggests: udev | hotplug, vorbis-tools, sox, mjpegtools, lame, ffmpeg2theora
  26. Conflicts: kino-dvtitler, kino-timfx, kinoplus
  27. Replaces: kino-dvtitler, kino-timfx, kinoplus
  28. Provides: kino-dvtitler, kino-timfx, kinoplus
  29. Description: Non-linear editor for Digital Video data
  30. Kino allows you to record, create, edit, and play movies recorded with DV
  31. camcorders. This program uses many keyboard commands for fast navigating and
  32. editing inside the movie.
  33.  
  34. The kino-timfx, kino-dvtitler and kinoplus sets of plugins, formerly
  35. distributed as separate packages, are now provided with Kino.
  36. Homepage: http://www.kinodv.org/
  37.  
  38. Tags: field::arts, hardware::camera, implemented-in::c, implemented-in::c++,
  39. interface::x11, role::program, scope::application, suite::gnome,
  40. uitoolkit::gtk, use::editing, use::learning, works-with::video,
  41. x11::application

此搜索只找到一个软件包,kino,满足全部三个条件。

这种多条件的搜索较为刚性,所以很少人用它。因此发明新的标签系统,以不同角度处理搜索。软件包的标签在其他情况之外多了专题性分类,通称为 “层面性分类”。以前述的 kino 为例,软件包标签指出 Kino 是处理影像的 Gnome 级软件,主要功能为编辑。

浏览此分类系统可协助搜索对应的已知需求;即使收到一堆 (合理数量) 结果,还可以用人工方式再搜索。可以使用 ~G 搜索模式于 aptitude 内,但可以再简化浏览标签管理的网站:

http://debtags.alioth.debian.org/cloud/

works-with::videouse::editing 标签可找出若干软件包,包括 kino 与 pitivi 影像编辑器。愈来愈多人使用这种分类系统,在此基础上,软件包管理者创建更有效的接口。

总的来说,最好的工具取决于搜索时你所期望达到的复杂程度:

  • apt-cache 只能通过软件包名称和描述信息来进行搜索,对于搜索符合少量关键词的特定软件包十分方便;

  • 当搜索条件包括软件包之间的关系或者像维护者名称的其它元数据时,synaptic将更加有用;

  • 当需要基于标签来搜索时,packagesearch 是一个很好用的工具,可以根据若干条件(包括软件包中包含的文件名)进行软件包搜索的图形化专用工具。命令行下则使用 axi-cache

  • 最后,当搜索涉及有逻辑操作的复杂的表达式时,首选工具为 aptitude 的搜索语法,尽管有点晦涩难用但功能相当强大,它有命令行和交互两种模式。