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

Можно разрешить весь из zypper family command Вашему пользователю в /etc/sudoers file.

9
10.05.2019, 00:38
7 ответов

apt-cache showpkg показывает подробную информацию о потенциально устанавливаемых пакетах. Он показывает, установлен ли пакет, но не очень читабельно:

Versions:
2:3.6.6-6+deb7u5 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages)

Если пакет был установлен, вы увидите (/ var / lib / dpkg / status) в конец строки. Однако это не совсем надежно, потому что вы также увидите это указание, если бы пакет был известен вашей системе, но не был полностью установлен, например если он был в состоянии «пакет удален, но файлы конфигурации остались».

Более полезной подкомандой apt-cache является политика apt-cache . Он четко показывает установленную версию (если есть) и доступные версии. Например, вот вывод с машины, на которой установлена ​​ samba , но не samba-dev :

samba:
  Installed: 2:4.1.17+dfsg-2
  Candidate: 2:4.1.17+dfsg-2
  Version table:
 *** 2:4.1.17+dfsg-2 0
        500 http://ftp.fr.debian.org/debian/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status
samba-dev:
  Installed: (none)
  Candidate: 2:4.1.17+dfsg-2
  Version table:
     2:4.1.17+dfsg-2 0
        500 http://ftp.fr.debian.org/debian/ jessie/main amd64 Packages

В качестве альтернативы вы можете использовать команду dpkg для получения информации о вашей нынешней системе. APT - это программное обеспечение, которое управляет загрузкой пакетов, анализом зависимостей и т. Д. Dpkg - это программное обеспечение низкого уровня, которое выполняет фактическую установку файла пакета.

dpkg -l samba

Здесь показана строка, начинающаяся с i , если пакет установлен, и строка, начинающаяся с u или p , или вообще ничего, если пакет не установлено.

$ dpkg -l samba samba-dev
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
+++-==============-============-============-=================================
ii  samba          2:4.1.17+dfs amd64        SMB/CIFS file, print, and login s
dpkg-query: no packages found matching samba-dev

( dpkg-query - это подкоманда dpkg , которая возвращает информацию о базе данных пакета.)

Обратите внимание, что если вы просто хотите убедиться, что пакет установлен, вы можете просто запустить

apt-get install samba

Это ничего не сделает, если последняя версия пакета, доступная в вашем дистрибутиве, уже установлена. Он установит пакет, если он еще не установлен, и обновит его, если у вас более старая версия.

10
27.01.2020, 20:05
dpkg -l | grep -e package1 -e package2 ....

В списке будут перечислены интересующие вас пакеты с их текущим статусом установки. Результат будет примерно таким:

bala@bala-laptop:~$ dpkg -l | grep apache2
ii  apache2                                2.4.10-10                            amd64        Apache HTTP Server

Первые 2 символа обозначают статус - ii здесь означает Первый i - отмечен для установки Второй i - успешно установлен

Есть другие коды состояния например, r означает пометку для удаления, p означает пометку для очистки и т. д.

5
27.01.2020, 20:05

dpkg -l $ PACKAGENAME

достаточно. Первые два символа в строке покажут статус пакета

1
27.01.2020, 20:05
aptitude show foo

покажет статус пакета

root@srv:# aptitude show python-jmespath
Package: python-jmespath
Version: 0.9.0-2
State: not installed
Priority: optional
Section: python
Maintainer: Debian Python Modules Team python-modules-team@lists.alioth.debian.org
Architecture: all
Uncompressed Size: 97.3 k
Depends: python (>= 2.7)
Description: JSON Matching Expressions (Python 2)
 JMESPath is python library which allows you to declaratively specify how to extract elements from a JSON document.

 This package contains the module for Python 2.
Homepage: https://github.com/boto/jmespath


root@cx-ops02:#
1
27.01.2020, 20:05

Надеюсь, вы сможете решить эту проблему.

  • dpkg --helpдля справки об установке и удалении пакетов [ *];

  • используйте aptили aptitudeдля удобного для пользователя -управления пакетами;

  • введите dpkg -Dhelpдля списка dpkgзначений флага отладки;
  • введите dpkg --force-helpдля списка параметров форсирования;
  • введите dpkg-deb --helpдля помощи в работе с *.debфайлами;

Опции, помеченные [ *] производят много вывода -направляют его через lessили more!

-1
17.02.2020, 09:33

Несколько более простой вариант dpkg -l | grep ...IMO:

dpkg-query -W -f='${Status}' pkg | grep -q " installed"

Возвратит 0 (успех )если установлено pkg.

0
30.09.2021, 07:49
grep-status 'package'

Он не предустановлен в дистрибутивах на основе Debian. Его можно установить через:

sudo apt install dctrl-tools

Вот пример:

$ grep-status dctrl-tools

Package: dctrl-tools
Status: install ok installed
Priority: optional
Section: utils
Installed-Size: 296
...

grep -справочные страницы состояния

0
30.09.2021, 08:11

Теги

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