How do I search for a package?

Solution 1:

You seem to know how the package should be called, or at least what a part of its name should be. apt search doesn’t look like the best tool for this task, use apt list instead:

$ 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

The escaped asterisk (\*) means that any character(s) may follow the name. If you find nothing, consider adding the escaped asterisk to the beginning of the search string.

I am pretty sure you can choose the right one from this list. Obviously, the first is the actual Apache server. Choosing the apache2 package will also install its dependencies automatically.

$ 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

Solution 2:

You could use the grep command :

apt-cache search apache2 | grep apache2

and if you don't like the red color of grep, just add the --color=none option :

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

P.S : I recommend you to not forget the -cache option, you won't see the package name if you don't add it by using grep command (see below the result without this option) :

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

EDIT : Thanks to @pymym23, you would sort better your results by using the description, for example

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

Result :

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

Also, you must use the -i option, it won't sort result if you don't type a capital letter instead of a little one

Example :

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

and you got no result

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

and result is :

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