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

Vim/Gvim работает хорошо на меня.

>echo %EDITOR%

c:\Vim\Vim71\vim.exe

174
задан 15.02.2017, 21:05

9 ответов

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

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

Список всех установленных пакетов

Здесь «меньше» - простое средство чтения текста используется для прокрутки списка пакетов в новом буфере, который открывается в окне существующего терминала. Список не будет смешан с другими командами терминала и выводом. Нажмите «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
230
ответ дан 08.10.2019, 14:09
  • 1
    Что является различием между этим и dpkg-запрос-l " packagename" – Wiebe Tijsma 24.05.2015, 20:56
  • 2
    Не зависьте от кода выхода dpkg -l packagename, поскольку он мог бы возвратиться с 0 кодами выхода, даже если пакет не полностью установлен - см.: github.com/bitrise-io/bitrise/issues/433 – user47206 25.10.2016, 21:08
  • 3
    dpkg -l | cut -d " " -f 3 | grep "^vlc" показать все имена пакета, которые запускаются с vlc – Diego C. 14.04.2017, 21:49
  • 4
    К вашему сведению, этот doesn' t работают на meta пакеты так как они don' t коррелируют непосредственно к dpkg. Ваш ответ действительно отвечает на вопрос, как спросили все же. – inspite 11.10.2017, 22:15

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

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

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

dpkg -l

. Вы можете просмотреть детали для определенного пакета с помощью

dpkg -p packagename

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

.
dpkg -s packagename | grep Status

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

apt-cache search name*  

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

apt-cache search virtual machine host 
34
ответ дан 08.10.2019, 14:09

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

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

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

dpkg -l

. Вы можете просмотреть детали для определенного пакета с помощью

dpkg -p packagename

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

.
dpkg -s packagename | grep Status

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

apt-cache search name*  

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

apt-cache search virtual machine host 
34
ответ дан 08.10.2019, 14:09

apt -qq list 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
29
ответ дан 08.10.2019, 14:09
  • 1
    Можно поместить звезду на конец названия пакета подстановочного знака. – Brian Knoblauch 22.10.2016, 06:09
  • 2
    Можно также использовать - установленная опция для той команды для ограничения соответствиями, которые на самом деле установлены. – Suncat2000 11.10.2017, 22:17
  • 3
    What' s -qq для? Это, кажется, работает тождественно без него, и та опция isn' t в руководстве man apt – ncubica 08.03.2018, 02:09
  • 4
    @GabrielStaples Это похоже apt list команда isn' t все же полностью зарегистрированный. Некоторое быстрое тестирование на 16,04, кажется, указывает, что -q синоним для --quiet опция. Первое -q предотвращает слово " Done" быть распечатанным. Второе также предотвращает " Список... " от того, чтобы быть распечатанным. – user47206 03.04.2018, 14:39

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

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

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

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

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

14
ответ дан 08.10.2019, 14:09
  • 1
    каналы в ansible могут использоваться с shell модуль. – marc_s 27.08.2017, 12:51

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

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

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

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

3
ответ дан 08.10.2019, 14:09
  • 1
    благодарит говорить мне название задачи, которая была одной из моих проблем, wasn' t уверенный, который пакет искать. – Trufa 21.02.2014, 00:11

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

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

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

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


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

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

tasksel --list-tasks

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

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

В вашем случае это имя задачи 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 для получения дополнительной информации. [1 151]

4
ответ дан 08.10.2019, 14:09
  • 1
    На оба вопроса отвечают правильно. Если Вы downvote, приведите причину или скажите мне, почему они не. – SqlACID 23.10.2016, 17:54

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

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

apt list <package>

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

2
ответ дан 08.10.2019, 14:09

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

#!/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

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

2
ответ дан 08.10.2019, 14:09

Теги

Похожие вопросы