Как мне проверить, установлен ли пакет на моем сервере?

Недавно я установил Ubuntu Server edition 13.10 (Дерзкая Саламандра). Но я столкнулся с небольшой проблемой.

В конце установки он запрашивает несколько дополнительных пакетов, независимо от того, нужны они вам или нет, например OpenSSH server и virtual machine host. Вот на что я смотрю:

dialog offering packages

Теперь моя проблема в том, что я не могу вспомнить, установил ли я флажок "хост виртуальной машины". Как мне проверить, есть ли на моем сервере соответствующие пакеты?

Какие пакеты поставляются с хостом виртуальной машины?

Вы хотите узнать обо всех командах dpkg с опциями? Ознакомьтесь с приведенной ниже ссылкой.

15 команд dpkg для управления серверами Linux на базе Debian

Чтобы перечислить все Установленные пакеты

Здесь less это простое средство чтения текста, используемое для прокрутки списка пакетов в новом буфере, который открывается в существующем окне терминала. Список не будет смешиваться с другими командами терминала и выводом. Удар q чтобы вернуться к подсказке терминала. Видеть man less для получения дополнительной информации.

dpkg -l | less

Чтобы проверить, установлен ли пакет или нет:

dpkg -l {package_name}dpkg -l vlc

Чтобы проверить, установлен ли пакет или нет (например, vlc). Если установлен, запустите пакет:

dpkg -l | grep vlc

Покажите местоположение, в котором установлен пакет. То -S (заглавные буквы) означает "поиск";

sudo dpkg -S {package_name}sudo dpkg -S skype

Чтобы использовать Grep для поиска:

dpkg -l | grep {keywords}dpkg -l | grep pdf

apt -qq list PACKAGE также может использоваться для проверки того, установлен ли ПАКЕТ.

Если он установлен, он напечатает что-то вроде (с [installed] в конце строки):

$ apt -qq list awscliawscli/stable,now 1.4.2-1 all [installed]

Если он не установлен, то на выходе будет:

$ apt -qq list awscliawscli/stable 1.4.2-1 all

Воспользуйся dpkg

Эта команда является менеджером пакетов Debian.

Вы можете перечислить все установленные пакеты с помощью

dpkg -l

Вы можете просмотреть подробную информацию о конкретном пакете с помощью

dpkg -p packagename

И чтобы узнать, установлен ли он, используйте

dpkg -s packagename | grep Status

Вы можете узнать, какой пакет содержит нужное вам программное обеспечение, с помощью

apt-cache search name*  

В вашем случае вы должны использовать эту команду для поиска нужного вам имени пакета

apt-cache search virtual machine host 

Я нашел способ проверить установку пакета с помощью всего лишь dpkg-query команда и никаких труб.

Я искал такое решение, когда писал задачу для ansible playbook.

Вы можете сделать что-то вроде этого:

/usr/bin/dpkg-query --show --showformat='${db:Status-Status}\n' '<your package name>'

Это просто еще один способ сделать это.

Более простое решение:

В настоящее время существует apt list команда, в которой перечислены доступные пакеты, и --installed команда покажет только установленные пакеты. Вы также можете выполнить поиск определенного пакета с помощью

apt list <package>

Или видеть только совпадающие установленный пакеты

apt list <package> --installed

Есть также следующие --upgradeable и --all-versions флаги.

Если вы не знаете точного имени пакета, вы можете использовать apt search затем следует его часть, чтобы увидеть список связанных пакетов. Это позволит вам использовать частичное имя или термин (ы) регулярного выражения для фильтрации списка доступных пакетов, но у него нет отличных флагов для фильтрации, которые apt list имеет.

Также смотрите man apt для получения дополнительной информации.

Я пишу новый ответ как Набор задач "Имена задач" НЕ отображаются в dpkg или apt запросы. Это означает, что другие ответы являются неполными (или неправильными).

"Я не могу вспомнить, установил ли я флажок "хост виртуальной машины"..";

