Sop*_*rez 17 package-management command-line apt
我想知道一些特定的包安装了什么,例如,在安装时ncurses,我发现TAB密钥扩展:
sudo apt-get install ncurses-
Run Code Online (Sandbox Code Playgroud)
显示:
ncurses-base ncurses-doc ncurses-hexedit
ncurses-bin ncurses-examples ncurses-term
Run Code Online (Sandbox Code Playgroud)
我怎么知道ncurses-term安装了什么?我主要对程序感兴趣,但库和任何其他文件类型也可能有用。
如果可能,命令行方法将是首选(也接受任何其他方法)。
ter*_*don 21
这里有几个选项,它们将列出一个包安装的所有文件:
对于已安装的包
dpkg -L ncurses-term
Run Code Online (Sandbox Code Playgroud)对于所有软件包,安装与否
apt-file -F list ncurses-term
Run Code Online (Sandbox Code Playgroud)
-F模式匹配的轮次,以便只返回名称完全匹配的包。您可能需要使用 安装apt-file,sudo apt-get install apt-file然后使用sudo apt-file update.
对于已安装的包
只需安装dlocate( sudo apt-get dlocate) 并运行:
dlocate -lsbin ncurses-term
Run Code Online (Sandbox Code Playgroud)
如中所述man dlocate:
-lsbin 列出包中可执行文件(如果有)的完整路径/文件名
如果您不想安装其他软件包,可以手动执行此操作。只需收集文件列表并找到其中设置了可执行位的任何文件:
apt-file -F list ncurses-term | cut -d ' ' -f 2 |
while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
Run Code Online (Sandbox Code Playgroud)
上面的小脚本将仅打印路径 ( cut -d ' ' -f 2),然后通过while循环检查文件是否可执行 ( -x $file) 以及它是否是常规文件,没有目录或符号链接 ( -f $file) 并仅在通过两个测试时才打印其名称.
对于所有软件包,安装与否
我不知道仅列出已卸载软件包中包含的可执行文件。但是,由于大多数可执行文件都安装到bin目录中,因此您可以通过解析输出来获取其中的大部分:
apt-file -F list ncurses-term | grep -Ew "bin|sbin"
Run Code Online (Sandbox Code Playgroud)
该-w选项匹配整个单词,因此您不会安装trashbin任何东西,例如,或其他任何东西。
注意:上述命令都不会产生任何输出,ncurses-term但这是因为此软件包未安装任何可执行文件。这些命令仍然有效,请尝试使用不同的包。
您可以使用 apt-file:
sudo apt-file update
apt-file list package_name
Run Code Online (Sandbox Code Playgroud)