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

Ознакомьтесь с официальной Ubuntu Touch wiki . Ссылка, которую вы ищете, - это ссылка на вики, в которой написано Примите участие! .

56
задан 18.05.2020, 17:29

7 ответов

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

Кроме того, dpkg -s <package name> предоставляет много деталей, связанных с пакетом. Например, "

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games
6
ответ дан 18.05.2020, 17:30
  • 1
    Это также доступно как просто dpkg -s. И наоборот, dpkg-query -l работает так же хорошо, как dpkg -l или dpkg --list – Serj Sagan 18.05.2020, 17:30

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

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

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

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

test.sh openssh-server

Или делайте что хотите с в ваших сценариях

0
ответ дан 18.05.2020, 17:30

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

4
ответ дан 18.05.2020, 17:31
  • 1
    Я отредактировал ответ. Теперь он опирается на вывод dpkg-запроса. Я не знаю, насколько портативно это решение; например, может ли текст отображаться на другом языке в какой-либо системе? – Patrick Honorez 18.05.2020, 17:31
  • 2
    Будьте осторожны : Если dpkg -s возвращает 0, это не обязательно означает, что пакет установлен полностью / правильно . dpkg -s также возвращает 0, если пакет находится в состоянии half-configured или в config-files (и я полагаю также в half-installed, но я не проверял это). См. [Man-страницу dpkg ( manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html ) для получения дополнительной информации «не полностью». состояния. – VMAtm 18.05.2020, 17:31
  • 3
    @ Игнитор, хорошая мысль. Мой ответ был неверным. Пакет может быть даже удален, но не очищен. Поэтому я думаю, что вы должны изучить вывод, чтобы проверить, установлен ли пакет или нет. – Community 18.05.2020, 17:32

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

aptitude show <package>

Завершение Tab также работает здесь.

7
ответ дан 18.05.2020, 17:31

dpkg -s программное использование

Мне нравится dpkg -s, так как он выходит со статусом 1, если какой-либо из пакетов не установлен, облегчая его автоматизацию:

pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
  sudo apt-get install $pkgs
fi

См. Также:

Протестировано в Ubuntu 18.10.

0
ответ дан 18.05.2020, 17:32

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

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

apt list <package>

См. man apt для получения дополнительной информации.

2
ответ дан 18.05.2020, 17:33
  • 1
    И apt show для более подробной информации – Mac vd Wsthuizen 18.05.2020, 17:33

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

dpkg -l | grep mysql

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

18
ответ дан 18.05.2020, 17:33
  • 1
    dpkg -l "*mysql*" также работает и не скрывает поясняющие строки в выводе. – FocusWiz 18.05.2020, 17:34
  • 2
    dpkg -l "*mysql*" (или dpkg -l '*mysql*') также производит специальное форматирование вывода, чтобы соответствовать каждому пакету в одной строке окна терминала (grep не делает). И эта форма позволяет вам выбрать формат подстановочного знака (префиксы или суффиксы), и использовать ли вообще подстановочные знаки (по сравнению с grep). Но grep дает приятную окраску ..)) – Wahed 18.05.2020, 17:34

Теги

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