我怎么知道apt-get包中包含哪些程序?

我想知道一些特定的软件包安装的内容,例如,在安装ncurses ,我发现TAB密钥扩展了:

 sudo apt-get install ncurses- 

显示:

 ncurses-base ncurses-doc ncurses-hexedit ncurses-bin ncurses-examples ncurses-term 

我怎么知道ncurses-term installs呢? 我主要对程序感兴趣,但库和任何其他文件类型也可能有用。

如果可能, 命令行方法将是首选( 任何其他方法也被接受)。

以下是一些选项,这些选项将列出包安装的所有文件:

A.列出包中包含的所有文件

  1. 对于已安装的包

     dpkg -L ncurses-term 
  2. 对于所有包,是否安装

     apt-file -F list ncurses-term 

    -F模式匹配,以便只返回其名称匹配的包。 您可能需要使用sudo apt-get install apt-file ,然后使用sudo apt-file update更新其数据库。

B.仅列出包中包含的可执行文件

  1. 对于已安装的包

    只需安装dlocatesudo apt-get dlocate )并运行:

     dlocate -lsbin ncurses-term 

    man dlocate

    -lsbin列出包中可执行文件(如果有)的完整路径/文件名

    如果您不想安装其他软件包,可以手动执行此操作。 只需收集文件列表,找到其中包含可执行位的文件:

     apt-file -F list ncurses-term | cut -d ' ' -f 2 | while read file; do [[ -x $file && -f $file ]] && echo "$file"; done 

    上面的小脚本将仅打印路径( cut -d ' ' -f 2 ),然后通过while循环检查文件是否可执行( -x $file ),如果它是常规文件,则没有目录或符号链接( -f $file )并仅在通过两个测试时打印其名称。

  2. 对于所有包,是否安装

    我不知道列出只包含在未安装的软件包中的可执行文件。 但是,由于大多数可执行文件都安装在bin目录中,因此您可以通过解析输出来获取大部分可执行文件:

      apt-file -F list ncurses-term | grep -Ew "bin|sbin" 

    -w选项匹配整个单词,因此您不会安装任何东西,例如, trashbin或其他任何东西。


注意 :以上命令都不会为ncurses-term生成任何输出,但这是因为此程序包不会安装任何可执行文件。 尽管如此,命令还是可以使用不同的包。

你可以使用apt-file:

 sudo apt-file update apt-file list package_name 

您可以使用浏览器(因此无需访问APT系统)。 例如,要列出包“ncurses-term”的文件内容,只需键入

https://packages.debian.org/wheezy/all/ncurses-term/filelist

进入你的浏览器的地址栏(根据需要替换“wheezy”)为Debian或

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

对于Ubuntu(根据需要替换“saucy”)。