Как искать посылку?

Как искать посылку?

Я понимаю, что это звучит нелепо, но вот что я пытаюсь сделать:Установите http-сервер Apache.

Поэтому я бегу 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

EDIT: Спасибо@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

Я считаю, что хороший способ поиска — это заполнение вкладок.

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>

показывает, что установлено для этого пакета.

Поэтому без параметра он возвращаетчтоигдедоступна информация о пакете, поэтому вы знаете, что именно вы хотите установить, а с помощью параметра вы можете подтвердить, что вы уже установили пакет

Связанный контент