Как узнать, установлен ли конкретный пакет в ubuntu? [дубликат]

Я установил пакет JDK на свой Ubuntu 14.04 несколько месяцев назад, но я не знаю, как чтобы проверить, какая это версия.

Итак, как мне узнать, установлен ли пакет в Ubuntu и какая его версия установлена?

20
задан 5 February 2017 в 09:54

4 ответа

В терминале, выполненном dpkg -l | grep <name or pattern>. Например,

dpkg -l | grep firefox
ii  firefox       51.0.1+build2-0ubuntu0.14.04.2                      amd64 

ii вещь означает, что установлена. Очевидно, если нет никакого вывода, пакет не установлен.

9
ответ дан 23 November 2019 в 01:48

Если Вы знаете имя пакета, используйте apt-cache политика:

$ apt-cache policy firefox | grep 'Installed:'                                                                           
  Installed: 51.0.1+build2-0ubuntu0.16.04.1
$ apt-cache policy golang | grep 'Installed:'                                                                            
  Installed: (none)

, Если Вы не делаете, используйте dpkg --get-selections | grep 'jdk'

$ dpkg --get-selections | grep 'jdk'
jdk1.8.0-111                    deinstall
openjdk-7-jre-headless:amd64            deinstall
openjdk-8-jdk:amd64             install
openjdk-8-jdk-headless:amd64            install
openjdk-8-jre:amd64             install
openjdk-8-jre-headless:amd64            install
openjdk-9-jre-headless:amd64            deinstall
8
ответ дан 23 November 2019 в 01:48

TL; DR: Для простой команды (нет | grep) с компактным выводом можно использовать

  • apt list package, который обычно является, что Вы хотите (сравните с apt-cache policy package), или
  • dpkg-query -W package как менее нарушенная версия dpkg -l package.

apt команда (для apt list package) доступно в Ubuntu 14.04 и позже.

apt list говорит Вам, если Ваш пакет установлен.

apt list package показывает версию пакета, который является или был бы установлен, наряду с названиями компонентов репозитория, которые обеспечивают ее и версия. Когда пакет установлен, [installed] появляется заметно в конце строки.

ek@Io:~$ apt list firefox
Listing... Done
firefox/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it

В дополнение к [installed] в конце, now в списке компонентов репозитория указывает, что пакет в настоящее время устанавливается. Это что apt listвывод похож для пакета, который не установлен:

ek@Io:~$ apt list dolphin
Listing... Done
dolphin/xenial 4:15.12.3-0ubuntu1 amd64

Иногда Вы будете видеть [installed,automatic], что означает, что пакет был установлен как зависимость некоторого другого пакета. Так как это было автоматически а не вручную установлено, это может быть удалено после того, как все пакеты, которые зависят от него, удалены (который является что apt autoremove команда делает).

ek@Io:~$ apt list zeitgeist-core
Listing... Done
zeitgeist-core/xenial,now 0.9.16-0ubuntu4 amd64 [installed,automatic]

Можно использовать apt list --installed показать только установленные пакеты.

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

ek@Io:~$ apt list firefoz
Listing... Done

Но если Вы действительно предпочитаете, чтобы ничто не появлялось, если у Вас нет пакета, использовать apt list --installed package:

ek@Io:~$ apt list --installed firefox dolphin
Listing... Done
firefox/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it

Globbing помогает Вам перечислить пакеты, имена которых Вы не знаете или хотите ввести.

Как Вы только что видели, можно передать несколько имен пакета к apt list. Другая вещь, которую можно сделать, передать его шарик, где a * представляет нуль или больше символов и ? представляет один символ. Существует несколько вещей иметь в виду:

  • Ваша оболочка также разворачивает шарики в имена файлов, но это не то, что Вы хотите произойти здесь, таким образом, необходимо всегда заключать им в кавычки' ' или " ", или с \) когда Вы передаете их apt list.
  • Хотя и шарики и регулярные выражения оба класса символов поддержки (например, [csz]sh соответствия csh, ssh zsh), они не то же и * и ? средние разные вещи в шарике, чем в регулярном выражении. Это важно, потому что некоторые другие команды раньше получали информацию о пакетах, такой как apt-cache policy package, используйте регулярные выражения, а не шарики. Необходимо проверить, использует ли команда шарики или регулярные выражения перед доверием любой функции.
  • Когда Вы на самом деле добавляете и удаляете пакеты, Вы не должны путать шарики с регулярными выражениями. apt list 'wine*' списки все пакеты, имена которых запускаются с wine, но apt remove 'wine*' удаляет все пакеты с win (даже без e) где угодно на их имя!

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

ek@Io:~$ apt list '*soap*cil'
Listing... Done
libmono-system-runtime-serialization-formatters-soap4.0-cil/xenial,xenial,now 4.2.1.102+dfsg2-7ubuntu4 all [installed,automatic]

