我如何知道某些 apt-get 包包含哪些程序?

我如何知道某些 apt-get 包包含哪些程序?

我想知道一些具体包裹安装,例如,在安装时ncurses,我发现TAB键展开:

sudo apt-get install ncurses-

以显示:

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

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

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

答案1

这里有几个选项,这些将列出全部包中安装的文件:

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

  1. 对于已安装的软件包

     dpkg -L ncurses-term
    
  2. 对于所有软件包(无论是否安装)

     apt-file -F list ncurses-term
    

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

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

  1. 对于已安装的软件包

只需安装dlocatesudo apt-get install 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),并且只有通过两个测试才打印其名称。

  1. 对于所有软件包(无论是否安装)

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

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

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


笔记:以上命令均不会产生任何输出,ncurses-term但这是因为此包未安装任何可执行文件。但命令仍然有效,请尝试使用其他包。

答案2

您可以使用 apt-file:

sudo apt-file update        
apt-file list package_name

答案3

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

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

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

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

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

相关内容