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

В нашем университете мы можем установить практически любой пакет ubuntu, какой захотим, но мы сами не являемся суперпользователями (нам нужно запросить установку пакетов).

С некоторыми библиотеками не всегда легко узнать, установлен ли пакет или нет. Есть ли простой способ / команда, чтобы проверить это?

56
задан 2 April 2014 в 15:14

9 ответов

apt-cache policy <package name>
0
ответ дан 2 April 2014 в 15:14

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

dpkg -l | grep mysql

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

0
ответ дан 2 April 2014 в 15:14

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

aptitude show <package>

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

0
ответ дан 2 April 2014 в 15:14

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

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

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games
0
ответ дан 2 April 2014 в 15:14

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

0
ответ дан 2 April 2014 в 15:14

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

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

apt list <package>

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

0
ответ дан 2 April 2014 в 15:14

Пример использования определенного значения как 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
ответ дан 2 April 2014 в 15:14

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
ответ дан 2 April 2014 в 15:14

Необходимо проверить состояние, распечатанное dpkg -l, пример:

$ dpkg -l firefox-esr vim winff
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                 Version                 Architecture            Description
+++-====================================-=======================-=======================-=============================================================================
hi  firefox-esr                          52.9.0esr+build2-0ubunt amd64                   Safe and easy web browser from Mozilla
ii  vim                                  2:8.1.1198-0york0~14.04 amd64                   Vi IMproved - enhanced vi editor
rc  winff                                1.5.3-3                 all                     graphical video and audio batch converter using ffmpeg or avconv

Здесь и vim и firefox-esr установлены, поэтому можно ввести:

$ dpkg -l firefox-esr | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l vim | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l winff | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is NOT installed.
0
ответ дан 5 September 2019 в 09:59

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

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