7

I understand that this sounds like a ridiculous question but here is what I am trying to do: Install the apache http server.

So I run apt search apache and get a ton of results.

Actually... apt search apache | wc -l and dividing by 3 - I seem to get about 700 results.

  1. I can try to narrow this down using apt search apache http and then I get about 200 results and then I can scroll a lot and it will eventually turn up.

  2. I can also use apt search --names-only apache and at least exclude all those things that only mention apache in the description. That brings it down to 110 results.

All of this seems pretty complicated and tedious given that the package that I am looking for is called "apache2". Is there some way to get a best fit sorting of results? Or some other tool I should use?

  • 3
    Ill go 1 level extra: lamp-server^ installs a full stack (apache, mysql, php) ;-) – Rinzwind Oct 16 at 9:25
6

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
  • This closest to what I want it's short and simple. Doesn't give a best fit sorting but at least I can find the results. – FranzReprimand Oct 17 at 10:48
6

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
  • 5
    If you know it is apache2 there is no need to search for it. HOW to use apt search to find out it was apache2 he is looking for is the question ;-) – Rinzwind Oct 16 at 9:35
  • Maybe apt-cache search Apache HTTP Server | grep "Apache HTTP Server" will fit better ? Or does it only concern apt search ? – pymym213 Oct 16 at 9:37
  • @pymym213 this is a good idea, and there is only 2 results with apt-cache search apache | grep "Apache HTTP Server" – damadam Oct 16 at 9:39
  • @pymym213 Interesting that there is a difference in output. Always thought apt-cache search and apt search did the same thing. – FranzReprimand Oct 16 at 10:11
  • @FranzReprimand i add for you the result without -cache option (that's also my 1rst time that I see difference between these 2 x) – damadam Oct 16 at 10:16
1

I find a good way of searching for this is tab complete

sudo apt install apache<tab><tab>

gives

 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  

if that fails just type in the command

~$ apache

Command 'apache' not found, did you mean:

  command 'apache2' from deb apache2-bin

Try: sudo apt install <deb name>

Modern distros are pretty good at knowing what you meant

If that fails I usually fall back to apt search / apt list or more frequently these days search docker hub and install though docker

0
apt search **package-name**

example: let say you searching for mysql-server ->

apt search mysql-server

Output:

    sk@sk-desktop:~$ apt search mysql-server
Sorting... Done
Full Text Search... Done
default-mysql-server/bionic,bionic 1.0.4 all
  MySQL database server binaries and system database setup (metapackage)

default-mysql-server-core/bionic,bionic 1.0.4 all
  MySQL database server binaries (metapackage)

mysql-server/bionic-updates,bionic-updates,bionic-security,bionic-security,now 5.7.27-0ubuntu0.18.04.1 all [installed]
  MySQL database server (metapackage depending on the latest version)

mysql-server-5.7/bionic-updates,bionic-security,now 5.7.27-0ubuntu0.18.04.1 amd64 [installed,automatic]
  MySQL database server binaries and system database setup

mysql-server-core-5.7/bionic-updates,bionic-security,now 5.7.27-0ubuntu0.18.04.1 amd64 [installed,automatic]
  MySQL database server binaries
-3
$ apt list apache2
Listing... Done
apache2/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2/disco-updates,disco-security 2.4.38-2ubuntu2.3 i386

For just searching by Name


$ apt show apache2

Package: apache2
Version: 2.4.38-2ubuntu2.3
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 539 kB
Provides: httpd, httpd-cgi
Pre-Depends: dpkg (>= 1.17.14)
Depends: apache2-bin (= 2.4.38-2ubuntu2.3), apache2-data (= 2.4.38-2ubuntu2.3), apache2-utils (= 2.4.38-2ubuntu2.3), lsb-base, mime-support, perl:any, procps
Recommends: ssl-cert
Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser, ufw
Conflicts: apache2.2-bin, apache2.2-common
Breaks: libapache2-mod-proxy-uwsgi (<< 2.4.33)
Replaces: apache2.2-bin, apache2.2-common, libapache2-mod-proxy-uwsgi (<< 2.4.33)
Homepage: https://httpd.apache.org/
Task: lamp-server
Supported: 9m
Download-Size: 95.5 kB
APT-Sources: http://eg.archive.ubuntu.com/ubuntu disco-updates/main amd64 Packages
Description: Apache HTTP Server
 The Apache HTTP Server Project's goal is to build a secure, efficient and
 extensible HTTP server as standards-compliant open source software. The
 result has long been the number one web server on the Internet.
 .
 Installing this package results in a full installation, including the
 configuration files, init scripts and support scripts.

N: There is 1 additional record. Please use the '-a' switch to see it

As you know the package name, you could use this command to get it's details


$ apt search apache2
Sorting... Done
Full Text Search... Done
apache2/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
  Apache HTTP Server

apache2-bin/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
  Apache HTTP Server (modules and other binary files)

apache2-data/disco-updates,disco-updates,disco-security,disco-security 2.4.38-2ubuntu2.3 all
  Apache HTTP Server (common files)

apache2-dev/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
  Apache HTTP Server (development headers)

apache2-doc/disco-updates,disco-updates,disco-security,disco-security 2.4.38-2ubuntu2.3 all
  Apache HTTP Server (on-site documentation)

...
$ apt search apache2 | grep apache2

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

apache2/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2-bin/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2-data/disco-updates,disco-updates,disco-security,disco-security 2.4.38-2ubuntu2.3 all
apache2-dev/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2-doc/disco-updates,disco-updates,disco-security,disco-security 2.4.38-2ubuntu2.3 all
apache2-ssl-dev/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2-suexec-custom/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2-suexec-pristine/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
apache2-utils/disco-updates,disco-security 2.4.38-2ubuntu2.3 amd64
dehydrated-apache2/disco-updates,disco-updates 0.6.2-2ubuntu0.19.04.1 all
gforge-web-apache2/disco,disco 6.0.5-2ubuntu1 all
kopano-webapp-apache2/disco,disco 3.5.2+dfsg1-1 all
  Documentation of libapache2-mod-jk package
libapache2-authcassimple-perl/disco,disco 0.10-3 all
libapache2-authcookie-perl/disco,disco 3.27-1 all
libapache2-mod-apparmor/disco-updates 2.13.2-9ubuntu6.1 amd64
libapache2-mod-apreq2/disco 2.13-5build4 amd64

...

To search Packages' names and there description

[last command]

if you wanna exclude all things from the output except lines that has the (sub)word "apache2"

  • Oh I'm sorry, thought it will be useful to see the output – Abd-Elaziz Sharaf Oct 23 at 11:45
  • sorry power was down, I was about to change them with text – Abd-Elaziz Sharaf Oct 24 at 14:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.