Globbing также удобен, когда Вы действительно знаете полное имя пакета, Вы интересуетесь, но не хотите вводить его. Или когда Вы интересуетесь несколькими пакетами, которые соответствуют шарику:

ek@Io:~$ apt list 'firefox-locale-*'
Listing... Done
firefox-locale-af/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-an/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ar/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-as/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ast/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-az/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-be/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-bg/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-bn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-br/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-bs/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ca/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-cak/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-cs/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-csb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-cy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-da/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-de/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-el/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-en/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
firefox-locale-eo/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-es/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-et/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-eu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fa/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ga/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gd/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-he/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hsb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-id/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-is/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-it/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ja/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ka/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-kab/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-kk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-km/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-kn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ko/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ku/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-lg/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-lt/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-lv/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mai/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ml/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ms/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nso/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-oc/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-or/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-pa/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-pl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-pt/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ro/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ru/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-si/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sq/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sv/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sw/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ta/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-te/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-th/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-tr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-uk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-uz/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-vi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-xh/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-zh-hans/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-zh-hant/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-zu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64

Это - много пакетов. (Хотя не как многие, как будто я работал apt list '*', который перечисляет все доступные пакеты!), К счастью, шарики работают с --installed также:

ek@Io:~$ apt list --installed 'firefox-locale-*'
Listing... Done
firefox-locale-en/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it

apt list по сравнению с. dpkg-query -W

Другая команда, которую можно использовать, dpkg-query -W package. Это подобно dpkg -l, но его вывод более оптимизирован и читаем, потому что только имя пакета и установленная версия (если таковые имеются) печатаются.

dpkg-query -W списки все пакеты dpkg знает о том соответствии имя или шаблон шарика, который Вы даете ему. Это включает пакеты, которые установлены и также пакеты, которые не установлены, но которые упомянуты другим пакетом. Можно сказать, какие пакеты на самом деле установлены, потому что число/строка установленной версии печатается направо от имени. Например, в моих 16,04 системах:

ek@Io:~$ dpkg-query -W wine-\*
wine-amd64
wine-gecko
wine-gecko2.21:amd64    2.21-0ubuntu1
wine-gecko2.21:i386     2.21-0ubuntu1
wine-i386
wine-mono
wine-mono0.0.8  0.0.8-0ubuntu1

Таким образом, перечисленных пакетов, wine-gecko2.21:amd64 и wine-gecko2.21:i386 (т.е. wine-gecko2.21 для обоих amd64 и i386 архитектура) и wine-mono0.0.8 те, что я в настоящее время устанавливал.

dpkg-query -W и apt list будет оба всегда знать об установленных пакетах, предоставляет ли им какой-либо в настоящее время настраиваемый источник программного обеспечения и упомянуты ли они другими пакетами. Однако:

  • apt list также знает о пакетах, доступных из любого в настоящее время настраиваемого источника программного обеспечения, но не делает знает о недоступных пакетах, упомянутых другими пакетами.
  • dpkg-query -W (как dpkg -l) непосредственно не отражает, какие пакеты на самом деле доступны, но действительно знает о пакетах, упомянутых любым пакетом, который установлен.

На той же машине:

ek@Io:~$ apt list wine-\*
Listing... Done
wine-development/xenial,xenial 1.9.6-1 all
wine-gecko2.21/xenial,now 2.21-0ubuntu1 amd64 [installed,automatic]
wine-mono0.0.8/xenial,xenial,now 0.0.8-0ubuntu1 all [installed,automatic]

Как с dpkg -l, когда Вы работаете dpkg-query -W с названием пакета Вы не имеете (например, я не имею chocolate-doom установленный), вывод совпадает с при выполнении его с названием пакета, который не существует вообще (например, из-за орфографической ошибки, как firefoz):

ek@Io:~$ dpkg-query -W chocolate-doom firefoz
dpkg-query: no packages found matching chocolate-doom
dpkg-query: no packages found matching firefoz

Напротив, apt list шоу явно это только chocolate-doom существует (но не установлен):

ek@Io:~$ apt list chocolate-doom firefoz
Listing... Done
chocolate-doom/xenial 2.2.1-2.1 amd64
22
ответ дан 23 November 2019 в 01:48

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

>dpkg -s /package name/  

Используйте файл/var/lib/dpkg/available, чтобы узнать, что весь пакет называет доступным Вам.

Или можно использовать следующую команду (Она перечисляет все пакеты в/var/lib/dpkg/status):

>dpkg-query -l  

Можно также попытаться соответствовать имени пакета с помощью подстановочных знаков:

>dpkg-query -l 'libc6*'
4
ответ дан 23 November 2019 в 01:48

Другие вопросы по тегам:

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