在“apt-cache depends”命令的输出中,Suggests、Recommends、|和<>的含义分别是什么?

我已经查看了man/info页面,但是关于apt-cache depends命令输出格式的某些方面没有任何参考。
man/info页面试图以一种晦涩的方式提供帮助;引用一句话:“对于输出的其余部分的具体含义,最好查阅apt源代码”。
公平地说,这句引文是针对'showpkg'选项的,它在合理解释了该选项的同时,并没有对我的选项进行解释... 我知道Linux的信息来自多个来源(不仅仅是man/info页面),而且我并不特别想翻阅源代码(尽管有时我会这样做),所以这里是一个我想知道含义的例子。
# I can assume what these mean, but... 
#  What does | mean? (probably means 'or'???)
#  What does <pkg> and the following indentations  mean? 
#  At the end, the interaction(?) of Suggest and Recommends puzzles me.

$ apt-cache depends solr-common
solr-common    
  Depends: debconf
 |Depends: openjdk-6-jre-headless
 |Depends: <java5-runtime-headless>
    default-jre-headless
    gcj-4.4-jre-headless
    gcj-jre-headless
    gij-4.3
   openjdk-6-jre-headless
  Depends: <java6-runtime-headless>
    default-jre-headless
    openjdk-6-jre-headless
  Depends: libcommons-codec-java
  Depends: libcommons-csv-java
  Depends: libcommons-fileupload-java
  Depends: libcommons-httpclient-java
  Depends: libcommons-io-java
  Depends: libjaxp1.3-java
  Depends: libjetty-java
  Depends: liblucene2-java
  Depends: libservlet2.5-java
  Depends: libslf4j-java
  Depends: libxml-commons-external-java
  Suggests: libmysql-java
 |Recommends: solr-tomcat
  Recommends: solr-jetty
1个回答

权威参考资料是Debian政策手册:http://www.debian.org/doc/debian-policy/ 引用手册中的内容:
推荐字段应列出在除了不寻常的安装之外,与此软件包一起找到的软件包。
建议:这用于声明一个软件包可能与一个或多个其他软件包更有用。使用此字段告诉打包系统和用户,列出的软件包与此软件包相关,并且可能增强其实用性,但是在没有它们的情况下安装此软件包也是完全合理的。
现在,推荐的软件包默认也会被安装(当您安装推荐的软件包时)。
正如您猜测的那样,| 表示“或”。控制行通常显示为 foo | bar,但 apt-cache depends 似乎通过将每个备选项单独显示在自己的行上并在第一个备选项前加上 | 来重新格式化它。换句话说,竖线标记了首选选项,下一行是备选项。
尖括号中列出的软件包表示它是一个虚拟软件包。缩进行后面列出的软件包是提供该服务的各种软件包。

谢谢psusi。这确实让我走上了正确的轨道。对于“Recommends”和“Suggests”的区别,我仍然有些模糊,但我相信现在我大致知道它们的意思后,通过接触一些例子,我会逐渐理解其中的含义。在那些我已经对某些事物的建议或推荐有所了解的例子中,我会逐渐领悟到其中的道理。 - Peter.O
2现在,默认情况下会安装推荐的软件包,而建议的软件包则不会。这是实际上的主要区别。基本上,推荐的软件包允许您“依赖”某个软件,但用户仍然可以卸载它而不会卸载您的软件包。而建议的软件包只是在某些用户界面中显示为您可能也想安装的内容。使用案例类似于file-roller(归档管理器)建议安装一个更特殊的压缩库,如果安装了该库,但大多数人并不需要。 - andrewsomething
3@fred.bear 一个很好的例子是像Audacity这样的音乐程序。如果你想要抓取CD,你需要安装cdparanoia。如果你想要编码/播放MP3文件,那么你需要安装lame。你仍然可以运行Audacity而不安装这些软件,但大多数使用它的人都希望它能够将CD转换为MP3,所以这些软件包应该被推荐。它也可以编码为FLAC格式,但由于大多数人不使用FLAC,所以这更适合作为建议。 - psusi
@andrewsomething和@psusi... 一对好东西... 谢谢 - Peter.O