На этот вопрос уже есть ответ:
Я установил пакет JDK на свой Ubuntu 14.04 несколько месяцев назад, но я не знаю, как чтобы проверить, какая это версия.
Итак, как мне узнать, установлен ли пакет в Ubuntu и какая его версия установлена?
В терминале, выполненном dpkg -l | grep <name or pattern>
. Например,
dpkg -l | grep firefox
ii firefox 51.0.1+build2-0ubuntu0.14.04.2 amd64
ii
вещь означает, что установлена. Очевидно, если нет никакого вывода, пакет не установлен.
Если Вы знаете имя пакета, используйте 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
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
Как Вы только что видели, можно передать несколько имен пакета к 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
Используйте команду dpkg, которая является диспетчером пакетов для Debian.
>dpkg -s /package name/
Используйте файл/var/lib/dpkg/available, чтобы узнать, что весь пакет называет доступным Вам.
Или можно использовать следующую команду (Она перечисляет все пакеты в/var/lib/dpkg/status):
>dpkg-query -l
Можно также попытаться соответствовать имени пакета с помощью подстановочных знаков:
>dpkg-query -l 'libc6*'