Я понимаю, что это звучит нелепо, но вот что я пытаюсь сделать:Установите http-сервер Apache.
Поэтому я бегу 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
списокчем-то похож на
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>
показывает, что установлено для этого пакета.
Поэтому без параметра он возвращаетчтоигдедоступна информация о пакете, поэтому вы знаете, что именно вы хотите установить, а с помощью параметра вы можете подтвердить, что вы уже установили пакет