Проверьте, есть ли звездочка рядом с именем после повторного запуска sudo tasksel (или ' i " если бегущий tasksel --list-tasks).

Если вы этого не видите, то вы возможно у вас нет 'tasksel мета-пакет- установлен.


"..Как мне проверить, есть ли на моем сервере соответствующие пакеты?"

Если вы хотите узнать, что установлено в метапакете tasksel хоста виртуальной машины:

tasksel --list-tasks

(в вашем случае tasksel --list-tasks | grep virt этого достаточно)

Это дает правильную задачу имя и указание на то, установлен ли он.

В вашем случае это имя tasksel является virt-host.


"Какие пакеты поставляются с хостом виртуальной машины?";

В последней команде найдите имя задачи tasksel. Это необходимо для следующей команды:

tasksel --task-packages virt-host

Здесь перечислены отдельные мета-пакеты Tasksel (обозначаемые добавленным '^'), которые составляют имя. В вашем случае это virt-host^.

Как только вы найдете подходящее мета-имя, вы можете использовать apt:

 apt show virt-host^ | grep "Package:"

(или apt-cache show ... если apt show не работает.)

Это покажет все пакеты, составляющие данный мета-пакет.

Затем:

 dpkg -l {each individual pkg name listed above}

Это сообщит вам, установлен / удален ли отдельный пакет (отмечен 2-й буквой: статус "i" означает "установлен"). Сделайте это для всех пакетов, перечисленных в разделе задача/мета-пакет.

Это должно ответить на первоначальные вопросы.

Боковое примечание: /usr/share/tasksel/descs/ubuntu-tasks.desc также содержит описания мета-пакетов Tasksel. Если ты: grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.desc в нем будет показано правильное имя метапакета APT. (В вашем случае это ubuntu-virt-server). Вы также можете использовать apt команды с этим мета-именем.

Если вы хотите удалить пакеты tasksel, это немного мешает. Пожалуйста, проконсультируйтесь на этот вопрос Ubuntu ответит или любое количество других ответов там.

Пожалуйста, обратите внимание, что пакеты "meta" apt не соответствуют именам пакетов Tasksel. Пожалуйста, проконсультируйтесь с Страница сообщества Tasksel для получения дополнительной информации.

Используйте tasksel (sudo apt-get install tasksel если у вас его еще нет) и запустите tasksel --list-tasks.

tasksel распечатает список задач, и там будет i рядом с каждой установленной задачей и u рядом с каждой задачей, которая не установлена.

Если вы хотите установить задачу, используйте tasksel install <task>. Название задачи, которую вы ищете, - это virt-host.

Элементы выбора программного обеспечения называются "задачи".

Я создал небольшой скрипт, с помощью которого вы можете автоматически устанавливать из списка пакеты или приложения или просто проверять, установлены ли они уже:

#!/bin/bashapt -qq list YOUR_LIST_GOES_HERE | grep -v "installed" | awk -F/ '{print $1}' > /root/list.txtpackages=$(cat /root/list.txt)grep -q '[^[:space:]]' < /root/list.txtCHECK_LIST=$?if [[ $CHECK_LIST -eq 1 ]]; thenecho "Your packages are already installed"elseecho "Installing packages"apt-get  install -y $packagesfi

Надеюсь, это кому-нибудь поможет.

Проверьте, установлены ли некоторые пакеты, и в противном случае установите отсутствующие

pkgs='qemu-user pandoc'if ! dpkg -s $pkgs >/dev/null 2>&1; then  sudo apt-get install $pkgsfi

Более подробная информация на: https://stackoverflow.com/questions/1298066/check-if-an-apt-get-package-is-installed-and-then-install-it-if-its-not-on-linu/54239534#54239534

Аналогичный метод, ранее упомянутый в: https://askubuntu.com/a/1102572/52975

Другой (не обязательно лучший) способ: посмотрите, является ли поле APT-Manual-Installed появляется в apt show <pkgname>. Если он отсутствует, значит, пакет не установлен. К сожалению, это не показано в apt-cache show <pkgname>.

Как всегда, в apt предназначен для интерактивного использования и не рекомендуется для написания сценариев.

$ apt-cache policy <имя пакета>, например `$ apt-cache policy dillo’