我知道这个问题听起来很荒谬,但这就是我想做的事情:安装 apache http 服务器。
因此我参加了比赛apt search apache
并取得了很多成绩。
实际上...
apt search apache | wc -l
除以 3 - 我似乎得到了大约 700 个结果。
我可以尝试缩小范围
apt search apache http
,然后我会得到大约 200 个结果,然后我可以滚动很多,它最终会出现。我还可以使用
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>
显示该包中安装的内容。
因此没有参数它返回什么和在哪里有关于该软件包的信息,因此,您知道要安装什么,并且通过该参数,您可以确认是否已经安装了该软件包