如何从命令行搜索可用的包?

Mar*_*mas 752 command-line apt

当我事先知道这些软件包可用时,我已经使用命令行“sudo apt-get install packagename”成功安装了一些软件包。但是如何搜索或获取存储库中可用内容的列表?

ish*_*ish 915

要按名称或描述搜索特定包:

从命令行,使用:

apt-cache search keyword
Run Code Online (Sandbox Code Playgroud)

其中搜索关键字可以是包名称的全部或部分,或在其描述中使用的任何词。

例如,apt-cache search proxy包括这两个包:

tiny proxy - 轻量级、非缓存、可选匿名的 HTTP 代理
tircd -推特 API 的
ircd代理

注意:列表可能很长,因此您可以将输出通过管道传输less到以使其一次可滚动一行或一屏,即apt-cache search something | less.

获取所有包的列表

apt-cache search .
Run Code Online (Sandbox Code Playgroud)

如果您启用了 X-forwarding 或在桌面上,请使用 Synaptic

Synaptic通常是一种更方便的方法,但至少需要在您的一端有一个 X 服务器(除非您运行的是桌面环境)。sudo apt-get install synaptic如有必要,请安装。

  • 通过 X 转发在 ssh 的服务器上使用 Synaptic:

    在此处输入图片说明

  • Synaptic 在 Ubuntu 桌面上本地运行:

    在此处输入图片说明


jbr*_*ock 66

使用aptitudeapt-cacheaptall 以不同的方式格式化输出。(这些都不需要sudo在搜索包时使用。)我更喜欢使用apt它的可读性。它突出显示包名称并在不同的包之间放置一个空格。它还[installed]在已安装的每个软件包旁边列出。用法:

apt search package-name
Run Code Online (Sandbox Code Playgroud)

  • 如果我说'$ apt search firefox'它会产生大量的输出结果:( (5认同)
  • 缩小搜索范围的另一个选项:`apt search ^firefox` 或 `apt search ^firefox$` (4认同)
  • @jbrock 如果您的输出不是 tty 而是类似于 `apt search firefox | 中的管道 grep -A 3 firefox` 那么你应该使用 `apt-cache search` 代替。`apt` 工具的输出是供人类使用的,可以在不通知的情况下更改。`apt-get` 和 `apt-cache` 工具具有稳定的输出,可用于像您这样的脚本和管道。 (3认同)

小智 27

您还可以从命令行使用 aptitude:

aptitude search xxxxxx
Run Code Online (Sandbox Code Playgroud)

  • 这个令人讨厌的事情是,Ubuntu 似乎默认情况下没有给你。在我了解 `apt-cache` 之前,我总是在我安装的每个新机器上执行 `apt-get install aptitude`。但是,由于我找不到让 `apt-cache` 显示它是否已安装的方法,我想我将不得不继续这样做:-) (2认同)
  • @paxdiablo 只需创建两行 shell 脚本(第二行类似于 `dpkg --list | grep "$1"`)或将 shell 函数添加到你的 `.bash_login` 中... :-) (2认同)

小智 9

apt-cache 命令行工具用于搜索 apt 软件包缓存。简单来说,这个工具用于搜索软件包,收集软件包信息,也用于搜索哪​​些可用的软件包可以安装在基于 Debian 或 Ubuntu 的系统上。

要在安装之前找出包名称及其描述,请使用“搜索”标志。将“搜索”与 apt-cache 一起使用将显示带有简短描述的匹配包列表。假设你想找出包“vsftpd”的描述,那么命令就是。

句法:

apt-cache search SearchTerm
Run Code Online (Sandbox Code Playgroud)
$ apt-cache search vsftpd
Run Code Online (Sandbox Code Playgroud)

可能的输出是:

vsftpd - lightweight, efficient FTP server written for security
ccze - A robust, modular log coloriser
ftpd - File Transfer Protocol (FTP) server
yasat - simple stupid audit tool
Run Code Online (Sandbox Code Playgroud)

要查找并列出所有以“vsftpd”开头的软件包,您可以使用以下命令。

$ apt-cache pkgnames vsftpd
Run Code Online (Sandbox Code Playgroud)

您可能还想通过 more 甚至 grep 来运行结果。例如:

apt-cache search firefox | grep plugin
Run Code Online (Sandbox Code Playgroud)


小智 7

假设您想从终端执行所有这些操作,请使用以下命令:

首先,我建议您更新包索引文件,以便您要创建的存储库中的所有文件的列表都是最新的

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

然后使用“搜索正则表达式”函数,其中apt-cache“正则表达式”代表正则表达式,是给出搜索的模式。man 7 regex有关搜索模式的更多信息,您可以通过命令或英语查找手动 regex(7) 。正则表达式变量等于 . 就足够了。

apt-cache search .
Run Code Online (Sandbox Code Playgroud)

上面将为您提供所有结果,但它的顺序并不对浏览特别有帮助。

所以最后我们可以使用按字典顺序排序sort -d,并使用一次仅显示一页less

apt-cache search . |sort -d |less
Run Code Online (Sandbox Code Playgroud)


Mic*_*ico 6

不幸的是,我没有足够的代表来添加对主要答案的评论。

但我试图找到g++-apt-cache search. 在这种情况下,重要的是要知道这keyword 是一个正则表达式,因此apt-cache search g++-不会产生有用的结果。

apt-cache search "g[+][+][-]"将是要走的路


Fad*_*adi 5

apt list <package>这是我建议搜索包的方式。如果您没有获得任何匹配项,或者您不确定包的名称,请尝试将参数用星号括起来以获得更多结果。例如apt list *chrome*将产生以下结果:

Listing...
chrome-gnome-shell/focal,focal,now 10.1-5 all
chromium-chromedriver/focal-updates 1:85.0.4183.83-0ubuntu0.20.04.2 amd64
chromium-lwn4chrome/focal,focal 1.0-3 all
google-chrome-beta/stable 99.0.4844.17-1 amd64
google-chrome-stable/stable,now 98.0.4758.80-1 amd64
google-chrome-unstable/stable 100.0.4867.0-1 amd64
mkchromecast-alsa/focal,focal 0.3.8.1-1 all
mkchromecast-gstreamer/focal,focal 0.3.8.1-1 all
mkchromecast-pulseaudio/focal,focal 0.3.8.1-1 all
mkchromecast/focal,focal 0.3.8.1-1 all
node-chrome-trace-event/focal,focal 1.0.2-1 all
openchrome-tool/focal 1:0.6.0-3build1 amd64
python3-pychromecast/focal,focal 4.1.0-1 all
ruby-chromedriver-helper/focal,focal 2.1.0-7 all
xserver-xorg-video-openchrome-hwe-18.04/focal 3:14.5 amd64
xserver-xorg-video-openchrome/focal 1:0.6.0-3build1 amd64
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要每个包的描述,请运行apt search --names-only <package>。确保包含--names-only以获得更准确的结果。