Как проверить, установлен ли пакет (нет привилегий суперпользователя)?

Я использую Nitro для своих заметок, вы можете найти его в Центре программного обеспечения Ubuntu. Установите его для синхронизации через Ubuntu One или Dropbox, это легко и отлично работает. Когда я нахожусь в окнах (работа и т. Д.), Я использую его в портативном Chrome / Chromium из интернет-магазина, а затем настраиваю свою синхронизацию, и мне хорошо идти. Для ваших устройств Android вы можете установить NitroDroid из Play-магазина. Он отлично работает, и теперь у меня есть свои заметки со мной, где бы я ни был. Это легко и безболезненно, я настоятельно рекомендую вам попробовать Nitro на всех трех платформах, он отлично работает.

1
задан 2 April 2014 в 16:14

5 ответов

Я всегда использую это из командной строки:

dpkg -l | grep mysql

, поэтому выше сказано, что dpkg перечисляет все установленные пакеты, а затем я grep только для тех, у которых есть mysql в имени.

18
ответ дан 29 May 2018 в 12:37
  • 1
    dpkg -l "*mysql*" также работает и не скрывает пояснительные строки на выходе. – Philipp Wendler 9 August 2012 в 20:37
  • 2
    dpkg -l "*mysql*" (или dpkg -l '*mysql*') также делает специальное форматирование вывода для каждого пакета в одной строке окна терминала (grep не делает). И эта форма позволяет вам выбирать формат подстановочных знаков (префиксы или суффиксы) и использовать ли подстановочные знаки вообще (по сравнению с grep). Но grep дает красивую окраску ..)) – vstepaniuk 22 February 2018 в 20:07

Еще один вариант, используя aptitude на этот раз:

aptitude show <package>

Здесь также работает вкладка

7
ответ дан 29 May 2018 в 12:37

Вы можете использовать select. Он предоставляет доступ только для чтения.

Кроме того, dpkg -s предоставляет множество подробностей, связанных с пакетом. Например: «

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games
5
ответ дан 29 May 2018 в 12:37
  • 1
    Это также доступно как dpkg -s. И наоборот, dpkg-query -l работает так же хорошо, как dpkg -l или dpkg --list – belacqua 9 February 2011 в 12:35

Вы можете использовать dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ в сценариях, так как он возвращает код выхода 1, если <package> не установлен, а 0, если установлен <package>.

4
ответ дан 29 May 2018 в 12:37
  • 1
    Будьте внимательны : Если dpkg -s возвращает 0, это не обязательно означает, что пакет установлен полностью / правильно . dpkg -s также возвращает 0, если пакет находится в half-configured или в config-files состоянии (и я думаю, что и в half-installed, но я этого не проверял). См. [Справочную страницу dpkg ( manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html ) для дальнейшего «неполного». состояния. – Ignitor 17 January 2014 в 21:13
  • 2
    @ Игнитор, хорошая точка. Мой ответ был неправильным. Пакет можно даже удалить, но не очистить. Поэтому я думаю, что вам нужно проверить результат проверки, если пакет установлен или нет. – jarno 7 February 2014 в 03:48
  • 3
    Я отредактировал ответ. Теперь он полагается на вывод dpkg-запроса. Я не знаю, насколько переносимо это решение; например, может ли текст отображаться на другом языке в какой-либо системе? – jarno 7 February 2014 в 04:09

Пример использования определенного значения как var в сценариях оболочки (например, test.sh)

#!/bin/sh
PACKAGETOLOOKFOR="${1}"
INSTALLED=$(dpkg -l | grep ${PACKAGETOLOOKFOR} >/dev/null && echo "yes" || echo "no")

echo "${1} is installed ... ${INSTALLED}"

Сделайте его исполняемым и начните с:

test.sh openssh-server

Или сделайте все вы хотите использовать в своих сценариях

0
ответ дан 29 May 2018 в 12:37

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

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