it-swarm.com.ru

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

Я недавно установил Ubuntu Server Edition 13.10 (Saucy Salamander). Но я столкнулся с небольшой проблемой.

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

Enter image description here

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

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

159
D.Zou

Вы хотите знать обо всех командах 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" (заглавная S) означает "поиск"

Sudo dpkg -S {package_name}
Sudo dpkg -S skype

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

dpkg -l | grep {keywords}
dpkg -l | grep pdf
219
Babin Lonston

Используйте dpkg

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

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

dpkg -l

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

dpkg -p packagename

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

dpkg -s packagename | grep Status

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

apt-cache search name*  

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

apt-cache search virtual machine Host 
31
onurbekiroglu

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

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

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

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

$ apt -qq list awscli
awscli/stable 1.4.2-1 all
27
Viktor Benei

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

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

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

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

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

14
DenKoren

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

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

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

Если вы этого не видите, то вы , вероятно , не установили 'tasksel meta-package '.


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

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

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" означает установленный). Сделайте это для всех пакетов, перечисленных в пакете task/meta.

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

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

Если вы хотите удалить пакеты tasksel, это немного повредит. Пожалуйста, обратитесь https://askubuntu.com/a/88897/169878 или любое количество других ответов там.

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

4
bshea

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

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

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

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

3
Blake R

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

Теперь есть команда apt list, которая выводит список установленных пакетов. Вы также можете искать конкретный пакет с

apt list <package>

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

2
sk8forether

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

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

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

1
Claudio Taccogna