如何搜索包裹?

如何搜索包裹?

我知道这个问题听起来很荒谬,但这就是我想做的事情:安装 apache http 服务器。

因此我参加了比赛apt search apache并取得了很多成绩。

实际上... apt search apache | wc -l除以 3 - 我似乎得到了大约 700 个结果。

  1. 我可以尝试缩小范围apt search apache http,然后我会得到大约 200 个结果,然后我可以滚动很多,它最终会出现。

  2. 我还可以使用apt search --names-only apache并至少排除所有在描述中仅提到 Apache 的内容。这样结果就减少到 110 个。

鉴于我正在寻找的软件包名为“apache2”,所有这些似乎都非常复杂和繁琐。有什么方法可以得到最适合的结果排序吗?或者我应该使用其他工具吗?

答案1

您似乎知道应该如何调用该包,或者至少知道其名称的一部分应该是什么。 apt search看起来不是完成此任务的最佳工具,请apt list改用:

$ apt list apache\*
Listing... Done
apache2/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-bin/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-data/bionic-updates,bionic-updates,bionic-security,bionic-security 2.4.29-1ubuntu4.11 all
apache2-dbg/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-dev/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-doc/bionic-updates,bionic-updates,bionic-security,bionic-security 2.4.29-1ubuntu4.11 all
apache2-ssl-dev/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-suexec-custom/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-suexec-pristine/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apache2-utils/bionic-updates,bionic-security 2.4.29-1ubuntu4.11 amd64
apachedex/bionic,bionic 1.6.2-1 all
apacheds/bionic-updates,bionic-updates,bionic-security,bionic-security 2.0.0~M24-2~18.04 all
apachetop/bionic 0.12.6-18build2 amd64

apt手动的

列表有点类似于dpkg-query --list它可以显示满足特定条件的软件包列表。它支持glob(7)用于匹配包名称的模式以及列出已安装(--installed)、可升级(--upgradeable)或所有可用(--all-versions)版本的选项。

转义星号 ( \*) 表示名称后面可以跟任意字符。如果未找到任何内容,请考虑将转义星号添加到搜索字符串的开头。

我很确定您可以从此列表中选择正确的一个。显然,第一个是实际的 Apache 服务器。选择包apache2还将自动安装其依赖项。

$ sudo apt install apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apache2-bin apache2-data apache2-utils libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0
  ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom openssl-blacklist

答案2

您可以使用以下grep命令:

apt-cache search apache2 | grep apache2

如果你不喜欢红色的grep 的颜色,只需添加--color=none选项:

apt-cache search apache2 | grep apache2 --color=none

PS:我建议您不要忘记该-cache选项,如果您不使用grep命令添加它,您将看不到包名称(请参见下面没有此选项的结果):

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

  Apache HTTP Server (mod_ssl development headers)
  WebSocket extension for Apache HTTP Server

编辑:感谢@pymym23,您可以使用描述更好地对结果进行排序,例如

apt-cache search apache2 | grep "Apache HTTP Server"

结果 :

apache2-ssl-dev - Apache HTTP Server (mod_ssl development headers)
python-mod-pywebsocket - WebSocket extension for Apache HTTP Server

另外,你必须使用该-i选项,如果你不输入大写字母而不是小写字母,它将不会对结果进行排序

例子 :

apt-cache search apache2 | grep "apache HTTP Server"

你得到了没有结果

apt-cache search apache2 | grep -i "apache HTTP Server"

结果是:

apache2-ssl-dev - Apache HTTP Server (mod_ssl development headers)
python-mod-pywebsocket - WebSocket extension for Apache HTTP Server

答案3

我发现一个很好的搜索方法是使用 tab complete

sudo apt install apache<tab><tab>

给出

 sudo apt install apache
apache2                  apache2-doc              apachedex
apache2-bin              apache2-ssl-dev          apacheds
apache2-data             apache2-suexec-custom    apachetop
apache2-dbg              apache2-suexec-pristine  
apache2-dev              apache2-utils  

如果失败,只需输入命令

~$ apache

Command 'apache' not found, did you mean:

  command 'apache2' from deb apache2-bin

Try: sudo apt install <deb name>

现代发行版非常善于理解你的意思

如果失败了,我通常会回到apt search/apt list 或者更频繁地搜索docker hub并通过docker安装

答案4

我同意关于apt list结果展示的解决方案比apt search,但更多信息可以通过

  • apt list | grep <package_name>

并使用--installed如下参数:

  • apt list --installed | grep <package_name>

显示该包中安装的内容。

因此没有参数它返回什么在哪里有关于该软件包的信息,因此,您知道要安装什么,并且通过该参数,您可以确认是否已经安装了该软件包

相关内容